О проекте

Распределенная мультимодельная многопоточная система управления базами данных в памяти
Содержание
  1. О проекте
  2. Области применения
  3. ЧАВО

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

Параметры сравненияfluidbKeyDB
Модели данных“Мультимодельная”, “Темпоральная”, “Ключ-значение”
Поддержка SQLЕсть (в виде внешне загружаемого модуля fluSQL)Нет
Сервер приложенийЕстьНет
Тип репликацияРепликация с несколькими источниками (Multi-source replication)Нет
Наличие триггеровПо умолчанию нет, но возможно собственная реализация на языке luaНет
Наличие установочных скриптовДаНет
Язык(и) на котором написана субдGo, Erlang, bash,С++, bash
Внешние ключи (Foreign Keys)НетНет
Язык для написания внутренних скриптов, расширяющий базовые функциональные возможностиSQLlua
Операционная системаBSD
Linux
MacOS X
BSD
Linux
MacOS X
Windows
Алгоритм для решения задач консенсусаRaftPaxos

Благодарности

  • 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 бита увеличиваются, чтобы получить номер версии временной метки ключа.