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

时间:2016-01-05 05:33:20

标签: ruby database hash amazon-dynamodb key-value

假设我在AWS上有一个生产应用程序,比方说有50,000个用户,我需要简单地使用用户名并查找有关它们的一两条信息。

通过存储在AWS S3存储桶中的Ruby哈希将此信息保存在DynamoDB中是否有任何优势?

“优势”是指成本和速度。

在某些时候,我是否需要迁移到数据库,或者简单的哈希查找是否足够?同样,我永远不需要比较条目,或做任何事情,但查找与密钥(用户名)相关联的值。

更普遍的问题是:为了简单的键/值存储,数据库(如DynamoDB)优于S3哈希的优势是什么?

1 个答案:

答案 0 :(得分:1)

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

话虽如此,对于50,000个条目,Ruby Hash应该是一个可行的选项,它将表现得相当好,如this article所示。

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

DynamoDB已全面展开NoSQL database - 它是分布式的,并承诺高可扩展性。使用它也需要花费money - 所以您决定使用它应该基于您是否需要DynamoDB提供的这种规模和可用性,以及您是否有预算。