базы данных с открытым исходным кодом
25+ альтернативных вариантов баз данных с открытым кодом (Open Source)
Наверное, у каждого веб-разработчика есть любимые базы данных, с которыми он может спокойно работать, используя весь накопленный опыт.
Скорее всего, это одна из нижеприведенных:
Или иногда даже нечто еще легче, типа XML, текст и т.д.
То, что эти базы данных используют чаще всего, вполне объяснимо. С ними предоставляется отличная документация, у них большое число поклонников, которые всегда ответят вам на вопросы и дадут совет, их можно без труда использовать со всеми распространенными CMS, они достаточно просты в использовании, а также их советует большая часть компаний и сервисов, предоставляющих хостинговые услуги.
Но в мире есть много других баз данных, которые завоевывают известность изо дня в день, к тому же, у них даже могут быть преимущества перед теми программами, которые используете вы.
Мы представляем вашему вниманию список из 25+ альтернативных вариантов баз данных Open Source, которые вы вероятно захотите использовать, разрабатывая следующий проект:
Это высокопроизводительная база данных, ориентированная на документы (структуры типа JSON), которая распространяется с открытым кодом.
Программа может использовать драйвера для большинства популярных языков программирования (PHP,Python, Perl, Ruby, javascript, C++ и так далее).
Hypertable представляет собой высокопроизводительную систему хранения информации, разработанную для поддержки приложений, которым требуется максимальная производительность, гибкость и надежность.
Она была разработана по модели BigTable от Google и в основном сфокусирована на больших массивах информации.
Документально-ориентированная база данных с возможность запросов и индексирования в стиле MapReduce на javascript.
CouchDB предлагает простой API JSON, доступ к которому может быть осуществлен через любую среду, разрешающую HTTP-запросы.
Встроенный устойчивый Java-движок, который хранит данные в виде диаграмм, а не таблиц.
Neo4j предоставляет вам отличную гибкость в работе. Он может удерживать миллиарды параметров на одном отдельном компьютере, а также можно расширить функции за счет установки нескольких серверов.
Riak представляет собой почти идеальную базу данных для веб-приложений. Она сочетает в себе:
* децентрализованное хранилище ключей-значений
* гибкий движок map/reduce
* интерфейс дружественный с HTTP/JSON-запросами
Cassandra представляет собой гибкую базу данных второго поколения, которая используется такими гигантами как Facebook, Digg, Twitter, Cisco и другими.
Приложение нацелено на согласованную, устойчивую и доступную среду для хранения данных.
Memcached – это хранилище для небольших случайных фрагментов информации (строк, объектов) из запросов базы данных, запросов API или генерации страниц. Часто приложение используется для ускорения загрузки динамических веб-приложений за счет оптимизации запросов к базе данных.
Firebird – это база данных, работающая на Linux, Windows и различных UNIX-платформах.
Она гарантирует высокую производительность и полноценную поддержку языка для хранящихся процедур и схем.
Redis представляет собой продвинутую базу данных, разработанную на C, которую можно применять как в memcached, в отличие от обычных баз данных. Она поддерживает множество разных языков программирования и ее используют такие популярные проекты как GitHub или Engine Yard.
Существует также PHP-клиент под названием Rediska для управления базами данных Redis.
HBase разрабатывалась как хранилище в колонном формате. Приложение также может называться Hadoop database.
Проект нацелен на размещение очень больших таблиц.
Приложение оснащено межсетевым интерфейсом, который поддерживает XML, Protobuf и опцией кодировки бинарной информации.
Keyspace представляет собой хранилище ключей-значений, работающее в ОС Windows. Keyspace предлагает высокий уровень доступности посредством маскирующего сервера/сетевых ошибок и представляет собой отдельный доступный сервер.
4store представляет собой хранилище для баз данных и движок с поддержкой RDF-данных. Оно написано на ANSI C99, специально для работы на системах UNIX. Приложение предлагает высокую производительность, гибкость и стабильность.
MariaDB представляет собой обратно-совместимую, заменяемую ветку MySQL® Database Server.
Он включает в себя все известные движки хранения данных, которые распространяются с открытым кодом, а также движок хранилища Maria.
Ответвление от MySQL, которое нацелено на надежное оптимизирование баз данных для приложений Cloud и Net.
Движок для SQL-баз данных, который был написан на Java.
HyperSQL предлагает маленький и быстрый движок с таблицами в стиле in-memory и disk-based, а также поддерживает встроенные и серверные режимы.
К тому же, в приложении есть инструменты командной строки SQL и приложение опроса GUI.
MonetDB представляет собой систему баз данных для высокопроизводительных приложений в OLAP, GIS, XML-запросов и так далее.
Это движок хранения объектов и сервер приложений (работающий на Java/Rhino). Приложение предоставляет хранилище динамической даты JSON для интенсивной разработки богатых интернет-приложений на javascript.
eXist-db разработана с помощью технологии XML. Она хранит XML-данные в соответствии с моделью данных XML и предрасположен к функциям, и XQuery.
— Другие базы данных
Вам понравился материал? Поблагодарить легко!
Будем весьма признательны, если поделитесь этой статьей в социальных сетях:
Bagri — NoSQL база данных с открытым кодом, построенная поверх распределенного кэша
Сегодня хочу рассказать вам об open source проекте под названием Bagri. Bagri — это распределенная база данных документов (document database), или как сейчас модно говорить NoSQL база данных, написанная на Java и спроектированная с учетом требований, в основном используемых в корпоративном секторе, таких как высокая готовность, отказоустойчивость, масштабируемость и поддержка транзакционности.
Когда имеет смысл использовать Bagri
Систему хорошо использовать в первую очередь в тех случаях, когда документооборот основан на XML. Это финансы, логистика, страхование, медицина, и другие индустрии где формат документов, которыми обмениваются участники, строго определён корпоративными схемами XSD. Система позволяет не парсить каждый входящий документ, а класть его в базу как есть, а потом эффективно выполнять любые запросы над хранимыми документами используя мощный инструментарий XQuery 3.1.
Bagri построена поверх продуктов реализующих распределенный кэш, таких как Hazelcast, Coherence, Infinispan и других подобных систем. Именно за счет возможностей распределенного кэша Bagri поддерживает требования корпоративного сектора прямо из коробки. Распределенный кэш используется системой не только как хранилище данных, но и как распределенная система обработки этих данных, что позволяет эффективно и быстро обрабатывать любые большие объемы слабо структурированных данных. Транзакционность в системе решена с помощью алгоритма реализующего multi-version concurrency control
Данные в систему поставляются в виде документов XML или JSON. Есть так же возможность реализовать свое расширение к Bagri и зарегистрировать плагин для работы с новыми форматами документов, а так же с внешними системами хранения документов. Вспомогательный проект bagri-extensions содержит разрабатываемые командой расширения (на данный момент реализован коннектор к MongoDB).
В качестве языка запросов используется XQuery, в дальнейшем планируется так же поддерживать синтаксис SQL, данная задача имеется в Гитхабе проекта.
Bagri не требует предварительных знаний о схеме данных, а формирует словарь данных (уникальных путей в структурах документов) “на лету” во время парсинга входящих документов. Т.о. Bagri полностью schemaless и ему не требуется перестроения таблиц для новых типов документов, т.е. команды create table/add column ему не нужны в принципе.
Для общения между клиентом и сервером Bagri предлагает два API: стандартный XQJ API заявленый в JSR 225 и свой собственный XDM API, предоставляющий дополнительную функциональность, отсутствующую в XQJ. По сути, интерфейсы XQJ являются аналогом функционала, предоставляемого драйвером JDBC при работе с реляционными БД. Вместе с драйвером XQJ с системой поставляется официальный XQJ TCK, который можно запустить и удостовериться что драйвер проходит все тесты XQJ на 100%.
Как функционал распределенного кэша используется в Bagri
Все документы в Bagri хранятся в схемах, ближайшим аналогом в реляционной базе данных (RDBMS) является database. В настоящее время в качестве распределенного кэша, на котором строится система, используется Hazelcast и под каждую схему выделяется отдельный Hazelcast кластер. Схемы существуют независимо друг от друга, т.е. не происходит “борьбы” за ресурсы между схемами (в Hazelcast каждый кластер настраивается отдельно и имеет свой собственный пул ресурсов).
Мета данные документов (пространства имен, типы документов, уникальные пути) хранятся в соответствующих кэшах и реплицируются между всеми узлами кластера. Т.о. доступ на рабочих узлах к метаданным на чтение осуществляется максимально быстро. Сами данные документов отделены от метаданных и хранятся в распределенных кэшах, при этом данные, относящиеся к одному документу всегда хранятся на одном и том же узле. Есть еще кэши для хранения индексированных значений, для скомпилированных запросов, для журнала транзакций и конечно для результатов выполненных запросов.
Клиент Bagri подключается к серверу с помощью внутренних механизмов клиентского ПО кэша. XQuery запросы на клиенте упаковываются в задания и выполняются на серверных узлах посредством распределенного ExecutorService’а, предоставляемого платформой Hazelcast.
Результаты возвращаются клиенту через выделенный асинхронный канал (очередь Hazelcast)
Конфигурирование системы
Вся конфигурация системы хранится в двух файлах: access.xml для настроек ролей и пользователей и config.xml с настройками схем и расширений Bagri. Подробное описание формата этих файлов и всех используемых в них параметров можно прочесть в инструкции по инсталляции и конфигурации системы. Менять настройки схем можно напрямую в файлах, либо через JMX интерфейсы управления схемами развернутых на административном сервере Bagri.
Примеры работы с данными
Давайте теперь перейдем от теории к практике и рассмотрим, как мы можем работать с Bagri из нашего Java кода через интерфейсы XQJ.
Внутри спрингового контекста заявляем бин BagriXQDataSource и настраиваем четыре его основных параметра: адрес удаленного сервера, имя схемы, имя пользователя и пароль.
Получаем XQJ connection:
Затем считываем текстовый файл и на базе него создаем новый документ в Bagri:
Запрос выше вызывает внешнюю функцию store-document определенную в пространстве имен bgdm. Функция принимает на вход 3 параметра: uri, под которым будет сохранен документ, текстовое содержимое документа и необязательный набор опций, определяющий дополнительные параметры работы функции сохранения документа. Запрос валидируется на клиентской стороне и затем отправляется на сервер вместе с параметрами.
На серверной стороне пришедшему документу присваивается уникальный идентификатор. Далее, содержимое документа парсится в соответствии с указанным форматом документа и разбивается на пары путь/значения, при этом все уникальные пути сохраняются в реплицируемом справочнике путей документов. По окончании процедуры парсинга все содержимое документа, разбитое на такие пары, сохраняется в распределённых кэшах системы, а так же кэшируется заголовок документа со служебной информацией. Если в схеме зарегистрированы индексы, все индексируемые значения так же сохраняются в кэше индексов. Подтверждение об успешном сохранении документа передаётся назад на клиентскую сторону.
После того как мы благополучно сохранили наш документ в Bagri, давайте рассмотрим, как мы можем делать запросы к документам, хранящимся в системе.
Получаем подключение XQJ:
Подготавливаем запрос XQuery:
Задаём значение параметра поиска:
Выполняем запрос на сервере:
И просматриваем полученные результаты:
Я думаю будет так же интересно рассказать о том, что же происходит на сервере при выполнении данного кода:
Запрос проходит через XQuery процессор (в настоящее время это Saxon), в котором формируется дерево выполнения запроса (compiled query, XQueryExpression). Затем оно транслируется в набор простых запросов к кэшированным данным по указанным путям:
Эти простые запросы выполняются параллельно на всех узлах распределенного кэша системы. Найденные документы поставляются процессору на последующую обработку. По возможности используются индексы, если запрашиваемые пути были проиндексированы. После окончательной обработки полученных документов процессором результаты передаются клиенту назад через выделенный асинхронный канал.
Возможности расширения системы
Bagri предоставляет богатые возможности по расширению поведения системы. Например, можно подключить триггер на любое изменения состояния документа (before/after insert/update/delete) и выполнять в этих точках дополнительную бизнес-логику. Для этого достаточно реализовать интерфейс com.bagri.xdm.cache.api.DocumentTrigger, как показано в одном из примеров, поставляемых с системой (см. samples/bagri-samples-ext):
И затем зарегистрировать триггер в схеме в файле config.xml:
Как показано выше, мы зарегистрировали библиотеку (bagri-samples-ext-1.0.0-EA1.jar), содержащую реализацию триггера. Так же библиотеки могут содержать дополнительные функции, написанные на Java, которые можно вызывать из запросов XQuery, а так же расширения для обработки новых форматов данных или подключения к внешним системам хранения документов.
Варианты развертывания системы
Bagri может быть развернут следующими способами:
Визуальный административный интерфейс
Визуальный административный интерфейс Bagri на данных момент реализован, как плагин для VisualVM и позволяет:
Скриншоты административной консоли — см. ниже
Итак, мы рассмотрели самые базовые возможности распределенной базы данных документов Bagri. Надеемся что вас заинтересовал данный проект и вы попробуете его использовать в своей повседневной работе.
Я же со своей стороны постараюсь в ближайшее время написать для вас еще несколько статей, раскрывающих темы сравнения Bagri с другими похожими продуктами, такими как BaseX, MongoDB, Cassandra и возможности расширения системы путем использования встроенных API (DataFormat API и DataStore API).
Bagri, как и любому другому open source проекту, требуются разработчики на Java заинтересованные в данной тематике, так что если вам после прочтения данной статьи станет интересен проект, добро пожаловать на Гитхаб Bagri, там есть много действительно интересных задач.
5 База данных с открытым исходным кодом: обзор, сравнение и особенности
Затраты всегда являются проблемой при выборе базы данных, RDBMS от многонациональных корпораций может быть очень дорогостоящим и может принести вам много горя, если вы используете бесплатную услугу онлайн. В конечном итоге инструмент управления базами данных с открытым исходным кодом может оказаться очень удобным. Эти базы данных либо бесплатны, либо стоят очень дешево и предлагают большинство функций высокопроизводительных систем баз данных.
Инструменты базы данных с открытым исходным кодом
Вот 5 самых популярных программ с открытым исходным кодом базы данных и их сравнение:
1) MySQL
MySQL – самая популярная и широко используемая система управления реляционными базами данных, которая обеспечивает многопользовательский доступ к ряду баз данных. MySQL теперь принадлежит Oracle и использует язык последовательных запросов для управления базой данных. Его источник доступен по лицензии GNU и соглашениям о праве собственности. MySQL наиболее популярен среди разработчиков PHP и используется для веб-сайтов, веб-приложений и онлайн-сервисов.
MySQL доступен бесплатно для некоммерческих целей и может стоить менее 200 долларов США для коммерческого использования. Предлагает такие же функции, как MS-SQL, Oracle и IBM DB2, приложения для крупных баз данных.
2) PostgreSQL
Он разработан PostgreSQL Global Development Group и представляет собой ORDBMS (система управления объектными реляционными базами данных). Доступный для всех платформ Mac, Windows, Solaris и Linux по лицензии MIT, PostgreSQL поддерживает все свойства основных баз данных. PostgreSQL в настоящее время доступен как версия 9.1.
3) SQLite
SQLite – это небольшая легкая встроенная база данных, используемая в форматах файлов приложений, база данных для мобильных приложений и веб-сайтов. SQLite соответствует ACID-свойствам базы данных. Это быстрее и имеет простой в использовании API. SQLite поставляется с автономным клиентом интерфейса командной строки (CLI), который можно использовать для администрирования баз данных SQLite.
4) Беркли Д.Б.
Berkeley DB, принадлежащий Oracle, предоставляет базовые сервисы хранения для вашего приложения, какими бы сложными и уникальными ни казались ваши требования. API Berkeley DB доступны практически на всех языках программирования, включая ANSI-C, C ++, Java, C #, Perl, Python, Ruby и Erlang.
Программа, обращающаяся к базе данных, может самостоятельно решать, как данные должны храниться в записи. Berkeley DB не накладывает никаких ограничений на данные записи. Запись и ее ключ могут иметь длину до четырех гигабайт. Обратите внимание, что Berkeley DB не является полноценной СУБД.
5) Жар-птица
Firebird всегда был более полнофункциональным, чем MySQL, и, в отличие от PostgreSQL, всегда хорошо работал на Windows, а также на Linux и других вариантах Nix. Firebird предоставляет множество функций, доступных в коммерческих базах данных, включая хранимые процедуры, триггеры, оперативные резервные копии (резервные копии во время работы базы данных) и репликацию. База данных Firebird представлена в двух вариантах: классический сервер и супер сервер.
В наши дни данные намного сложнее, чем 10 лет назад. Хранение, обслуживание и управление данными основаны на технологии баз данных. Компании высокого уровня, такие как Microsoft, Oracle и IBM, с течением времени являются пионерами баз данных и производят одни из лучших систем баз данных. Возможно, MS-SQL, IBM-DB и Oracle являются наиболее востребованными системами баз данных, но вышеперечисленные системы баз данных с открытым исходным кодом богаты функциями и предлагают хорошую производительность. В тени некоторых корпоративных приложений они обычно игнорируются.
Я пропустил вашу предпочитаемую базу данных? Упомяните их в разделе комментариев ниже.
21) ЛУЧШИЙ Список Базы Данных
Ниже приведен отобранный список Top Free базы данных, с популярными функциями и ссылками для скачивания. Этот список сравнения содержит инструменты с открытым исходным кодом, которые могут иметь функции Freemium.
1) MySQL
MySQL — это реляционная база данных с открытым исходным кодом, которая работает на различных платформах, таких как Windows, Linux, Mac OS и т. Д.
Платформа: Linux, Windows и Mac.
Языки: C, Java, SQL, C ++, Perl, Python, Tcl и PHP.
Облачная версия: Да
Особенности:
Вердикт: MySQL может использоваться для упакованного программного обеспечения, а также для критически важных для бизнеса систем и крупных веб-сайтов.
2) PostgreSQL
PostgreSQL — это система управления базами данных с открытым исходным кодом корпоративного класса. Он поддерживает как SQL для реляционных, так и JSON для нереляционных запросов. Он поддерживается опытным сообществом разработчиков, которые внесли огромный вклад в создание высоконадежного программного обеспечения для управления базами данных.
Платформа: Mac, Windows и Linux.
Языки: PL / Tcl, PL / pgSQL, PL / Python и PL / Perl.
Облачная версия: Нет.
Особенности:
Вердикт: PostgreSQL позволяет создавать собственные типы данных и диапазон методов запросов. Вы можете запустить процедуру хранения на разных языках программирования.
3) MongoDB
MongoDB — это документно-ориентированная база данных NoSQL, используемая для хранения больших объемов данных. Это база данных, которая появилась в середине 2000-х годов. Он подпадает под категорию базы данных NoSQL.
Платформа: кроссплатформенная
Языки: C #, C, Java, C ++, Perl, Scala, Ruby и т. Д.
Облачная версия: Да
Особенности:
Вердикт: MongoDB позволяет вам проверить документ. Он не подходит для приложений, имеющих сложные транзакции.
4) OrientDB
OrientDB — это многомодельная база данных NoSQL с открытым исходным кодом, которая помогает организациям раскрыть возможности графических баз данных без развертывания нескольких систем для обработки других типов данных. Это поможет вам повысить производительность и безопасность при поддержке масштабируемости.
Платформа: Linux, Mac OS X, Windows, Solaris и HP-UX
Облачная версия: Да
Особенности:
Вердикт: OrientDB имеет возможность выполнять репликацию с несколькими мастерами, совместно использовать данные с использованием кластеров и автоматизировать распределенные запросы и транзакции.
5) MariaDB
MariaDB — это форк системы управления базами данных MySQL. Он создан его оригинальными разработчиками. Этот инструмент СУБД предоставляет возможности обработки данных как для небольших, так и для корпоративных задач.
Платформа: Windows, Linux и Mac.
Языки: C #, Java, C ++, Python и др.
Облачная версия: Да
Особенности:
Вердикт: MariaDB является альтернативой MySQL. Это обеспечивает высокую масштабируемость благодаря простой интеграции.