Apache Ignite:索引如何工作?

Mak*_*e42 7 ignite

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

  1. 它是否使用B树?
  2. 索引存储在哪里?
  3. 它是如何存储的?
  4. 构建使用后索引提供了什么性能(以Big-O表示法)?
  5. 它的构建速度有多快,何时构建?
  6. Ignite可以存储任意可序列化的Java对象.当我想索引子子对象的字段时,它如何处理复合?
  7. Ignite Cache是​​一个键值存储.我可以将不同的类(=类型作为对象)作为值吗?换句话说,Ignite Cache Schemaless?如果是的话,这如何适合我的SQL查询?
  8. Ignite Cache是​​一个键值存储.如果我对我的值进行SQL查询,那么密钥如何发挥作用呢?我在询问什么?
  9. 键可以是任意的,可序列化的Java对象 - 我能够查询键还是仅查询值?

小智 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. 等等。

玩得开心!