代码之家  ›  专栏  ›  技术社区  ›  Pragmatic

我们能避免在发电机里扫描吗

  •  0
  • Pragmatic  · 技术社区  · 7 年前

    我们应该如何通过避免扫描或有效使用is来执行此列表?

    1 回复  |  直到 7 年前
        1
  •  7
  •   madhead    7 年前

    基本上,有 three ways of reading data from DynamoDB :

    • GetItem 从表中检索单个项。这是读取单个项目的最有效方法,因为它提供了对项目物理位置的直接访问。
    • Query
    • Scan 检索指定表中的所有项。(此操作不应用于大型表,因为它会消耗大量系统资源。

    获取项目 ( BatchGetItem 查询 查询 扫描 .

    sort key 你的数据。一、 e.您可以使用类别作为散列键,使用产品名称作为排序键,以便显示特定类别的项目的页面可以使用按该类别和产品名称进行查询。但这种设计是脆弱的,因为您可能需要其他页面的键,例如,如果用户查找特定的移动电话,您可能需要供应商+价格查询。 Indexes 能帮上忙,但他们有自己的生意 limitations .

    此外,在 query scan 操作完成,但在得到结果之前,因此整个查询/扫描都要收费。这就像在应用程序中自己过滤数据,而不是在数据库端。

    我想说的是,DynamoDB只是不打算用于许多类型的工作负载。可能,它也不适合你的情况。把它看作是一个富键值(key-to-object)存储,而不是一个“经典”的RDBMS,在这里,索引的成本更低,限制更少,并且为开发人员提供了丰富的查询功能。

    有一个 good article Forrest Brazeal .

    enter image description here

    Another article

    最后,退房 this short answer 关于DynamoDB用例和问题。

    P、 在美国做扫描并没有什么犯罪行为(实际上我在我的一个项目中每天都会做一次扫描),但这是一个例外,我对在这种情况下使用DynamoDB的决定感到遗憾。它在速度、金钱、支持和“肮脏”方面都没有效率。我不得不在工作前增加容量,在工作后减少容量,但那是另一回事

    推荐文章