Restream/reindexer

Embeddable, in-memory, document-oriented database with a high-level Query builder interface.

What it solves

Reindexer is designed to provide high-performance search and complex querying capabilities for document-oriented data. It serves as a more performant alternative to tools like Elasticsearch, focusing on minimizing memory allocation and maximizing query speed.

How it works

It is an embeddable, in-memory database with a core written in C++ and an application-level API provided in Go. To maintain speed and low memory overhead, it stores documents and indices in dense binary C++ structs, reducing the load on Go's garbage collector. It supports three deployment modes: embedded as a static library, embedded with a bundled server, or as a standalone server. For persistence, it uses LevelDB to asynchronously write documents to disk.

Who it’s for

Developers who need a fast, document-oriented database for complex queries, specifically those looking for an in-memory solution that can be embedded directly into a Go application or run as a standalone service.

Highlights

  • Vector Search: Includes internal k-nearest neighbors (KNN) and approximate nearest neighbors (ANN) search engines.
  • Hybrid Search: Supports combining full-text search and vector search.
  • High Performance: Capable of handling up to 500K simple queries per second on a single CPU core.
  • Flexible Querying: Offers both an ORM-like Query builder and a SQL-compatible interface.
  • Advanced Indexing: Supports sortable indices, composite indices, and indices on array fields.

Related

  • Project
  • Project
  • Project
  • Project
  • Project