/* * Copyright 2010-2014 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. * A copy of the License is located at * * http://aws.amazon.com/apache2.0 * * or in the "license" file accompanying this file. This file is distributed * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ /* * Do not modify this file. This file is generated from the dynamodb-2012-08-10.normal.json service model. */ using System; using System.Collections.Generic; using System.Xml.Serialization; using System.Text; using System.IO; using Amazon.Runtime; using Amazon.Runtime.Internal; namespace Amazon.DynamoDBv2.Model { /// /// Container for the parameters to the BatchWriteItem operation. /// The BatchWriteItem operation puts or deletes multiple items in one or /// more tables. A single call to BatchWriteItem can write up to 16 MB of /// data, which can comprise as many as 25 put or delete requests. Individual items to /// be written can be as large as 400 KB. /// /// /// /// BatchWriteItem cannot update items. To update items, use the UpdateItem /// action. /// /// /// /// The individual PutItem and DeleteItem operations specified /// in BatchWriteItem are atomic; however BatchWriteItem as /// a whole is not. If any requested operations fail because the table's provisioned throughput /// is exceeded or an internal processing failure occurs, the failed operations are returned /// in the UnprocessedItems response parameter. You can investigate and optionally /// resend the requests. Typically, you would call BatchWriteItem in a loop. /// Each iteration would check for unprocessed items and submit a new BatchWriteItem /// request with those unprocessed items until all items have been processed. /// /// /// /// If none of the items can be processed due to insufficient provisioned throughput /// on all of the tables in the request, then BatchWriteItem returns a ProvisionedThroughputExceededException. /// /// /// /// If DynamoDB returns any unprocessed items, you should retry the batch operation on /// those items. However, we strongly recommend that you use an exponential backoff /// algorithm. If you retry the batch operation immediately, the underlying read or /// write requests can still fail due to throttling on the individual tables. If you delay /// the batch operation using exponential backoff, the individual requests in the batch /// are much more likely to succeed. /// /// /// /// For more information, see Batch /// Operations and Error Handling in the Amazon DynamoDB Developer Guide. /// /// /// /// With BatchWriteItem, you can efficiently write or delete large amounts /// of data, such as from Amazon EMR, or copy data from another database into DynamoDB. /// In order to improve performance with these large-scale operations, BatchWriteItem /// does not behave in the same way as individual PutItem and DeleteItem /// calls would. For example, you cannot specify conditions on individual put and delete /// requests, and BatchWriteItem does not return deleted items in the response. /// /// /// /// If you use a programming language that supports concurrency, you can use threads to /// write items in parallel. Your application must include the necessary logic to manage /// the threads. With languages that don't support threading, you must update or delete /// the specified items one at a time. In both situations, BatchWriteItem /// performs the specified put and delete operations in parallel, giving you the power /// of the thread pool approach without having to introduce complexity into your application. /// /// /// /// Parallel processing reduces latency, but each specified put and delete request consumes /// the same number of write capacity units whether it is processed in parallel or not. /// Delete operations on nonexistent items consume one write capacity unit. /// /// /// /// If one or more of the following is true, DynamoDB rejects the entire batch write operation: /// /// /// public partial class BatchWriteItemRequest : AmazonDynamoDBRequest { private Dictionary> _requestItems = new Dictionary>(); private ReturnConsumedCapacity _returnConsumedCapacity; private ReturnItemCollectionMetrics _returnItemCollectionMetrics; /// /// Empty constructor used to set properties independently even when a simple constructor is available /// public BatchWriteItemRequest() { } /// /// Instantiates BatchWriteItemRequest with the parameterized properties /// /// A map of one or more table names and, for each table, a list of operations to be performed (DeleteRequest or PutRequest). Each element in the map consists of the following: public BatchWriteItemRequest(Dictionary> requestItems) { _requestItems = requestItems; } /// /// Gets and sets the property RequestItems. /// /// A map of one or more table names and, for each table, a list of operations to be performed /// (DeleteRequest or PutRequest). Each element in the map consists /// of the following: /// ///
  • /// /// DeleteRequest - Perform a DeleteItem operation on the specified /// item. The item to be deleted is identified by a Key subelement: /// ///
    • /// /// Key - A map of primary key attribute values that uniquely identify the /// item. Each entry in this map consists of an attribute name and an attribute value. /// For each primary key, you must provide all of the key attributes. For example, /// with a simple primary key, you only need to provide a value for the partition key. /// For a composite primary key, you must provide values for both the partition /// key and the sort key. /// ///
  • /// /// PutRequest - Perform a PutItem operation on the specified /// item. The item to be put is identified by an Item subelement: /// ///
    • /// /// Item - A map of attributes and their values. Each entry in this map /// consists of an attribute name and an attribute value. Attribute values must not be /// null; string and binary type attributes must have lengths greater than zero; and set /// type attributes must not be empty. Requests that contain empty values are rejected /// with a ValidationException exception. /// /// /// /// If you specify any attributes that are part of an index key, then the data types for /// those attributes must match those of the schema in the table's attribute definition. /// ///
///
[AWSProperty(Required=true, Min=1, Max=25)] public Dictionary> RequestItems { get { return this._requestItems; } set { this._requestItems = value; } } // Check to see if RequestItems property is set internal bool IsSetRequestItems() { return this._requestItems != null && this._requestItems.Count > 0; } /// /// Gets and sets the property ReturnConsumedCapacity. /// public ReturnConsumedCapacity ReturnConsumedCapacity { get { return this._returnConsumedCapacity; } set { this._returnConsumedCapacity = value; } } // Check to see if ReturnConsumedCapacity property is set internal bool IsSetReturnConsumedCapacity() { return this._returnConsumedCapacity != null; } /// /// Gets and sets the property ReturnItemCollectionMetrics. /// /// Determines whether item collection metrics are returned. If set to SIZE, /// the response includes statistics about item collections, if any, that were modified /// during the operation are returned in the response. If set to NONE (the /// default), no statistics are returned. /// /// public ReturnItemCollectionMetrics ReturnItemCollectionMetrics { get { return this._returnItemCollectionMetrics; } set { this._returnItemCollectionMetrics = value; } } // Check to see if ReturnItemCollectionMetrics property is set internal bool IsSetReturnItemCollectionMetrics() { return this._returnItemCollectionMetrics != null; } } }