Reindexer — это компактная и быстрая
in-memory NoSQL база данных
общего назначения
с открытым исходным кодом

Уникальное решение с открытым исходным кодом, которое сочетает в себе
лучшие качества сложных баз данных и отличную производительность.

Документация

Возможности

перфоманс

Performance

Производительность —
наш главный приоритет

x2 раз быстрее
схожих решений

утилизация памяти

минимум динамических выделений памяти для выполнения запросов. Многие запросы выполняются без аллокаций

полнотекстовый поиск

собственный полнотекстовый движок, интегрированный в СУБД

join-запросы

JOIN, MERGE и их комбинации при помощи логических операций в рамках одного запроса

кластеризация

асинхронная репликация и синхронный кластер, на основе RAFT

геопространственные индексы

фильтрация по вхождению точек в область с несколькими различными движками

постоянное хранилище

хранение и загрузка с диска, используя LevelDB или RocksDB в качестве постоянного хранилища

векторные индексы

встроенный векторный и гибридный поиск

шардирование

распределение данных по нескольким нодам

встроенный графический интерфейс

графический интерфейс для конфигурирования и мониторинга баз данных

Как воспользоваться

  • Установка
  • Коннекторы
  • Docker
    Docker
  • Linux
    Linux
  • MacOS
    macOS
  • Windows
    Windows
  • Sources
    Sources

Запуск контейнера

Самый простой путь установки Reindexer — это скачать и запустить Docker-образ с DockerHub, используя команду
docker run -p9088:9088 -p6534:6534 -it reindexer/reindexer
Copy
Подробности в документации.
  • Fedora
  • Ubuntu
  • Debian
  • Redos
  • AltLinux
Выберите дистрибутив:
  • fedora 41
  • fedora 42
Выполните следующие команды:
yum install -y epel-release yum-utils
rpm --import https://repo.reindexer.io/RX-KEY.GPG
yum-config-manager --add-repo https://repo.reindexer.io/fedora-41/x86_64/
yum update
yum install reindexer-server
Copy
Выполните следующие команды:
yum install -y epel-release yum-utils
rpm --import https://repo.reindexer.io/RX-KEY.GPG
yum-config-manager --add-repo https://repo.reindexer.io/fedora-42/x86_64/
yum update
yum install reindexer-server
Copy
Выберите дистрибутив:
  • ubuntu noble
  • ubuntu jammy
Выполните следующие команды:
wget https://repo.reindexer.io/RX-KEY.GPG -O /etc/apt/trusted.gpg.d/reindexer.asc
echo "deb https://repo.reindexer.io/ubuntu-noble /" >> /etc/apt/sources.list
apt update
apt install reindexer-server
Copy
Выполните следующие команды:
wget https://repo.reindexer.io/RX-KEY.GPG -O /etc/apt/trusted.gpg.d/reindexer.asc
echo "deb https://repo.reindexer.io/ubuntu-jammy /" >> /etc/apt/sources.list
apt update
apt install reindexer-server
Copy
Выберите дистрибутив:
  • debian bullseye
  • debian trixie
Выполните следующие команды:
wget https://repo.reindexer.io/RX-KEY.GPG -O /etc/apt/trusted.gpg.d/reindexer.asc
echo "deb https://repo.reindexer.io/debian-bullseye /" >> /etc/apt/sources.list
apt update
apt install reindexer-server
Copy
Выполните следующие команды:
wget https://repo.reindexer.io/RX-KEY.GPG -O /etc/apt/trusted.gpg.d/reindexer.asc
echo "deb https://repo.reindexer.io/debian-trixie /" >> /etc/apt/sources.list
apt update
apt install reindexer-server
Copy
Выберите дистрибутив:
  • redos-7
  • redos-8
Выполните следующие команды:
rpm --import https://repo.reindexer.io/RX-KEY.GPG
dnf config-manager --add-repo https://repo.reindexer.io/redos-7/x86_64/
dnf update
dnf install reindexer-server
Copy
Выполните следующие команды:
rpm --import https://repo.reindexer.io/RX-KEY.GPG
dnf config-manager --add-repo https://repo.reindexer.io/redos-8/x86_64/
dnf update
dnf install reindexer-server
Copy
Выберите дистрибутив:
  • P10
