假设我在AWS上有一个生产应用程序,比如说50,000个用户,我只需要获取一个用户名并查找一两条关于他们的信息。
将这些信息保存在DynamoDB中而不是存储在AWS S3桶中的Ruby散列中有什么好处吗?
所谓“优势”,我指的是成本和速度。
在某种程度上,我需要迁移到DB,还是一个简单的哈希查找就足够了?同样,我不需要比较条目,也不需要做任何事情,只需要查找与键(用户名)相关联的值。
更普遍的问题是:对于简单的密钥/值存储,DB (如DynamoDB)比S3散列有什么优势?
发布于 2016-01-04 22:03:37
您应该注意,Hash
不能用作数据库,它必须带有来自某些数据存储区(例如数据库、JSON、YAML文件或类似文件)的值。相反,DynamoDB是一个数据库,具有持久性内置。
尽管如此,对于50,000个条目来说,Ruby应该是一个可行的选项,它将表现得非常好,正如这篇文章中所指出的那样。
Ruby不是分布式的,因此,如果您在多个服务器上运行应用程序以获得可用性/可伸缩性,则必须在每个服务器中加载该哈希并保持其数据一致性。换句话说,您需要确保如果一个用户属性通过一台服务器进行更新,您将如何在其他服务器上复制它的值。另外,如果您的系统中的用户数不是5万,而是5000万,那么您可能不得不重新考虑Hash作为缓存选项。
DynamoDB是成熟的NoSQL数据库 --它是分布式的,并且保证了很高的可伸缩性。使用它还需要花费钱币 -所以您使用它的决定应该基于您是否需要DynamoDB提供的这样的规模和可用性,以及您是否有预算。
https://stackoverflow.com/questions/34604823
复制