对于简单的键值查找(在Ruby中),数据库与哈希的优势



假设我在AWS上有一个生产应用程序,有50000个用户,我只需要输入一个用户名并查找一两条关于他们的信息。

与存储在AWS S3存储桶中的Ruby哈希相比,将这些信息保存在DynamoDB中有什么好处吗?

我所说的"优势"是指成本和速度。

在某个时刻,我是否需要迁移到DB,或者一个简单的哈希查找就足够了?同样,我永远不需要比较条目,也不需要做任何事情,只需要查找与键(用户名)相关的值。

更普遍的问题是:对于简单的键/值存储,DB(如DynamoDB)比S3哈希有什么优势?

您应该注意,Hash不能用作数据库,它必须加载一些数据存储中的值(如数据库、JSON、YAML文件或等效文件)。相反,DynamoDB是一个内置持久性的数据库。

话虽如此,对于50000个条目,RubyHash应该是一个可行的选择,它将表现得非常好,如本文所示。

Ruby Hash不是分布式的,因此,如果你在多个服务器上运行应用程序以获得可用性/可扩展性,那么你必须在每个服务器中加载该Hash并保持其数据一致性。换句话说,您需要确保,如果某个用户属性通过一台服务器更新,您将如何在另一台服务器上复制其值。此外,如果您的系统中的用户数量不是50000而是5000万,那么您可能需要重新考虑将哈希作为缓存选项。

DynamoDB是一个完整的NoSQL数据库,它是分布式的,并具有很高的可扩展性。使用它也需要花钱,所以你应该根据你是否需要DynamoDB提供的规模和可用性,以及你是否有预算来决定使用它

最新更新