Для использования https-репозитория требуется предварительная установка пакетов ca-certificates и apt-https.
Выполните следующие команды:
echo "rpm https://repo.reindexer.io/altlinux p10/x86_64 reindexer" > /etc/apt/sources.list.d/reindexer.list
apt-get update
apt-get install reindexer-server
Copy
Reindexer может быть установлен с помощью Homebrew
brew tap restream/reindexer
brew install reindexer
Copy
Скачайте установочный файл:
Вам нужно скачать и установить 64-битную версию.
Зависимости
Ядро Reindexer написано на C++ 20 и использует LevelDB в качестве бэкенда для хранения данных. Поэтому перед установкой Reindexer необходимо установить Cmake, компилятор, поддерживающий C++ 20, и LevelDB. Также для полной поддержки векторных индексов может потребоваться установка библиотек OpenMP и BLAS/LAPACK, хотя это не обязательно - вы можете скомпилировать HNWS-only версию путем передачи -DBUILD_ANN_INDEXES=builtin в CMake.

Зависимости могут быть установлены автоматически с помощью скрипта:
curl -L https://github.com/Restream/reindexer/raw/master/dependencies.sh | bash -s
Copy
Сборка и установка
Выполните следующие шаги для сборки и конфигурации Reindexer:
git clone https://github.com/Restream/reindexer
cd reindexer
mkdir -p build && cd build
cmake ..
make -j4
# install to system
sudo make install
Copy
  • Golang
    Go
  • C++
    C++
  • Java
    Java
  • Python
    Python
  • HTTP REST API
    HTTP REST API
  • GRPC API
    GRPC API
  • PHP
    PHP<community>
  • Rust
    Rust<community>
  • .NET
    .NET<community>

Reindexer for Go является официальным коннектором и поддерживается командой разработчиков Reindexer. Он поддерживает как встроенный, так и автономный режимы. Чтобы включить поддержку встроенного режима, необходимо установить reindexer-dev

  • Поддерживаемые режимы: standalone, builtin, builtinserver
  • Используемые API: binary ABI, cproto
  • Зависимость от библиотеки reindexer (пакет reindexer-dev): да, для builtin и builtinserver
Загрузить коннектор:
go get -a github.com/restream/reindexer/v5
Copy
Подробности в документации.

C++ коннектор интегрирован в основную кодовую базу reindexer и будет устанановлен вместе с пакетом reindexer-dev

  • Поддерживаемые режимы: автономный, встроенный
  • Используемые API: бинарный ABI, cproto
  • Зависимость от библиотеки reindexer (пакет reindexer-dev): да
https://github.com/Restream/reindexer/tree/master/samples/cpp

Reindexer для Java является официальным коннектором и поддерживается командой разработчиков Reindexer. Он поддерживает как встроенный, так и автономный режимы. Для включения поддержки встроенного режима необходимо установить reindexer-dev (версия >= 3.1.0). Подробности смотрите в инструкции по установке

  • Поддерживаемые режимы: standalone, builtin, builtinserver
  • Используемые API: бинарный ABI, cproto
  • Зависимость от библиотеки reindexer (пакет reindexer-dev): да, для builtin и builtinserver
Чтобы запустить установку:
<dependency>
    <groupId>com.github.restream</groupId>
    <artifactId>rx-connector</artifactId>
    <version>[LATEST_VERSION]</version>
</dependency>
Copy
https://github.com/Restream/reindexer-java
Примечание: требуется версия Java >= 1.8

Pyreindexer является официальным коннектором и поддерживается командой Reindexer. Он поддерживает как встроенный, так и автономный режимы. Перед установкой необходимо установить reindexer-dev (версия >= 2.10).
Подробности смотрите в инструкции по установке

  • Поддерживаемые режимы: автономный, встроенный
  • Используемые API: binary ABI, cproto
  • Зависимость от библиотеки reindexer (пакет reindexer-dev): да
