data-modeling - 而是在少数文档中使用多重嵌套列表,或者没有/很少嵌套列表,但许多文档通过边连接

标签 data-modeling arangodb nosql

在读取性能方面哪个更好?我目前正在使用 arangoDB,关于多模型方法,我想知道从具有多重嵌套列表的少数文档中读取数据或从许多(较小的)没有嵌套列表的文档中读取数据是否更快,这些文档是连接的由多个边缘。

多重嵌套文档示例(实际上,这与鸡尾酒数据库无关):

{
"_key" : "cocktail/1",
"name" : "newcocktail",
"drinks" : [{ "orange juice" : [{"ingredient":"orange", "quantity":2},{"ingredient":"water", "amount":4},{"ingredient":"sugar", "quantity":6}], ...]},
}

示例没有嵌套列表:

{
"_key" : "cocktail/1",
"name" : "newcocktail"
}

{
"_key" : "edge/1",
"from" : "cocktail/1",
"to" : "drink/1"
}

{
"_key" : "drink/1",
"name" : "orange juice"
"quantity" : 2
}

{
"_key" : "edge/2",
"from" : "drink/1",
"to" : "ingredient/1"
}

{
"_key" : "ingredient/1",
"name" : "orange"
"quantity" : 2
"unit" : ....
}

最佳答案

如果您只对原始读取性能感兴趣,那么读取一个大文档会更快。

如果您的文档只是值,那么关于多模型方法的正确策略确实是嵌入。如果您的文档本身就是实体(可能会经常更改;从不同的地方引用),那么您应该将它们存储为单独的文档。

关于data-modeling - 而是在少数文档中使用多重嵌套列表,或者没有/很少嵌套列表,但许多文档通过边连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27782656/

相关文章:

machine-learning - 解释随机森林模型结果

neo4j - 排除具有重复节点的路径

arangodb - 大型 AQL 查询内存不足 |尝试将一个集合分成两部分

arangodb - 如何将 ArangoDb 中的结果分组为单个记录?

java - ArangoDB 在事务中使用图形模块

c# - 如何使用 .NET 客户端以编程方式删除托管在 couchbase 中的数据库存储桶中的所有数据

node.js - mongodb 子文档是否等同于 Firestore 子集合?

javascript - Meteor MongoDB 按子字段过滤父记录

database - Cassandra - 按 ID 分组和按日期排序

mysql - 同一张表上的多对一和一对一关系?