我是ArangoDB的新手,想用它来建模一个去中心化的架构。正如文档中所说的,它支持多个DB类。* 我想创建一个数据模型,它将具有多个图形,作为一个小型分布式系统,用于模拟目的 *。现在,一旦我有了分布式系统,我想将所有这些源作为一个查询。例如,我们在分布式系统中有3个节点:节点1保存机场的数据,节点3保存航班的数据,节点3保存乘客的数据。现在我的问题是,我可以通过编写一个查询或多个查询来查询所有三个节点吗?我希望从一个接口访问多个节点。使用ArangoDB可以吗?
- 如果我不清楚,请放弃您的查询
1条答案
按热度按时间dwbf0jvd1#
...我是否可以通过编写一个查询来查询所有三个节点...
简短的回答是“是的”,但是要加上一个大大的“这取决于您的数据模型”星号。从关系到图形的转变可能很奇怪,而且很容易构建一个伸缩性不好的数据集。
ArangoDB通过链接文档工作(节点)使用“边”,边是定义链接方向的特殊文档(到/从)。边缘集合可用于运行查询(匿名图),也可以“分组”到定义更完善、更精细的图定义中(命名图)。您的数据库可以有许多命名图,每个命名图都可以根据您要查询的集合进行定制(与RDBMS一样,减少要查看的内容是提高性能的最简单方法)。
通常,您可以通过高级类型来创建集合,组成员可以通过文档/边缘上的属性或简单地通过边缘连接来定义。最佳速度将通过将查询保留在内存中来实现,这意味着不要对非索引属性进行筛选。
从您的问题来看,您似乎想要两个集合(“airports”和“passenger”),沿着一个“flights”的边缘集合(可能是“airports-〉passenger -〉airport”的图)。这个example演示了一个简单的演员/电影数据集,它被设计为图形友好的,但是在互联网上有许多airports/trip图示例。
AQL语言允许您在同一个查询中构建复杂的查询,包括多个图和文档调用。与往常一样,主要的警告是遍历复杂性(请参阅big-O notation)和内存使用。
从ArangoDB的Angular 来看,这些可能是了解基本建模信息的一个很好的起点: