Для чего нужна полностью управляемая СУБД?
От: Sinclair Россия https://github.com/evilguest/
Дата: 30.01.19 06:09
Оценка:
Наткнулся тут на упоминание ажно трёх СУБД на чистой Java: HSQLDB, H2, и Derby.

Сходу не смог найти никаких обоснований их существованию.
Ну, вот к примеру, https://stackoverflow.com/questions/3664882/pure-java-sqlite-library/3664957#3664957 упоминает два сценария:

- you can embed it to your software and it just works (HyperSQL)
— you can unit test your DB Schemas and actual queries quite easily with (almost) plain Java code. (всё семейство)


Есть ли ещё какие-то возможные соображения для использования чисто-управляемой СУБД?
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re: Для чего нужна полностью управляемая СУБД?
От: Stanislav V. Zudin Россия  
Дата: 30.01.19 06:17
Оценка: +1
Здравствуйте, Sinclair, Вы писали:

S>Есть ли ещё какие-то возможные соображения для использования чисто-управляемой СУБД?


Ну если упоминается встраивание, то можно предположить, что простота деплоя.
Типа SQLite, но для Явы.
_____________________
С уважением,
Stanislav V. Zudin
Re: Для чего нужна полностью управляемая СУБД?
От: Эйнсток Файр Мухосранск Странный реагент
Дата: 30.01.19 08:04
Оценка: 3 (2)
S> Наткнулся тут на упоминание ажно трёх СУБД на чистой Java: HSQLDB, H2, и Derby.

На C# их тоже три штуки. Одна оригинальная — deveeldb называется

S> Так зачем же, зачем, в эту ...


Потому что могут! Потому что бустрее написать свою, чем разобраться с существующей =)
Re[2]: Для чего нужна полностью управляемая СУБД?
От: Sinclair Россия https://github.com/evilguest/
Дата: 30.01.19 08:35
Оценка:
Здравствуйте, Эйнсток Файр, Вы писали:

S>> Наткнулся тут на упоминание ажно трёх СУБД на чистой Java: HSQLDB, H2, и Derby.


ЭФ>На C# их тоже три штуки. Одна оригинальная — deveeldb называется

Прикольно, спасибо!
А какие две остальные?
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re: Для чего нужна полностью управляемая СУБД?
От: Ночной Смотрящий Россия  
Дата: 30.01.19 09:41
Оценка: +1
Здравствуйте, Sinclair, Вы писали:

S>Есть ли ещё какие-то возможные соображения для использования чисто-управляемой СУБД?


Для джавы — отсутствие маршаллинга и платформозависимого кода.
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Re[3]: Для чего нужна полностью управляемая СУБД?
От: Ночной Смотрящий Россия  
Дата: 30.01.19 09:41
Оценка:
Здравствуйте, Sinclair, Вы писали:

ЭФ>>На C# их тоже три штуки. Одна оригинальная — deveeldb называется

S>Прикольно, спасибо!
S>А какие две остальные?

Если вопрос про RDBMS, то знаю еще VistaDB. А если всякие NoSQL, то их целая пачка, самая известная, наверное, RavenDB.
... << RSDN@Home 1.3.17 alpha 5 rev. 62>>
Re: Для чего нужна полностью управляемая СУБД?
От: alex_public  
Дата: 30.01.19 09:45
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Наткнулся тут на упоминание ажно трёх СУБД на чистой Java: HSQLDB, H2, и Derby.


Ничего себе ты отстал от мира. ))) Этого добра же давным давно полно, в том числе и весьма известного. Например та же Cassandra, на которой очень много серьёзных проектов.

И да, их потом частенько переписывают на C++ (см. например Scylla, для Cassandra), получая увеличение быстродействия в разы. Но при этом многие продолжают использовать изначальную Java разновидность (хотя они полностью совместимы), видимо из соображений "работает — не трогай!". )))

S>Сходу не смог найти никаких обоснований их существованию.

S>Ну, вот к примеру, https://stackoverflow.com/questions/3664882/pure-java-sqlite-library/3664957#3664957 упоминает два сценария:
S>

S>- you can embed it to your software and it just works (HyperSQL)
S>- you can unit test your DB Schemas and actual queries quite easily with (almost) plain Java code. (всё семейство)

