1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/supermy-rocksdb-service

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
README.md 11 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
Отправлено 06.03.2025 18:35 7815b94

mydb

Статус сборки

Краткое описание

  • Сервис RocksDB предоставляет микросервис key/value, который позволяет создавать кластеры для повышения производительности услуг. В области больших данных Cube расширяется за счет выполнения задач MapReduce/Spark для создания Cube, что обеспечивает предварительное агрегирование требуемых бизнесом сочетаний измерений и метрик. При получении запроса можно сразу обращаться к предвычисленным агрегированным данным, что позволяет избежать сканирования и вычислений над большими данными. Результаты Cube хранятся в mydb; на уровне Data Mart заменяет Redis, HBase, Apache Kylin.

  • Одиночный узел mydb представляет собой долгоживущий сервис хранения с большим объемом памяти, аналогичный версионированному Redis, поддерживающий интерфейсы для форматов string и JSON; решает проблему недостатка оперативной памяти при работе с большими объемами данных, позволяя использовать его как большой HashMap.

Основные характеристики

  • Большой объем хранилища, поддерживает хранение сотен гигабайт данных
  • Онлайн-мониторинг через WEB
  • Удобный RESTful API
  • Лёгкий поиск ключей по префиксам

Применимые сценарии использованияЕсли ваши данные имеют большой объем и Redis не может справиться с ними, например, более 50 ГБ, или если ваши данные очень важны и не должны быть потеряны при отключении питания, то использование mydb поможет решить эти проблемы. На практике производительность mydb составляет примерно 50 % от производительности Redis.## Преимущества:

  • Больший объем хранилища: у mydb нет ограничений по объему памяти как у Redis, максимальный размер хранилища равен размеру доступного пространства на диске.
  • Быстрое восстановление базы данных: при записи данных они записываются на диск, поэтому даже если узел выходит из строя, при перезапуске mydb не требуется загружать все данные обратно в память, достаточно восстановить состояние до сбоя.
  • Быстрая процедура резервного копирования: скорость резервного копирования mydb примерно такая же, как у команды cp (копирование файлов данных и последующее восстановление состояния занимает некоторое время), что делает процесс резервного копирования быстрым для больших баз данных, что лучше решает вопрос полной синхронизации между основным сервером и резервным.
  • Высокий уровень сжатия: данные в mydb по умолчанию сжимаются, что обеспечивает соотношение сжатия 5-10 раз по сравнению с Redis. Поэтому объём данных, хранящихся в mydb, значительно меньше, чем в Redis.
  • Экономическая эффективность: вместо дорогостоящих затрат на оперативную память для Redis, mydb использует дисковое хранилище, что делает его крайне экономически эффективным.

Недостатки:

Используя память и файлы для хранения данных, производительность mydb будет ниже, чем у Redis. Для достижения лучшей производительности рекомендуется использовать SSD для хранения данных.В отличие от Redis, данные в mydb преимущественно хранятся на жестком диске, что предоставляет естественные преимущества при создании бэкапов — можно просто скопировать файлы.

Может ли mydb заменить Redis? Почему?

mydb не будет заменять Redis; он служит как дополнение к нему. Из сравнения выше видно, что основные области применения mydb следующие:

  • Когда объем бизнес-трафика невелик, а использование Redis слишком дорого по затратам на память;
  • При больших объёмах данных, когда Redis не может вместить все данные на одном сервере;
  • В случае частых запросов высокой временной сложности, вызывающих периодическое блокирование Redis.

Поэтому для случаев, где требуется высокая производительность, но объем данных небольшой, рекомендуется использовать Redis.

Ситуация, когда в рамках одного проекта или продукта используются одновременно mydb, Redis и Redis-cluster.

Быстрый запуск

Для быстрого старта mydb необходима среда JDK 8.

# 1. Распаковать архив
tar zxf mydbX.Y.Z_bin.tar.gz
# 2. Перейти в директорию распакованного архива
cd mydbX.Y.Z
# 3. Запустить mydb:
sh start.sh

Установка и компиляция

  1. Установите JDK 8 и скачайте исходники.
git clone https://github.com/supermy/rocksdb-service
  1. Установите Maven и скомпилируйте проект.
mvn -DskipTests=true package
  1. Перейдите в директорию с исполняемым файлом.``` sh start.sh для запуска

4. Отслеживание логов
tail -f mydb.log


## Использование
Если приложение не удалось запустить, попробуйте изменить application.yaml, чтобы переопределить порты запуска и пути сохранения базы данных.
RESTful API поддерживает JSON


    Одиночное управление данными

    PUT: curl -XPUT "http://127.0.0.1:9008/api/mydb/abc" -d '{"a":12,"b":"c"}'
    GET: curl http://127.0.0.1:9008/api/mydb/abc
    DELETE: curl -XDELETE "http://127.0.0.1:9008/api/mydb/abc"

    Обработка множества данных в формате JSON с использованием Flume для массового производства и потребления данных.
    Определенный формат: '{a: {"a": 1}, b: {b: 1}}', где a и b являются первичными ключами, а {"a": 1} и {b: 1} — это данные.

    POST: curl -XPOST "http://127.0.0.1:9008/api/mydb" -d '{a: {"a": 1}, b: {b: 1}}'
    DELETE: curl "http://127.0.0.1:9008/api/mydb?pre=a" для массового удаления данных по префиксу ключа
    GET: curl "http://127.0.0.1:9008/api/mydb?pre=a" для запроса данных по префиксу ключа


    Бэкап и восстановление данных

    Просмотр состояния данных:
        http://127.0.0.1:9000/rocksdb/status
    Создание данных:
        http://127.0.0.1:9000/rocksdb/gendata
    Бэкап данных:
        http://127.0.0.1:9000/rocksdb/backdb
    Удаление конкретного бэкапа данных:
        http://127.0.0.1:9000/rocksdb/delbackdb?backid=11
    Чистка бэкапов данных, оставляя несколько последних:
        http://127.0.0.1:9000/rocksdb/purebackdb?amount=2
    Восстановление последнего бэкапа данных:
        http://127.0.0.1:9000/rocksdb/restorbackdb
    Восстановление указанного бэкапа данных:
        http://127.0.0.1:9000/rocksdb/restorbackdbid?backid=14```
    
    
## Другие связанные возможности```
Можно использовать F6 (Nginx + Lua) для аутентификации.

Можно использовать F6 (Nginx + Lua) для шифрования и расшифровки данных.

Можно использовать F6 (Nginx + Lua) для сжатия и разархивирования данных.

Обратите внимание на оптимизацию операционной системы и сети.


## Производительность

### Тестовое окружение:
Один сервер и один клиентский виртуальный компьютер с одинаковым оборудованием:
Процессор: 4 ядра
Память: 4 ГБ
Операционная система: Debian 8.7
### Тестовый интерфейс:

### Метод тестирования:
ab -c 200 -n 8000 "http://127.0.0.1:9008/api/mydb?pre=a"

### Результаты тестирования:
<img src="https://github.com/supermy/rocksdb-service/raw/master/mydb-test.png" height = "400" width = "480" alt="Результаты тестирования">


## Документация
1. [Wiki](https://)


## Контакты

QQ группа: 201108549

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/supermy-rocksdb-service.git
git@api.gitlife.ru:oschina-mirror/supermy-rocksdb-service.git
oschina-mirror
supermy-rocksdb-service
supermy-rocksdb-service
master