我正在决定是否为每个客户提供一张桌子,或者客户是否与其他人共享一张桌子。为每个客户创建一个表似乎有问题,因为这只是另一件需要管理的事情。
但后来我考虑备份数据库。可能会出现这样的情况,即客户没有强大的IT安全性,甚至没有一个不满的员工,而此人会删除客户的一大堆重要数据。
在这种情况下,如果所有客户都在同一个表中,例如,不能仅从2天前的DynamoDB快照恢复,因为所有其他客户都会丢失过去2天的数据。在云计算之前,这在我看来并不是一个普遍的考虑因素,因为备份并不是那么直接地为那些不是第1层业务的客户提供这样的功能,而这些客户并没有真正考虑到这一点。
但是这个功能对于我的SAAS应用程序来说可能是一个巨大的卖点,所以现在我认为每个客户都有桌子是值得的。这是正确的思路吗?
单独的表格:
只是抛出另一个想法,还没有尝试过,也没有考虑过每一个赞成和反对。
使用Lambda提取所有写操作,并将它们写入备份表。使用TTL(用户可以恢复其内容的时间)免费删除旧条目。如果您为不同价格级别的服务提供更长的备份,甚至可以根据客户修改TTL。
您需要一个好的模式来避免热键。
customer-id (partition ID) | time-of-operation#uuid (sort key) | data, source table etc
-------------------------------------------------------------------------------------------
例如,如果你的一些客户比其他人更活跃,这个例子可能会有问题。
可能的解决方案:使用已知范围的int-s
作为后缀ID,例如client-id#1
,client-id#2
... client-id#100
等。这将传播写入,您的应用程序知道范围-能够查询。
无论如何,这只是我脑海中一个快速而肮脏的例子。
我想到的一些利弊:
对我来说,这听起来是一个很好的思路。您可能还需要考虑以下几点:
关于你的问题。DynamoDB备份实际上不必还原到同一个表中。因此,您可能将所有客户数据都放在一个备份的表中。如果一个客户请求恢复,您可以将数据加载到新表中,将其数据同步到活动表中,然后删除恢复表。这不一定很容易,但你可以试一试。此外,您还可以在执行同步时支付所有RCU/WCU的费用,这是您在恢复时不会产生的费用。
希望其中一些有用。
我们正在努力在AWS上部署我们的产品(目前在本地),并将DynamoDB视为Cassandra的替代品,主要是为了避免与大量Cassandra集群相关的开发成本。 DynamoDB文档表示,每个帐户的表数限制为每个区域256个,但可以通过调用AWS支持来增加。每个帐户的最大限额是多少? 我们的产品被分成不同的逻辑单元,每个这样的单元将有几个表(比如100个)。每个客户可以有几个这样的单元。每个逻辑
DynamoDB有备份和恢复功能。文档说明,当您恢复表时,读写容量将与备份时的源表保持相同。 目标表设置了与源表相同的已配置读容量单位和写容量单位,如请求备份时所记录的。 但在这种情况下,目标表的分区总数是多少?原始源表可以有许多具有较小读写容量的分区。这将如何反映?
Amazon DynamoDB是一个完全托管的NoSQL数据库服务,允许创建可以存储和检索任意数量数据的数据库表。 它自动管理多个服务器上的表的数据流量并保持性能。 它还使客户免于操作和扩展分布式数据库的负担。 因此,亚马逊管理硬件配置,设置,配置,复制,软件修补,群集扩展等。 如何在计算机上运行DynamoDB? 以下是设置DynamoDB的步骤。 Step 1 - 以下是设置DynamoDB的
我希望使用DynamoDB表来请求我在查询中创建的二级索引。 从现在开始,对于我正在做的一个二级索引: 我会像这样构建我的KeyConditionExpression: 我读了一遍又一遍这份文件,但我不知道怎么做: https://docs.aws.amazon.com/fr_fr/amazondynamodb/latest/gettingstartedguide/GettingStarted.P
我使用DynamoDB Encryption Client(Item Encryptor)(Lib Link)加密记录。现在我想解密它。我已经阅读了文档和GitHub页面,没有示例,所以很难弄清楚我弄错了哪部分。 这是DynamoDB事件的“新图像”。关键是“ID”。DynamoDB流记录 我尝试过: 使用decrypt\u dynamodb\u项- 使用ddb\u to\u dict,然后使用d
如果我有一个具有多个DynamoDB Stream触发器的Lambda函数,是否可以保证每个Lambda调用只包含来自一个表的记录?