示例#1
0
        private static void MultiTableBatchWrite()
        {
            // 1. Specify item to add in the Forum table.
            Table forum = Table.LoadTable(client, "Forum");
            var forumBatchWrite = forum.CreateBatchWrite();

            var forum1 = new Document();
            forum1["Name"] = "Test BatchWrite Forum";
            forum1["Threads"] = 0;
            forumBatchWrite.AddDocumentToPut(forum1);


            // 2a. Specify item to add in the Thread table.
            Table thread = Table.LoadTable(client, "Thread");
            var threadBatchWrite = thread.CreateBatchWrite();

            var thread1 = new Document();
            thread1["ForumName"] = "S3 forum";
            thread1["Subject"] = "My sample question";
            thread1["Message"] = "Message text";
            thread1["KeywordTags"] = new List<string> { "S3", "Bucket" };
            threadBatchWrite.AddDocumentToPut(thread1);

            // 2b. Specify item to delete from the Thread table.
            threadBatchWrite.AddKeyToDelete("someForumName", "someSubject");

            // 3. Create multi-table batch.
            var superBatch = new MultiTableDocumentBatchWrite();
            superBatch.AddBatch(forumBatchWrite);
            superBatch.AddBatch(threadBatchWrite);
            Console.WriteLine("Performing batch write in MultiTableBatchWrite()");
            superBatch.Execute();
        }
示例#2
0
        internal void ExecuteHelper(bool isAsync)
        {
            MultiTableDocumentBatchWrite superBatch = new MultiTableDocumentBatchWrite();

            foreach (var batch in allBatches)
            {
                superBatch.AddBatch(batch.DocumentBatch);
            }
            superBatch.ExecuteHelper(isAsync);
        }
示例#3
0
        internal Task ExecuteHelperAsync(CancellationToken cancellationToken)
        {
            MultiTableDocumentBatchWrite superBatch = new MultiTableDocumentBatchWrite();

            foreach (var batch in allBatches)
            {
                superBatch.AddBatch(batch.DocumentBatch);
            }
            return(superBatch.ExecuteHelperAsync(cancellationToken));
        }
示例#4
0
    private void MultiTableBatchWrite()
    {
        this.displayMessage = ("\n*** MultiTableBatchWrite() ***");
        ThreadPool.QueueUserWorkItem((s) =>
        {
            this.displayMessage += ("\n running in background thread");
            try
            {
                var batchWrite = productCatalog.CreateBatchWrite();

                var book1                = new Document();
                book1["Id"]              = 9111;
                book1["Title"]           = "My 222book1 in batch write using .NET helper classes";
                book1["ISBN"]            = "902-11-11-1111";
                book1["Price"]           = 10;
                book1["ProductCategory"] = "Book";
                book1["Authors"]         = new List <string> {
                    "Author 1", "Author 2", "Author 3"
                };
                book1["Dimensions"]     = "8.5x11x.5";
                book1["InStock"]        = true;
                book1["QuantityOnHand"] = null; //Quantity is unknown at this time
                batchWrite.AddDocumentToPut(book1);
                // 1. Specify item to add in the Forum table.
                Table reply = Table.LoadTable(client, "Reply");

                var replyBatchWrite = reply.CreateBatchWrite();

                // Reply 1 - thread 1.
                var thread1Reply1              = new Document();
                thread1Reply1["Id"]            = "Amazon DynamoDB#DynamoDB Thread 1";                 // Hash attribute.
                thread1Reply1["ReplyDateTime"] = DateTime.UtcNow.Subtract(new TimeSpan(21, 0, 0, 0)); // Range attribute.
                thread1Reply1["Message"]       = "DynamoDB Thread 1 Reply 1 text";
                thread1Reply1["PostedBy"]      = "User A";
                thread1Reply1["Votes"]         = -2;
                replyBatchWrite.AddDocumentToPut(thread1Reply1);


                // 3. Create multi-table batch.
                var superBatch = new MultiTableDocumentBatchWrite();
                superBatch.AddBatch(replyBatchWrite);
                superBatch.AddBatch(batchWrite);
                this.displayMessage += ("\nPerforming batch write in MultiTableBatchWrite()");
                superBatch.Execute();
                this.displayMessage += "\nCompleted!";
            }
            catch (Exception ex)
            {
                this.displayMessage += ex.Message;
                Debug.LogException(ex);
            }
        });
    }
        /// <summary>
        /// Perform a batch operation involving multiple DynamoDB tables.
        /// </summary>
        /// <param name="client">An initialized DynamoDB client object.</param>
        public static async Task MultiTableBatchWrite(IAmazonDynamoDB client)
        {
            // Specify item to add in the Forum table.
            Table forum           = Table.LoadTable(client, "Forum");
            var   forumBatchWrite = forum.CreateBatchWrite();

            var forum1 = new Document
            {
                ["Name"]    = "Test BatchWrite Forum",
                ["Threads"] = 0,
            };

            forumBatchWrite.AddDocumentToPut(forum1);

            // Specify item to add in the Thread table.
            Table thread           = Table.LoadTable(client, "Thread");
            var   threadBatchWrite = thread.CreateBatchWrite();

            var thread1 = new Document
            {
                ["ForumName"]   = "S3 forum",
                ["Subject"]     = "My sample question",
                ["Message"]     = "Message text",
                ["KeywordTags"] = new List <string> {
                    "S3", "Bucket"
                },
            };

            threadBatchWrite.AddDocumentToPut(thread1);

            // Specify item to delete from the Thread table.
            threadBatchWrite.AddKeyToDelete("someForumName", "someSubject");

            // Create multi-table batch.
            var superBatch = new MultiTableDocumentBatchWrite();

            superBatch.AddBatch(forumBatchWrite);
            superBatch.AddBatch(threadBatchWrite);
            Console.WriteLine("Performing batch write in MultiTableBatchWrite()");

            // Execute the batch.
            await superBatch.ExecuteAsync();
        }
