BangDB Server

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 19:07, 30 января 2019.
BangDB Server
Iqlect.png
Разработчики: IQLECT
Выпущена: 19 September 2017 года; 2 years ago (2017-09-19)
Постоянный выпуск: 1.5.2
Предыдущий выпуск: 0.9
Состояние разработки: Active
Написана на: C++ (язык программирования),C Sharp
Операционная система: Windows,Linux,MacOS
Платформа: X86-64
Локализация: Английский язык
Тип ПО: DBMS (Database Management System)
Лицензия: Commercial license
Веб-сайт bangdb.com/bangdb_server.php

Bangdb - это удобное хранилище данных NoSQL. Цель bangdb - быть быстрым, надежным, масштабируемым и простым в использовании хранилищем данных для различных служб управления данными, необходимых приложениям. Bangdb выпускается в таких вариантах, как Embedded In memory [1], Network, Distributed data grid. Bangdb является конкурентным продуктом и максимально эффективно выполняет параллельные операции. Эта модель хороша для обмена данными с несколькими приложениями или экземплярами приложения. Типичный вариант использования этой модели - Кэш процессора поверх базы данных, сетевое хранилище данных и т.д. [Источник 1]

Особенности

Общий сервер

BangDB работает как сервис, и клиенты подключаются к нему по сети. Один и тот же экземпляр базы данных используется всеми клиентами, и клиенты могут подключаться к базе данных одновременно. База данных гарантирует, что клиенты обслуживаются эффективно и без ошибок.

Постоянное хранение и IMDB

BangDB может быть настроен для использования как Кэш процессора или постоянного хранилища. С одной стороны, пользователь может настроить bang db так, чтобы все данные находились в памяти и не переходили на диск для какой-либо операции. Но при закрытии базы данных пользователь может принять решение сделать снимок данных в памяти и сохранить его на диске для дальнейшего использования. Данные постоянно и часто сбрасываются на диск, чтобы очистить свободное место в пуле буферов. Непрерывная и последовательная очистка журнала обеспечивает долговечность данных, даже если сами данные не записываются на диск большую часть времени, пока не потребуются.

Безопасность сервера

Ядро BangDB реализует журнал записи логов и распознаёт его как часть конфигурации для базы данных. Когда требуется длительное хранение данных, пользователь должен включить журнал и установить частоту сброса журнала в соответствии с необходимостью. База данных заботится о частой записи журнала на диск, поэтому в случае, если данные не записываются на диск, и происходит сбой БД, BangDB восстанавливает данные при перезапуске. BangDB также часто проверяет журнал, чтобы ускорить процесс восстановления данных, воспроизводя журнал в случае сбоя БД / вычислительной машины.

Репликация

Репликация данных включена по умолчанию. Пользователь также может отказаться от репликации, правильно настроив конфигурацию, но в сценарии NetworkDB рекомендуется включить репликацию данных. Пользователь может также пойти на репликацию журнала (синхронизация или асинхронность) помимо репликации данных. Репликация данных, особенно в режиме синхронизации, позволяет пользователю переключаться между главным и резервным режимом во время выполнения задачи.

Master-Slave

У Master [2] может быть много резервных / подчиненных устройств, и каждый может общаться друг с другом. Синхронизация в режиме ожидания не мешает узлам взаимодействовать с Master. При необходимости пользователь может выбрать чтение из ведомого устройства и запись в ведущее устройство. Начальная синхронизация данных со вторичными или ведомыми устройствами может происходить во время выполнения передачи данных. Это означает, что, в то время как ведущий все еще передает данные нескольким клиентам, многие ведомые вместе могут приходить и синхронизировать данные с ведущим. Master отправляет различные файлы и информацию нескольким Slave, чтобы обновлять их. С другой стороны, подчиненные устройства могут быстро стать доступными для клиентов, хотя часть репликации может все еще выполняться. Такая конструкция повышает производительность и доступность главного и подчиненного устройств даже во время процесса синхронизации.

Высокоуровневая многопоточность

