【问题标题】:How is it possible for DynamoDB to support both Key-Value and Document database properties at the same timeDynamoDB 如何同时支持 Key-Value 和 Document 数据库属性
【发布时间】:2021-08-11 05:51:49
【问题描述】:

根据 DynamoDB 的文档,它支持 NoSQL 的键值和面向文档的属性,即使其他 NoSQL 数据库仅属于键值或文档或图形或面向列的一种类型

它还说

Amazon DynamoDB “建立在 Dynamo 的原则之上”[3] 并且是 AWS 基础设施内的托管服务。然而,虽然 Dynamo 基于无领导者复制,但 DynamoDB 使用单领导者复制。

Dynamo 是

一组技术共同构成高可用键值结构化存储系统[1]或分布式数据存储

因此,当 DynamoDB 建立在与面向文档的存储系统无关的 Dynamo 原则上时,并且由于开发人员必须创建主键并且表需要每个项目的键,DynamoDB 如何以及在什么意义上被称为面向文档的数据库?

一个数据库首先可以属于两种类型的 NoSQL 数据库吗?

【问题讨论】:

    标签: nosql amazon-dynamodb


    【解决方案1】:

    首先,重要的是要认识到“Dynamo”是 Amazon 设计的较早的 nosql 数据库,其设计于 2007 年公开(例如,参见 https://www.allthingsdistributed.com/2007/10/amazons_dynamo.html)。后来其他人采用了这种设计,以及其他当代设计(如 Google 的 BigTable)并对其进行了改进,从而产生了 Cassandra(2008 年)等项目。 Amazon 的 DynamoDB 仅在 2012 年发布,基于其他系统(尤其是 Cassandra)的许多想法,与最初的“Dynamo”几乎没有共同之处。因此,当您讨论现代 DynamoDB 时,几乎所有关于原始“Dynamo”的内容都不会相关。

    现在关于您的主要问题:

    键值存储为每个键保存一个。可以说,如果值可以是整个文档,您可以将此数据库称为“文档存储”。从这个意义上说,DynamoDB 是一个文档存储。 DynamoDB API 让您可以方便地将 JSON 文档存储为值,还可以直接读取或写入该文档的一部分,而不是读取或写入整个文档(尽管您实际上为读取和写入整个文档付费 文件)。

    您应该注意,DynamoDB 与 Cassandra 和 BigTable(与原来的“Dynamo”不同)实际上给您的远不止这些:每个所谓的“分区键”不仅可以保存一个值(或文档),还可以保存一个此类值的排序列表。我在我的问题中提到了这个我不知道如何调用的有趣功能 How do you call the data model of DynamoDB and Cassandra?

    【讨论】:

    • 有道理。谢谢@Nadav
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-05
    • 1970-01-01
    相关资源
    最近更新 更多