Чтобы запустить установку:
pip3 install pyreindexer
Copy
https://github.com/Restream/reindexer-py
https://pypi.org/project/pyreindexer/
Примечание: требуется версия Python >=3.6

Самый простой способ использовать reindexer с любым языком программирования - это использование REST API.
Полная документация по REST API находится здесь. Или изучите интерактивную версию документации Reindexer в формате swagger

GPRC - это современный высокопроизводительный фреймворк RPC с открытым исходным кодом, разработанный компанией Google, который может работать в любой среде. Он может эффективно соединять сервисы как в одном, так и между разными дата-центрами благодаря подключаемой поддержке балансировки нагрузки, трассировке, проверке работоспособности и аутентификации. Он использует HTTP/2 для транспорта, Protocol Buffers в качестве языка описания интерфейса и является более эффективным (а также более простым) в использовании, чем HTTP API. Reindexer поддерживает GRPC API с версии 3.0

GRPC API Reindexer определяется в файле reindexer.proto

Чтобы работать с reindexer через GRPC:

  1. Соберите reindexer_server с опцией cmake -DENABLE_GRPC
    (предсобранные пакеты из репозиториев reindexer, а также reindexer server, поставляемый в официальном докер-образе, уже собраны с этой опцией)
  2. Запустите reindexer_server с флагом --grpc
  3. Соберите GRPC-клиент из файла reindexer.proto для вашего языка https://grpc.io/docs/languages/
  4. Подключите GRPC-клиент к серверу reindexer, работающему на порту 16534
Обратите внимание на методы, которые имеют параметры потока:
rpc ModifyItem(stream ModifyItemRequest) returns(stream ErrorResponse) {}
rpc SelectSql(SelectSqlRequest) returns(stream QueryResultsResponse) {}
rpc Select(SelectRequest) returns(stream QueryResultsResponse) {}
rpc Update(UpdateRequest) returns(stream QueryResultsResponse) {}
rpc Delete(DeleteRequest) returns(stream QueryResultsResponse) {}
rpc AddTxItem(stream AddTxItemRequest) returns(stream ErrorResponse) {}
Copy
Концепция потоковой передачи данных описана здесь.
Лучшим примером является операция массовой вставки, которая реализуется через метод Modify с mode = INSERT. В HTTP-сервере она реализуется как JSON-документ, содержащий все элементы вместе, а при потоковой передаче GRPC вы отправляете каждый элемент по отдельности, друг за другим. В большинстве случаев второй подход является более удобным, безопасным, эффективным и быстрым.

https://github.com/Smolevich/reindexer-client

  • Поддерживаемые режимы: автономный, встроенный
  • Используемые API: binary ABI, cproto
  • Зависимость от библиотеки reindexer (пакет reindexer-dev): да

https://github.com/coinrust/reindexer-rs

  • Поддерживаемые режимы: автономный, встроенный
  • Используемые API: binary ABI, cproto
  • Зависимость от библиотеки reindexer (пакет reindexer-dev): да

https://github.com/oruchreis/ReindexerNet

  • Поддерживаемые режимы: встроенный
  • Используемые API: binary ABI
  • Зависимость от библиотеки reindexer (пакет reindexer-dev): да

О нас

Наша цель - обеспечить быстрый поиск по сложным запросам. Мы не были довольны ни одним готовым решением, и создали Reindexer как более производительную альтернативу.

Reindexer - это встраиваемая документоориентированная in-memory база данных с высокоуровневым интерфейсом построения запросов

О нас пишут

Как мы выбирали между Elastic и Tarantool, а сделали свою (самую быструю) in-memory БД. С Join и полнотекстовым поиском
Поиск по сайту с Reindexer — это просто. Или как сделать "instant search" по всему Хабрахабр-у
История портирования Reindexer'а – как покорить Эльбрус за 11 дней
Редизайн Reindexer
Database benchmark
Hodo.dev
Устройство репликации в Reindexer
Reindexer - очень быстрая in-memory БД с полнотекстовым поиском
Опыт использования Reindexer

Станем лучше вместе

Мы будем очень признательны, если вы примете участие в нашем опросе.
Вместе мы сможем сделать продукт лучше

Хочу участвовать
Copied to clipboard