[MDEV-33405] Engine-independent indexes: low-level API method Created: 2024-02-07  Updated: 2024-02-07

Status: Open
Project: MariaDB Server
Component/s: None
Fix Version/s: None

Type: Task Priority: Major
Reporter: Sergei Golubchik Assignee: Unassigned
Resolution: Unresolved Votes: 0
Labels: None

Issue Links:
Relates
relates to MDEV-32887 k-ANN indexes for vectors In Progress
relates to MDEV-33414 benchmark vector indexes Open

 Description   

This tasks covers an alternative to MDEV-33404:

Defining a low-level interface for storage engines to allow for page allocation

The purpose of this interface is to support lower-level implementation of indexing strategies, should the subtable (high level interface) prove too slow.

High level overview
The index will ask the engine for a page in the table space and can store the index there in any arbitrary way it wants, the engine will treat it as opaque.

Benefits

Drawbacks

  • The burden of ACID is on the index implementation, it handles undo/redo, recovery, isolation
    • This has to be done for every supported engine separately
  • Works only for very few selected engines, may be only InnoDB
    • So not very engine independent

Interface questions to be answered:
What operations should this interface support?

  1. Alloc page(s) (implemented by SE)
  2. Free page(s) (implemented by SE)
  3. Register callback for row insert/update/delete (callback invoked by SE when event occurs)
  4. Register callback for transaction start/commit/rollback (callback invoked by SE when event occurs)

Does Engine query the Index or is it only for the upper SQL layer level to decide?


Generated at Thu Feb 08 10:38:39 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.