reindexer  by Restream

Embeddable, in-memory document database for fast, complex queries

Created 9 years ago
808 stars

Top 43.0% on SourcePulse

GitHubView on GitHub
1 Expert Loves This Project
Project Summary

Summary

Restream's Reindexer is an embeddable, in-memory, document-oriented database designed as a high-performance alternative to systems like Elasticsearch. It targets developers seeking fast search capabilities with complex query support, offering a C++ core for speed and a Go API for ease of use.

How It Works

Reindexer leverages a C++ core for its performance-critical operations, exposing a high-level Go API with an ORM-like query builder. It prioritizes low memory allocation during queries through optimizations like dense C++ structs and string deduplication. The architecture supports advanced features such as full-text search, vector indexes (ANN/KNN), and hybrid search, all while maintaining an in-memory focus for speed.

Quick Start & Requirements

For server mode, installation involves go get -a github.com/restream/reindexer/v5 or using the official Docker image. Embedded mode requires a C++20 toolchain, CMake, LevelDB, and potentially OpenMP/BLAS/LAPACK for vector index support. Building requires g++ 10+, clang 15+, or mingw64. The go get command is recommended for Go modules, with options for local source replacement or vendoring.

Highlighted Details

  • Performance: Benchmarks claim performance comparable to key-value stores, achieving up to 500K simple SELECTs/sec and 50K complex SELECTs/sec on a single core.
  • Memory Efficiency: Designed for minimal memory overhead, approximately 32 bytes per document plus 4-16 bytes per search index, with an object cache for deserialized documents.
  • Advanced Indexing: Supports full-text search, vector indexes (ANN/KNN), and hybrid search capabilities.
  • Querying: Offers a rich query builder, SQL-compatible interface, support for composite primary keys, joins, subqueries, and various aggregation functions.
  • Persistence & Scalability: Features disk storage via LevelDB, synchronous/asynchronous replication, and basic sharding support.

Maintenance & Community

Help is available via a Telegram group. The README does not detail specific contributors, sponsorships, or a public roadmap.

Licensing & Compatibility

The project's license is not explicitly stated in the provided README. This omission requires further investigation for commercial use or integration into closed-source projects.

Limitations & Caveats

The internal C++ API is noted as unstable and subject to change. Sharding support is described as basic. The lack of a clear license is a significant adoption blocker.

Health Check
Last Commit

1 day ago

Responsiveness

Inactive

Pull Requests (30d)
2
Issues (30d)
0
Star History
2 stars in the last 30 days

Explore Similar Projects

Feedback? Help us improve.