Uploaded image for project: 'Ignite'
  1. Ignite
  2. IGNITE-6409

SQL: bypass H2 during index update

    XMLWordPrintableJSON

Details

    • Task
    • Status: Closed
    • Major
    • Resolution: Won't Fix
    • 2.1
    • None
    • persistence, sql

    Description

      Currently the only way to update standard user index is through H2 infrastructure. See GridH2IndexBase#put and it's usages. For every update we have to construct a kind of H2 row which will be passed to index. This operation might require unnecessary memory copying and deserializations. We should try to find a way to bypass H2 stuff altogether and add data to underlying BPlusTree directly.

      Here is how this could be achieved:
      1) Actual tree is H2Tree. It is accompanied by several helper classes (InlineIndexHelper, H2*IO).
      2) We should remove all H2 stuff from there, and start using CacheDataRow instead of SearchRow
      3) Refactored classes should be moved to core module.
      4) Conversion to SearchRow should happen inside H2TreeIndex only when it is really needed.
      5) Two operations putNative and getNative should be added to GridH2IndexBase. They should accept normal key-value objects instead of H2 rows.
      6) Finally, all index index update routines (cache put/get, CREATE INDEX) should be moved to putNative/getNative methods.

      Note that IO classes should be reworked carefully to maintain backward compatibility.

      Attachments

        Activity

          People

            Unassigned Unassigned
            vozerov Vladimir Ozerov
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: