
Распределенная мультимодельная многопоточная система управления базами данных в памяти
Fluidb — это распределённая многопоточная с возможностью хранения неизменяемых данных система управления базами данных в оперативной памяти с открытым исходным кодом (лицензия BSD-3-Clause), распространяемая по лицензии BSD-3-Clause, исходный код которой также распространяется по лицензии BSD-3-Clause.
Наша цель: «Создать многопоточное, распределённое высокопроизводительное приложение на основе модульной архитектуры, максимально простое в использовании с хранением неизменяемых данных»
Системные требования
- Процессоры: Intel или AMD
- Разрядность процессора: 64-bit
- Объём ОЗУ: 1 ГБ (или больше)
- Количество узлов в кластере: 3 (настоятельно рекомендуется)
- Операционная система: Только UNIX-подобная (Linux, BSD, MacOS X)
- Дополнительные утилиты: curl или wget (для установки приложения из скриптов)
Почему fluidB?
Ниже приведена сравнительная таблица, сравнивающая fluidb c популярной субд KeyDB
Параметры сравнения | fluidb | KeyDB |
---|---|---|
Модели данных | “Мультимодельная”, “Темпоральная”, | “Ключ-значение” |
Поддержка SQL | Есть (в виде внешне загружаемого модуля fluSQL) | Нет |
Сервер приложений | Есть | Нет |
Тип репликация | Репликация с несколькими источниками (Multi-source replication) | Нет |
Наличие триггеров | По умолчанию нет, но возможно собственная реализация на языке lua | Нет |
Наличие установочных скриптов | Да | Нет |
Язык(и) на котором написана субд | Go, Erlang, bash, | С++, bash |
Внешние ключи (Foreign Keys) | Нет | Нет |
Язык для написания внутренних скриптов, расширяющий базовые функциональные возможности | SQL | lua |
Операционная система | BSD Linux MacOS X | BSD Linux MacOS X Windows |
Алгоритм для решения задач консенсуса | Raft | Paxos |
Благодарности
- Martin Sumner, Хочу выразить огромную благодарность за все, что Вы сделали!!! Спасибо!!!
- Josh Baker Хочу выразить свою признательность за все ваши старания!!!
Области применения
- Агрегация логов
- Система кеширования
- Сервер очереди
- Паттерн “Центральный диспетчер” (для шардирования)
- Платформа виртуализации-Решение, получающее данные из нескольких источников и позволяющее обрабатывать их как единую базу данных json.
- Платформа для построения статический web-сайтов
ЧАВО
Ниже представлены ответы на часто задаваемые вопросы по проекту fluidB
ЧАВО- Какова основная идея вашего проекта? Ключевая идея нашего продукта заключается в том, что он решает задачи обработки, хранения и анализа большого количества постоянно поступающих данных, в основном данных геолокации. Он предназначен в первую очередь для разработчиков прикладного программного обеспечения и администраторов баз данных. Наша главная цель — предоставить пользователю простой, но гибкий и функциональный инструмент для работы с данными.
- Что такое мультимодельная система управления базами данных?
Мультимодельная база данных — это такая база данных, которая позволяет хранить данные, используя разные схемы хранения данных. Например, наряду с реляционными данными (хранящимися в виде таблиц) данные могут храниться в виде графов, ассоциативного массива и т. д. Таким образом достигается невероятная гибкость хранения данных, в зависимости от типа данных, используется наиболее подходящий инструмент для его хранения и обработки.
- Существует ли реализация fluidB для операционной системы Windows?
Нет, реализации FluidB для операционной системы Windows нет.
В виду того что, наше приложение является клиент-серверным, то оно ориентировано на использование на серверах, а подавляющее большинство серверов работает под управлением операционной системы Linux. Поэтому мы не планируем выпускать версию для Windows в будущем.
- fluidB есть в стандартных репозиториях Linux?
Пока, к сожалению нет. Fluidb по-прежнему распространяется в виде исходного кода и готовых к запуску бинарных файлов для ОС Linux. В ближайшее время мы планируем выпустить пакеты fluidb для ОС Linux семейства Debian, Red Hat и Arch Linux.
- Есть ли докер образ проекта?
Нет, docker-образа нет, потому что docker, как и любая среда виртуализации, образует дополнительный слой абстракции, усложняющий как сам процесс разработки, так и процесс работы программы. Наша цель: «Создать высокопроизводительную субд, максимально простую в эксплуатации».
- Почему вы уверены, что сможете создать качественный, конкурентоспособный программный продукт, который нужен людям?
По причине того факта, что наш программный продукт уже используется в качестве бэкенда в проекте ws-stickleback “Колюшка белого моря или рыбка моей мечты” факультета кафедры ихтиологии и гидробиологии СПбГУ.
- Есть ли платная версия вашего программного продукта с расширенным платным функционалом?
Пока что такой версии нет.
- Как используется авторизация?
В традиционном понимании авторизации нет, так как fluidB не предназначен для публичного показа. Это приложение, которое работает в интернете, поэтому авторизации на данном этапе у нас нет.
- Как расшифровывается название вашего продукта?
Название нашего проекта расшифровывается следующим образом: FluidB, это отсылка к английскому слову «fluid», что означает «флюид» — физический термин, означающий «состояние вещества с параметрами выше критического», что очень точно характеризует наш продукт.
Под критическим состоянием вещества понимается такое состояние, при котором исчезает разница между его жидкой и паровой фазами. Это иллюстрируют цвета логотипа: Сначала нагрузка на приложение отсутствует (синий математический символ «Замкнутого интеграла по контору»), затем она резко возрастает (три красных последовательных буквы), затем нагрузка начинает снижаться и равномерно распределяться. оранжевый символ- изменённый символ дифференциала, показывающий скорость изменения значения переменной при балансировке, и, наконец, она равномерно распределяется и становится нормальной (седьмой синий символ). В нашем случае это следует трактовать так: благодаря нашему продукту стирается грань между низкими нагрузками и очень высокими нагрузками, т.е. наш продукт помогает сбалансировать нагрузку.
- Какой тип репликации у вас используется?
У нас реализован тип репликации, который называется Active-Active (Active-Replica) многоактивный механизм, каждая реплика может быть настроена для записи, а не только для чтения, при этом реплики синхронизируют данные друг с другом. Основные особенности:
- Каждая реплика имеет метку uuid, используемую для удаления круговой репликации.
- Недавно добавьте API rreplay, упакуйте инкрементные команды в команды rreplay и перенесите локальный uuid
- Ключ, значение плюс номер версии метки времени используется в качестве проверки конфликта. Если такой же ключ существует локально, а номер версии метки времени больше, чем синхронизированные данные, новая запись не выполняется. Текущая временная метка сдвигается на 20 бит влево, а последние 44 бита увеличиваются, чтобы получить номер версии временной метки ключа.