Многопоточность в BangDB распространяется на все слои. BangDB предназначен для использования нескольких ядер на машине, позволяя нескольким потокам работать параллельно с эффективным механизмом блокировки. Но пользователь может выбрать количество потоков, которые должны выполняться параллельно. С другой стороны, сервер является высококонкурентным и способен обрабатывать тысячи соединений в определенный момент времени с минимальными издержками. BangDB реализует epoll в Edge-триггерном режиме для обработки клиентских запросов с эффективной поэтапной управляемой архитектурой для выполнения действий по каждому запросу в асинхронном режиме. BangDB следует поэтапной архитектуре, управляемой событиями, для создания хорошо обусловленного, масштабируемого и доступного сервера, который может допускать огромное количество одновременных подключений и продолжать обслуживать запросы ожидаемым образом даже в чрезвычайно загруженном сценарии, что очень трудно достичь с помощью обычной архитектуры.

Аппаратные особенности

BangDB предназначен для работы на аппаратном оборудовании. Пользователь может добавить SSD (Solid-State Drive) по соображениям производительности, особенно для хранения системного журнала на SSD. Но в типичном сценарии это не требуется, поскольку BangDB дает очень высокую производительность на аппаратном оборудовании.

API

BangDB поддерживает как приложения с расширенной функциональностью (Thick client)[3] , так и приложения, передающие задачи на сервер (Thin client)[4] . Первая версия будет поддерживать только Thick client, где каждый клиент должен будет связаться с библиотекой, чтобы общаться с сервером. Хотя API для Thick client будет таким же, как и во встроенной или кластерной (будущей) версии, чтобы обеспечить одинаковый код во всех случаях, будущая версия BangDB Network будет поддерживать подключение клиентов с использованием HTTP для операций GET, PUT DELETE.

Методы доступа

Опции BTree и Hash для методов доступа к данным будут поддерживаться в NetworkDB. Пользователь может выбрать один из них в зависимости от своих требований, установив соответствующий флаг в файле конфигурации.

Конфигурации

BangDB имеет только один файл конфигурации, а именно bangdb.config, и пользователь может настроить многие аспекты базы данных, используя этот файл конфигурации.

Протокол сообщений

BangDB реализует свой собственный протокол сообщений для их отправки и получения. BangDB внедряет собственный механизм RPC [5]с настраиваемым форматом сообщений. Это делается для обеспечения производительности и надежности различных компонентов в различных сценариях.

Управление памятью

Сервер BangDB реализует различные виды управления памятью. Помимо типичного буферного пула для BangDB, он также управляет всей памятью, необходимой серверу для различных действий. Это гарантирует, что серверу будет хватать памяти, поэтому, когда он будет находиться под нагрузкой, он будет просто ждать, пока не освободится память, которая даже в условиях высокой нагрузки не должна быть высокой. Это также гарантирует, что сервер никогда не отклоняет запросы клиентов из-за нехватки памяти, а просто отправляет их в режим ожидания до тех пор, пока память не станет доступной (время ожидания обычно всегда мало). Клиент, в свою очередь, может применить время ожидания для завершения запроса, что гарантирует, что клиент не будет ждать запрос вечно. Всё это помогает улучшить общую производительность.

Тайм-аут

Пользователь может установить время ожидания для каждого соединения для различных операций. Сервер предпримет соответствующие шаги для соблюдения времени ожидания, установленного пользователем. [Источник 2]

Запуск сервера

  1. Запустите сервер.
     $ >./ bangdb-сервер
  2. Откройте новый терминал и перейдите в каталог client-linux.
    $  >cd client-linux 
  3. Чтобы протестировать сервер с помощью поставляемых файлов test / bench, перейдите в каталог bangdb_bench и скомпилируйте стенд, используя предоставленный файл build.sh.

После этого запустите тестовый файл.

$ >cd bangdb_bench
$ > bash build.sh
$ > bash runapp.sh

[Источник 3]

Заключение

Рассмотрев BangDB Server, можно сказать, что данный продукт - отличное программное обеспечение, наиболее эффективное в высоконагруженных системах.

Примечания

Источники

  1. BangDB - NoSQL for Real Time Performance // findbestopensource [2004-2019]. Дата обновления 14.08.2018 URL: https://www.findbestopensource.com/product/bangdb (дата обращения: 12.01.2019)
  2. BangDB Server- Network Cluster (Master Slaves Model) // iqlect [2014-2019]. Дата обновления 22.03.2018. URL: http://bangdb.com/bangdb_server.php (дата обращения: 12.01.2019)
  3. BangDB //github [2008-2019]. Дата обновления 18.04.2015. URL: https://github.com/sachin-sinha/BangDB/tree/master/Bench/Server/linux/bangdb_server_cpp (дата обращения: 12.01.2019)

Ссылки