示例#6
0
 internal void ExecuteHelper(bool isAsync)
 {
     MultiTableDocumentBatchWrite superBatch = new MultiTableDocumentBatchWrite();
     foreach (var batch in allBatches)
     {
         superBatch.AddBatch(batch.DocumentBatch);
     }
     superBatch.ExecuteHelper(isAsync);
 }
示例#7
0
        private void TestMultiTableDocumentBatchWrite(Table hashTable, Table hashRangeTable)
        {
            var multiTableDocumentBatchWrite = new MultiTableDocumentBatchWrite();

            var doc1a = new Document();

            doc1a["Id"]   = 5101;
            doc1a["Data"] = Guid.NewGuid().ToString();
            var doc1b = new Document();

            doc1b["Id"]   = 5102;
            doc1b["Data"] = Guid.NewGuid().ToString();
            {
                var writer = new DocumentBatchWrite(hashTable);
                writer.AddDocumentToPut(doc1a);
                writer.AddDocumentToPut(doc1b);
                multiTableDocumentBatchWrite.AddBatch(writer);
            }

            var doc2a = new Document();

            doc2a["Id"]   = 5201;
            doc2a["Data"] = Guid.NewGuid().ToString();
            var doc2b = new Document();

            doc2b["Id"]   = 5202;
            doc2b["Data"] = Guid.NewGuid().ToString();
            {
                var writer = new DocumentBatchWrite(hashTable);
                writer.AddDocumentToPut(doc2a);
                writer.AddDocumentToPut(doc2b);
                multiTableDocumentBatchWrite.AddBatch(writer);
            }

            var doc3a = new Document();

            doc3a["Name"] = "Gunnar";
            doc3a["Age"]  = 77;
            doc3a["Job"]  = "Retired";
            doc3a["Data"] = Guid.NewGuid().ToString();
            {
                var writer = new DocumentBatchWrite(hashRangeTable);
                writer.AddDocumentToPut(doc3a);
                multiTableDocumentBatchWrite.AddBatch(writer);
            }


            multiTableDocumentBatchWrite.Execute();

            Document getDoc;

            getDoc = hashTable.GetItem(5101);
            Assert.AreEqual(doc1a["Data"].AsString(), getDoc["Data"].AsString());

            getDoc = hashTable.GetItem(5102);
            Assert.AreEqual(doc1b["Data"].AsString(), getDoc["Data"].AsString());

            getDoc = hashTable.GetItem(5201);
            Assert.AreEqual(doc2a["Data"].AsString(), getDoc["Data"].AsString());

            getDoc = hashTable.GetItem(5202);
            Assert.AreEqual(doc2b["Data"].AsString(), getDoc["Data"].AsString());

            getDoc = hashRangeTable.GetItem("Gunnar", 77);
            Assert.AreEqual(doc3a["Data"].AsString(), getDoc["Data"].AsString());

            multiTableDocumentBatchWrite = new MultiTableDocumentBatchWrite();
            {
                var deleteWriter = new DocumentBatchWrite(hashTable);
                deleteWriter.AddItemToDelete(doc1a);
                deleteWriter.AddItemToDelete(doc1b);
                deleteWriter.AddItemToDelete(doc2a);
                deleteWriter.AddItemToDelete(doc2b);
                multiTableDocumentBatchWrite.AddBatch(deleteWriter);
            }
            {
                var deleteWriter = new DocumentBatchWrite(hashRangeTable);
                deleteWriter.AddItemToDelete(doc3a);
                multiTableDocumentBatchWrite.AddBatch(deleteWriter);
            }
            multiTableDocumentBatchWrite.Execute();
        }