Datomic允许我们在同一查询中use multiple inputs,即多个数据组服务器。
当查询为performed locally in the peers, using the actual db indexes inside the peer时,似乎正在运行的查询加入来自多个数据组服务器的数据可能几乎(如果没有在单个数据组服务器上进行类似连接一样快)。
是这种情况还是使用多个来源时查询引擎的工作方式存在质的差异?
(如果没有,我们可以解决这样一个事实:数据组服务器中的所有写操作必须通过单个事务处理器,通过分片来任意扩展写入性能。相对于RDBMS分片的好处是查询性能和效率加入时)
修改
事实证明,即使在单个数据组服务器内,not all queries are equally fast:
也是如此您经常查询的实体(例如我们的示例数据中与社区相关的实体)应位于相同的分区中以提高查询效果。
所以,让我重新说一句:对于数据通信服务器的查询是否与单个数据组服务器上的分区之间的查询大致一样快和高效(内存,CPU使用,网络)?
答案 0 :(得分:3)
Datomic的查询引擎并不关心底层索引段的来源,因此使用来自多个不同系统的索引的查询与使用单个系统的索引的查询相比没有任何代价。
也就是说,您必须以这样一种方式组织数据,即在N个系统中加入有用的属性来做任何有趣的事情。这可能会对性能产生影响,例如选择比简单实体ID更大的值类型会减少可容纳在缓存中的数据量。