Встроенная Java-база данных с открытым исходным кодом nosql
Я разрабатываю продукт с открытым исходным кодом и мне нужны встроенные базы данных. Можете ли вы порекомендовать встроенную базу данных с открытым исходным кодом, которая...
- Может обрабатывать объекты размером более 10 ГБ каждый
- Имеет лицензию для встраивания (LGPL, а не GPL).
- Это чистая Java
- Является (предпочтительно) носкл. Sql может работать, но предпочитаю Nosql
Я просмотрел некоторые из СУБД для документов, например mongodb, но, похоже, они ограничены документами размером 4 или 16 МБ.
Berkeley DB выглядела привлекательно, но имеет лицензию GPL.
Sqlite3 привлекателен: хорошая лицензия, и вы можете компилировать с любым максимальным размером BLOB-объекта. Но это не Java. Я знаю, что драйверы JDBC существуют, но нам нужна чистая система Java.
Какие-либо предложения?
Спасибо
Стив
1 ответ
Хотя это старый вопрос, я недавно изучал этот вопрос и обнаружил следующее (по крайней мере два из них были написаны после того, как был задан этот вопрос). Я не уверен, как какой-либо из них обрабатывает очень большие объекты - и при 10 ГБ вам, вероятно, придется провести серьезное тестирование, поскольку я предполагаю, что немногие разработчики баз данных будут иметь в виду объекты такого размера для своих продуктов (только предположение). Я бы определенно подумал о том, чтобы хранить их на диске напрямую, просто ссылаясь на расположение файла в вашей базе данных.
(Между прочим, все приведенные ниже мнения довольно поверхностны, поскольку я не использовал их всерьез).
OrientDB выглядит как самый зрелый из трех, которые я нашел. Он выглядит как база данных документов и / или графиков и утверждает, что он очень быстрый (используя структуру данных "RB+Tree" - комбинацию деревьев B + и Red Black). Он претендует на то, чтобы быть очень быстрым и легким, без внешних зависимостей. Кажется, есть активное сообщество, разрабатывающее его, например, с большим количеством коммитов за последние несколько дней. Он также совместим со стандартом базы данных графов TinkerPop, который добавляет еще один уровень функций (например, язык запросов графов Gremlin). Он совместим с ACID, имеет REST и другие внешние API и даже веб-приложение для управления (которое, вероятно, может быть развернуто с вашей встроенной БД, но я не уверен).
Следующие два больше попадают в лагерь хранения простых значений ключей из N(OT)O(NLY) мира SQL.
JDBM3 является чрезвычайно минимальным хранилищем данных: у него есть хеш-карта, древовидная карта, древовидный набор и связанный список, которые записываются на диск через файлы с отображенной памятью. Он утверждает, что он очень легкий и быстрый, полностью транзакционный и активно развивается.
HawtDB выглядит очень просто и быстро - индекс на основе BTree или Hash сохраняется на диске с файлами, отображенными в память. Это (необязательно) полностью транзакционный. За последние семь месяцев (до конца марта 2012 года) никаких коммитов не было, и в списке рассылки не так много активности. Это не значит, что это не хорошая библиотека, но стоит упомянуть.
JDBM3 и HawtDB довольно минимальны, так что вы не собираетесь получать какие-либо модные графические интерфейсы. Но я думаю, что они оба выглядят очень привлекательно благодаря своей скорости и простоте.
Это все, что я нашел в соответствии с вашими требованиями. Кроме того, Neo4J великолепен - графическая база данных, которая сейчас довольно зрелая и очень хорошо работает во встроенном режиме. Однако он лицензирован по GPL/AGPL, поэтому может потребоваться платная лицензия, если только вы не можете открыть свой код тоже: http://neotechnology.com/products/price-list/
Конечно, вы можете также использовать базу данных H2 SQL с одной большой таблицей и без индексов!