How does the DynamoDB Driver handle complex types like Maps and Lists
Types such as Maps and Lists are difficult to apply to single column and therefore must be normalized. Maps are flattened into multiple columns with each Map Attribute defined as a column. Lists are virtualized into a child or right table that can be joined to the parent or left table. The child table consists of a primary key and index column and a value column. List entries are expanded row-wise with one entry per row.
What about Sets
Sets are virtualized into child tables similar to Lists. The only difference is that because Sets are unique; they do not require an artificial index to maintain primary key uniqueness.
How does the DynamoDB Driver handle Read Units
Because the DynamoDB driver is querying your DynamoDB instance, it consumes Read Units the same way any other application would. The driver will attempt to reduce its read unit footprint by using the query API when filters are applied to a primary key. To maximize performance the driver will attempt to maximize its throughput usage to retrieve results as fast as possible. This maximum can be reduced using the driver wide throttling settings located in the Advanced Settings Dialog. More information on Read Units can be in the DynamoDB documentation found here.
How does the throttle work?
The throttle attempts to limit the throughput consumption of the driver to a certain percentage of the total available throughput. This is not an exact science as there are a number of factors that make client side throttling and imprecise science.
The throttle works by attempting to calculate the number of items that can be requested by the driver per second in order to achieve the desired throughput. There are two limitations with this approach. The first issue is that the metadata used in the throttling calculation only updates every 6 hours. So if you have tables that change frequently this calculation will be inaccurate. Secondly, the calculation assumes a relatively consistent item size, so if you have disproportionate data the calculation may also be inaccurate.
What happens if the throughput available on the server is less than what is required by the driver
If the driver sends a request that exceeds the currently available throughput, the server will return a ThroughputExceeded error. By default, the driver will catch this error, backoff and retry the operation up to 5 times. This maximum retry count can be configured in the Advanced Settings Dialog.
Does the DynamoDB Driver support multithreading
The DynamoDB driver supports multithreading on read operations. The number of threads can be configured using the schema editor.