S>Есть ли ещё какие-то возможные соображения для использования чисто-управляемой СУБД?

Ну встраиваемые СУБД — это вообще отдельный вопрос и вполне понятно зачем они написаны и существуют (всё же подключать нативный код в Java не особо удобно). Т.е. эти то даже никто переписывать не будет, т.к. они выполняют свою основную задачу именно своим Java-кодом.
Re[2]: Для чего нужна полностью управляемая СУБД?
От: · Великобритания  
Дата: 30.01.19 10:05
Оценка:
Здравствуйте, alex_public, Вы писали:

_>И да, их потом частенько переписывают на C++ (см. например Scylla, для Cassandra), получая увеличение быстродействия в разы. Но при этом многие продолжают использовать изначальную Java разновидность (хотя они полностью совместимы), видимо из соображений "работает — не трогай!". )))

Да нет тут никакого секрета: https://www.scylladb.com/pricing/
Просто в быстродействие кассандры (и вообще субд) упираются далеко не все, вот и сидят на бесплатном и более простом решении, чем go native.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Отредактировано 30.01.2019 10:05 · . Предыдущая версия .
Re[3]: Для чего нужна полностью управляемая СУБД?
От: Слава  
Дата: 30.01.19 10:09
Оценка:
Здравствуйте, ·, Вы писали:

·>Да нет тут никакого секрета: https://www.scylladb.com/pricing/


Она что, настолько забагована, что нужна поддержка? Кассандрой же пользуются под дичайшими нагрузками, поддерживают сами.
Re: Для чего нужна полностью управляемая СУБД?
От: vsb Казахстан  
Дата: 30.01.19 10:20
Оценка: -1
Здравствуйте, Sinclair, Вы писали:

S>Наткнулся тут на упоминание ажно трёх СУБД на чистой Java: HSQLDB, H2, и Derby.


S>Сходу не смог найти никаких обоснований их существованию.

S>Ну, вот к примеру, https://stackoverflow.com/questions/3664882/pure-java-sqlite-library/3664957#3664957 упоминает два сценария:
S>

S>- you can embed it to your software and it just works (HyperSQL)
S>- you can unit test your DB Schemas and actual queries quite easily with (almost) plain Java code. (всё семейство)


S>Есть ли ещё какие-то возможные соображения для использования чисто-управляемой СУБД?


Я один раз использовал в качестве "умного" временного файла. А так смысла лично я не вижу. Для тестов надо использовать настоящую БД, иначе это будут не тесты, а чёрт-те что. Для продакшна Sqlite давно стала стандартом де-факто и надо использовать именно её, пусть и через JNI, не важно, это слишком хороший проект, чтобы можно было сделать что-то лучше.
Re[3]: Для чего нужна полностью управляемая СУБД?
От: Эйнсток Файр Мухосранск Странный реагент
Дата: 30.01.19 21:32
Оценка: 3 (2)
S>А какие две остальные?

deveeldb — https://github.com/deveel/deveeldb
SharpHSQL — https://www.codeproject.com/Articles/1136/SharpHSQL-An-SQL-engine-written-in-C
StepsDB — https://github.com/jeske/StepsDB-alpha

Есть ещё несколько, но чем-то они мне не нравились (сейчас не помню), и в итоге больше всех понравилась deveeldb

EffiProz (под копирайтом)
csharp-sqlite (недостаточно многопоточная, запись в один поток)
SqlDbSharp (не реализован WHERE clause)
NetBase
Отредактировано 30.01.2019 21:34 Эйнсток Файр . Предыдущая версия . Еще …
Отредактировано 30.01.2019 21:33 Эйнсток Файр . Предыдущая версия .
Re: Для чего нужна полностью управляемая СУБД?
От: Иван Дубров США  
Дата: 01.02.19 06:30
Оценка: 1 (1) +4
Здравствуйте, Sinclair, Вы писали:

S>Сходу не смог найти никаких обоснований их существованию.

S>Ну, вот к примеру, https://stackoverflow.com/questions/3664882/pure-java-sqlite-library/3664957#3664957 упоминает два сценария:
S>

S>- you can embed it to your software and it just works (HyperSQL)
S>- you can unit test your DB Schemas and actual queries quite easily with (almost) plain Java code. (всё семейство)


