10

Apache Ignite 的索引是如何工作的?我还没有在文档中找到这些技术细节。

  1. 它使用B树吗?
  2. 索引存储在哪里?
  3. 它是如何存储的?
  4. 内置使用后索引提供什么性能(Big-O 表示法)?
  5. 它的构建速度有多快,什么时候构建?
  6. Ignite 可以存储任意可序列化的 Java 对象。当我想索引子子对象的字段时,它如何处理组合?
  7. Ignite Cache 是一个键值对存储。我可以将不同的类(=作为对象的类型)作为值吗?换句话说,Ignite Cache 是无模式的吗?如果是,这与我的 SQL 查询有什么关系?
  8. Ignite Cache 是一个键值对存储。如果我对我的值进行 SQL 查询,键是如何发挥作用的?我在查询什么?
  9. 键可以是任意的、可序列化的 Java 对象——我可以查询键还是只查询值?
4

1 回答 1

5

这些信息在文档中并没有真正涵盖,因为它主要是实现细节,并且可以从一个版本更改为另一个版本。毕竟,如果您对细节感兴趣,可以使用所有源代码。具体来说,我说的是即将发布的 Ignite 1.5。

  1. 在 1.5 之前,默认数据结构是 snap-tree(avl-tree 的变体),因为 1.5 还添加了 skip-list 选项,现在它是默认值。
  2. 在 Java 堆或堆外内存中,具体取决于配置。
  3. 可靠:) 我不明白这个问题。
  4. log(N) 更新和查找。
  5. 每次事务提交都会更新索引(或者在原子缓存的情况下仅更新缓存),没有单独的构建阶段。您可以期望索引在每次更新后都处于正确状态。
  6. Ignite 有两个选项(从 1.5 开始):以允许获取单独字段值的二进制格式存储对象或保持整个对象反序列化并使用反射。
  7. 等等

玩得开心!

于 2015-11-27T15:42:43.550 回答