DynamoDB应用程序体系结构

我们使用DynamoDB和node.js和Express来创buildREST API。 为了简化操作,我们已经开始在后端使用Dynamo了。

我们已经开始使用AWS实验室的DynamoDB Document SDK来简化使用,并使得使用JSON文档变得容易。 要实例化一个客户端使用,我们需要执行以下操作:

AWS = require('aws-sdk'); Doc = require("dynamodb-doc"); var Dynamodb = new AWS.DynamoDB(); var DocClient = new Doc.DynamoDB(Dynamodb); 

我的问题是,为了确保数据的完整性,最后两步需要在哪里进行? 我担心一个对象正在等待Dynamo中发生的事情,被另一个进程接pipe,并且交换数据,导致不正确的数据被发送回客户端,或者不正确的数据被写入数据库。

我们有三个部分给我们的REST API。 我们有主要的server.js文件,它启动express和HTTP服务器,并为它分配资源,设置日志logging等。我们执行前两个步骤创build到Dynamo的连接,创buildAWS和Doc需求那点。 这些variables在应用程序中是全球性的。 然后,根据通过API执行的路由,调用一个控制器来parsing来自其他调用的input。 然后调用一个模型文件,与Dynamo进行交互,然后将响应提供给控制器,控制器会将返回包与任何错误一起格式化,然后将其发送到客户端。 该模型只是一组基本覆盖应用程序的相同区域的方法。 例如,我们将拥有一个用户模型,该模型涵盖了应用程序中的login和帐户创build等内容。

我已经完成了上面两个步骤来创build两个地方的发电机对象。 一个,我只是把他们放在一个地方,在每个模型文件的顶部。 我不会在下面的方法中重新使用它们,我只是简单地使用它们。 我们还在方法中实例化了它们,当我们准备对Dynamo进行调用时,使它们完全局限于方法,并在需要时将它们传递给第二个函数。 第二种方法一直让我感到最安全的做法。 然而,在负载testing下,我遇到了一些情况,我们似乎已经不堪重负了传出的networking连接,并且我开始收到错误,告诉我DynamoDB端点在我运行的区域不可用。我相信这是从进行连接所需的额外呼叫。

所以,问题是,创build这些模型文件的本地对象,安全,还是需要在使用它们的方法本地创build? 任何想法将不胜感激。

您应该安全地创build这些客户端的一个实例,并在您的代码中分享这些实例,但这与您的潜在关注无关。

同时访问DynamoDB中的各种logging仍然是您必须处理的事情。 可能有不同的请求尝试同时写入对象。 如果您在单个服务器上有并发请求,这是可能的,但是当您有多个服务器时尤其如此。

写入DynamoDB仅在单个项目处为primefaces。 这意味着如果您的逻辑需要多个更新来分隔可能在单独的表中的项目,则无法保证所有这些更改或没有任何更改。 有可能只有其中一些可以制造。

DynamoDB本地支持条件写入,因此可以确保满足特定条件,例如特定属性仍然具有某些值,否则写入将失败。

关于向DynamoDB提出太多的请求,除非您压倒了您的机器,否则不应该有任何方法来压垮DynamoDB API。 如果您正在执行更多已设置的读/写操作,则会收到指示已超过预configuration吞吐量的错误,但是API本身在这些条件下仍然按照预期运行。