我对cosmosdb(documentdb)非常陌生,在阅读文档时,我一直反复阅读一件事情,即documentdb是无模式的,但我觉得像集合类似于模式并且都是逻辑视图。集合与模式不同如何集合
Wikipedia定义的模式为'术语“模式”是指将数据组织为数据库如何构建的蓝图。我相信收集也是相同的,它是文档,存储过程,触发器和UDF的组织。
所以我的问题是,模式与集合有何不同?
我对cosmosdb(documentdb)非常陌生,在阅读文档时,我一直反复阅读一件事情,即documentdb是无模式的,但我觉得像集合类似于模式并且都是逻辑视图。集合与模式不同如何集合
Wikipedia定义的模式为'术语“模式”是指将数据组织为数据库如何构建的蓝图。我相信收集也是相同的,它是文档,存储过程,触发器和UDF的组织。
所以我的问题是,模式与集合有何不同?
关系数据库的模式与文档数据库的模式略有不同。简而言之,关系数据库比文档模式更严格。换句话说,RDBMS表中的记录必须严格遵守模式,因为我们在将文档存储到Document集合时具有一定的灵活性。
传统上,集合是遵循相同模式的一组文档。但是,文档数据库不会停止将具有不同模式的文档存储在单个集合中。这是它给用户的灵活性。
让我们举一个例子。让我们假设我们正在存储一些客户信息。 在关系数据库中,我们可能会像
Customer ID INT
Name VARCHAR(50)
Phone VARCHAR(15)
Email VARCHAR(255)
一些结构取决于其电子邮件或电话号码的客户,它们将被记录为适当的值或空值。
ID, Name, Phone, Email
1, John, 83453452, -
2, Victor, -, -
3, Smith, 34535345, [email protected]
但是,在文档数据库中,如果某些列没有任何值,则需要在集合中出现某些列。
[
{
id: "123",
name: "John",
phone:"2572525",
},
{
id: "456",
name: "Stephen",
},
{
id: "789",
name: "King",
phone:"2572525",
email:"[email protected]"
}
]
但它始终是最好坚持在文档数据库的模式是,即使他们的可维护性目的提供灵活存储架构少文档的集合。
感谢您的回答@Ravi,我感谢您的努力。来指出,忘记关系数据库,我曾在卡桑德拉和它的基于模式的工作,和你指出关于空值的那个,它只是在nosql中的一个选择,并且与集合或模式无关是什么我的基本信息 – lambodar
传统上集合是一组遵循相同模式的文档。但是,文档数据库不会停止将具有不同模式的文档存储在单个集合中。这是它给用户的灵活性。 –
我不同意集合通常包含具有相同模式的文档。没有这样的约定。也许人们被教导要做到这一点(例如每个对象类型一个集合),但是对此没有规定,也没有规定。 –
集合实际上与模式无关。它们只是一个文件的组织结构。使用Cosmos DB,它们可以作为:
无论您选择为每个对象类型创建单个集合还是将多个对象类型存储在单个集合中,完全取决于您。与数据的形状无关。
集合不像模式那样强制执行特定类型的文档。因此,一个文档集合可以包含具有用户数据的文档或具有日志数据或任何文档的文档。收集只是一组可能无关的文件。集合就像一个数据库,一个数据库可以有多个(可能不相关的)表。但是数据库本身并不描述/强制存储什么数据。 –
谢谢@PeterBons听起来合乎逻辑! – lambodar