На прошлой работе именно так H2 использовали: для тестов и для запуска продукта в режиме "разработки". Взял исходники, запустил, всё работает, что тесты, что продукт; не требует никакой настройки и установки. Особенно, с учётом того, что нативный код в Java не очень удобно встраивать, да плюс ещё разработчики то на Linux, то на Windows, то вообще на macOS. Тесты вообще in-memory вариант использовали, тесты кончились, база исчезла.

В реальных установках, конечно, использовали Oracle или SQL Server. Отличия H2 от "настоящих" СУБД, конечно, были, но выгода покрывала затраты (особенно, с учётом того что и так под две базы приходилось прогибаться).
Re: Для чего нужна полностью управляемая СУБД?
От: Osaka  
Дата: 09.02.19 16:53
Оценка: -2
S>Сходу не смог найти никаких обоснований их существованию.
S>Есть ли ещё какие-то возможные соображения для использования чисто-управляемой СУБД?
Избежать кросс-процессных и кросс-доменных вызовов. Как от клиента к СУБД, так и от СУБД к юзерским ХП.
Re: Для чего нужна полностью управляемая СУБД?
От: Cyberax Марс  
Дата: 16.02.19 04:31
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Есть ли ещё какие-то возможные соображения для использования чисто-управляемой СУБД?

Например, мы использовали для того, чтобы хранить локальную копию данных для того, чтобы каждый запрос не гонять на сервер. На сервере был Postgres, на клиенте H2, интерфейс был через Hibernate, так что запросы были портабельны.

Сейчас вот прямо использую для того, чтобы хранить копию погодных данных для всех погодных станций в мире непосредственно в виде одного большого файла, который зашивается в образ Docker.
Sapienti sat!
Re[2]: Для чего нужна полностью управляемая СУБД?
От: Блудов Павел Россия  
Дата: 08.03.19 09:56
Оценка:
Здравствуйте, vsb, Вы писали:

vsb>Я один раз использовал в качестве "умного" временного файла. А так смысла лично я не вижу. Для тестов надо использовать настоящую БД, иначе это будут не тесты, а чёрт-те что. Для продакшна Sqlite давно стала стандартом де-факто и надо использовать именно её, пусть и через JNI, не важно, это слишком хороший проект, чтобы можно было сделать что-то лучше.


Одно другому не мешает. Понятно, что перед релизом нужно поднять тестовый кластер, максимально приближенный к боевой базе.
Но это долго и дорого. А хочется гонять тесты часто и быстро.
Поэтому для разработки очень удобно иметь небольшую in-memory db с мимнимальными затратами на разогрев.
Re[3]: Для чего нужна полностью управляемая СУБД?
От: vsb Казахстан  
Дата: 08.03.19 10:49
Оценка:
Здравствуйте, Блудов Павел, Вы писали:

vsb>>Я один раз использовал в качестве "умного" временного файла. А так смысла лично я не вижу. Для тестов надо использовать настоящую БД, иначе это будут не тесты, а чёрт-те что. Для продакшна Sqlite давно стала стандартом де-факто и надо использовать именно её, пусть и через JNI, не важно, это слишком хороший проект, чтобы можно было сделать что-то лучше.


БП>Одно другому не мешает. Понятно, что перед релизом нужно поднять тестовый кластер, максимально приближенный к боевой базе.

БП>Но это долго и дорого. А хочется гонять тесты часто и быстро.
БП>Поэтому для разработки очень удобно иметь небольшую in-memory db с мимнимальными затратами на разогрев.

Никогда не получалось так. Это только если совсем не использовать фичи нормальной БД, чтобы оставалась совместимость. Мне больше нравится вариант с докер контейнером, в котором один раз инициализируются БД и схема, а перед каждым тестом он просто запускается и потом состояние выкидывается.
Re: Для чего нужна полностью управляемая СУБД?
От: novitk США  
Дата: 08.03.19 14:37
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Есть ли ещё какие-то возможные соображения для использования чисто-управляемой СУБД?


Их удобно использовать, если хочется поработать с реляционной моделью сформированной на ходу, например из логов, потоковых данных и прочих гетерогенных источников? В Питоне есть еще pandas, но иногда тот же sqlite из коробки проще и удобней. В управляемом языке нативных библиотеках избегают по понятным причинам.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.