Apache Ignite:索引如何工作?

时间:2015-11-27 09:06:37

标签: 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对象 - 我能查询键还是仅查询值?

1 个答案:

答案 0 :(得分:4)

这些信息在文档中并未涵盖,因为它主要是实现细节,可以在不同版本之间进行更改。如果您对细节感兴趣,可以使用所有源代码。 具体来说,我正在谈论即将发布的Ignite 1.5。

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