Сервис RocksDB предоставляет микросервис key/value, который позволяет создавать кластеры для повышения производительности услуг. В области больших данных Cube расширяется за счет выполнения задач MapReduce/Spark для создания Cube, что обеспечивает предварительное агрегирование требуемых бизнесом сочетаний измерений и метрик. При получении запроса можно сразу обращаться к предвычисленным агрегированным данным, что позволяет избежать сканирования и вычислений над большими данными. Результаты Cube хранятся в mydb; на уровне Data Mart заменяет Redis, HBase, Apache Kylin.
Одиночный узел mydb представляет собой долгоживущий сервис хранения с большим объемом памяти, аналогичный версионированному Redis, поддерживающий интерфейсы для форматов string и JSON; решает проблему недостатка оперативной памяти при работе с большими объемами данных, позволяя использовать его как большой HashMap.
Используя память и файлы для хранения данных, производительность mydb будет ниже, чем у Redis. Для достижения лучшей производительности рекомендуется использовать SSD для хранения данных.В отличие от Redis, данные в mydb преимущественно хранятся на жестком диске, что предоставляет естественные преимущества при создании бэкапов — можно просто скопировать файлы.
mydb не будет заменять Redis; он служит как дополнение к нему. Из сравнения выше видно, что основные области применения mydb следующие:
Поэтому для случаев, где требуется высокая производительность, но объем данных небольшой, рекомендуется использовать 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
git clone https://github.com/supermy/rocksdb-service
mvn -DskipTests=true package
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 )