Commits

Jean-Tiare LE BIGOT  committed 83a15f5

add important performance notice

  • Participants
  • Parent commits d425d9d

Comments (0)

Files changed (2)

 
 - add ``DynamoDbModel.validate()`` based on Onctuous
 - data are validated prior to any write operations
+- cache tables objects in ConnectionBorg to avoid superfluous``DescribeTable`` requests
 
 Changes
 -------

File docs/pages/overview.rst

 =================
 
 - Dates nested in a dict or set can not be saved as ``datetime`` does not support JSON serialization. (issue #7)
+
+Important performance notice
+============================
+
+To avoid superfluous ``DescribeTable`` requests, ``Table`` objects are cached
+after their first request. As it removes an extra overhead of ~20ms that was
+before each requests, it might let you go faster than your provisioned
+throughput. This will trigger an exponential backoff retry algorithm in Boto.
+While this algorithm is well done, be informed that the resulting effective
+throughput will be up to 40% *slower* than what you could have expected with
+your configured throughput.
+
+If you ever reach this situation, you have 2 options:
+
+ - either increase (if bandwith allows) your provisioned throughput.
+ - either introduce manual, carefully chosen sleeps.
+
+With the second option, I have been able to reach the theoretical throughput on
+an extremely intensive and non representative benchmark.