【问题标题】:Advantages of database vs hash for simple key value lookup (in Ruby)用于简单键值查找的数据库与哈希的优势(在 Ruby 中)
【发布时间】:2016-04-08 20:56:45
【问题描述】:

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

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

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

在某些时候,我是否需要迁移到数据库,或者一个简单的哈希查找就足够了?同样,我永远不需要比较条目,或者只需要查找与键(用户名)关联的值。

更普遍的问题是:就简单的键/值存储而言,数据库(如 DynamoDB)与 S3 哈希相比有哪些优势?

【问题讨论】:

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


    【解决方案1】:

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

    话虽如此,对于 50,000 个条目,Ruby 哈希应该是一个可行的选择,它的性能会非常好,如 this article 所示。

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

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

    【讨论】:

    • 谢谢。这个答案帮助我澄清了这个问题!我不应该将Hash 与数据库进行比较。相反,我应该将使用存储在 S3 存储桶中的 Ruby 哈希(作为 JSON)与使用 DynamDB 进行比较。
    • “您应该注意,哈希不能用作数据库,它必须从某个数据库中加载值。”您还可以将数据存储为 YAML 或 JSON 或编组数据或 CSV 或.. .
    • @Jordan 将把“database”改成“datastore”。
    猜你喜欢
    • 2016-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-31
    • 2011-06-30
    • 1970-01-01
    • 2012-10-11
    • 1970-01-01
    相关资源
    最近更新 更多