首页 文章

Apache Ignite:索引如何工作?

提问于
浏览
5

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

  • 它是否使用B树?

  • 索引存储在哪里?

  • 如何存储?

  • 索引在构建使用后提供了什么性能(以Big-O表示法)?

  • 它构建的速度有多快,何时构建?

  • Ignite可以存储任意可序列化的Java对象 . 当我想索引子子对象的字段时,它如何处理复合?

  • Ignite Cache是一个键值存储 . 我可以将不同的类(=类型作为对象)作为值吗?换句话说,Ignite Cache Schemaless?如果是的话,这如何适合我的SQL查询?

  • Ignite Cache是一个键值存储 . 如果我对我的值进行SQL查询,那么密钥如何发挥作用呢?我在询问什么?

  • 键可以是任意的,可序列化的Java对象 - 我能查询键还是仅查询值?

1 回答

  • 3

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

    • 在1.5之前,默认数据结构是一个快照树(avl-tree的变体),因为添加了1.5个skip-list选项,现在它是默认值 .

    • 在java堆中或在堆外内存中,具体取决于config .

    • 可靠:)我不明白这个问题 .
      更新和查找

    • log(N) .

    • 索引在每次事务提交时得到更新(或者只是在原子缓存的情况下缓存更新),没有单独的构建阶段 . 每次更新后,您都可以期望索引处于正确状态 .

    • Ignite有两个选项(自1.5起):要么以二进制格式存储对象,要么获取单独的字段值,要么保持整个对象反序列化并使用反射 .

    玩得开心!

相关问题