LINUX.ORG.RU

Сразу под несколько баз данных (mysql + sqlite)


0

1

Нужно сделать так, чтобы приложение могло работать с mysql и sqlite.

Спецы по sqlite, какие подводные камни есть при этом? Какие ормы и прочие либы надо юзать, чтобы разница между ними была незаметна? Есть ли какие-нибудь замечания/рекомендации по поводу Hibernate? (технология реализации - java6, с большой неохотой можно поизвращаться с си с крестами)

★★★★☆

Последнее исправление: stevejobs (всего исправлений: 1)
Ответ на: комментарий от Kakerlak

Очень хотелось бы готовых рецептов, как можно писать используя все возможности баз и одновременно сохранять кроссбазовость.

stevejobs ★★★★☆
() автор топика
Ответ на: комментарий от stevejobs

К сожалению готовых рецептов нет. Но могу дать совет - пишите под SQLite. В большинстве случаев этот код будет работать и в других базах.

Kakerlak
()
Ответ на: комментарий от Kakerlak

> Но могу дать совет - пишите под SQLite.

всё-таки, наверное правильнее писать не «под SQLite», а «под библиотеку Х». Потому что когда пишешь, всё равно ведь на уровне эмуляции базы данных будут присутствовать все высокоуровневые фичи, даже если в реальной базе их нет. Вопрос в количестве и сложности кода эмуляции нужных фич. Я просто еще не представляю, что там кроме секвенций придется эмулировать, вот и советуюсь :)

stevejobs ★★★★☆
() автор топика

Вообще совет - держитесь ближе к стандарту. Например, MySQL понимает INSERT table VALUES, а sqlite требует INSERT _INTO_ table.

А разве entity classes в Java нельзя использовать?

amomymous ★★★
()

работать можно по разному, поэтому необходимо уточнить требования к приложению, без этого разговор будет беспредметным
например если нужно сетевое взаимодействие, то sqlite не подходит

x905 ★★★★★
()

Ну и? Юзай Hibernate, и все. В чем проблема-то?

dizza ★★★★★
()
Ответ на: комментарий от x905

> например если нужно сетевое взаимодействие, то sqlite не подходит

подходит, но для него нужно будет писать сетевую обертку. И потом уравновешивать апи между исходно сетевой базой данных и sqlite+сетевой оберткой, чтобы в апи самого высокого уровня разницы уже не было видно совсем.

программа - планировщик задач типа Microsoft Project. Основная задача - перемалывание данных из бд, запросы на оптимальные расчеты выполнимости задач с разными условиями. Должна уметь работать как сетевой сервер (mysql, postgres) и локально (вырожденный случай сетевого сервера на одного клиента, sqlite). Должна быть миграция сетевой бд в локальную и наоборот. (На высоком уровне будет еще и система контроля версий на основе changeset'ов, но это отдельная песня). Объем данных небольшой (максимум единицы гигабайт).

stevejobs ★★★★☆
() автор топика
Ответ на: комментарий от Kakerlak

>Учтите, что в SQLite несколько обрезанный SQL.

Да и синтаксис даже у простых операций нередко отличается.

...

Тут по хорошему именно ORM нужен со сменным бэкендом.

KRoN73 ★★★★★
()

как там в Джаве не знаю, но очень рекомендую юзать RubyOnRails, в его ORM'е ActiveRecord поддерживается MySQL и SQLite. Хотя если Java все-таки обязательна, то все это дело можно запустить под JRuby

anonymous
()
Ответ на: комментарий от anonymous

как там в Джаве не знаю, но очень рекомендую юзать python, в его ORM'е SQLAlchemy поддерживается MySQL и SQLite. Хотя если Java все-таки обязательна, то все это дело можно запустить под Jython.

Zubchick
()

>Нужно сделать так, чтобы приложение могло работать с mysql и sqlite.
Эммм... А в чем, собсно, вопрос?

Спецы по sqlite, какие подводные камни есть при этом

А при чем здесь оно?

Какие ормы и прочие либы надо юзать, чтобы разница между ними была незаметна?

Имхо орм - это некошерно :) Но, даже банальный hibernate поддерживает и mysql и sqlite.

замечания/рекомендации по поводу Hibernate

Все это есть в соотв. багтрекерах

yaws
()
Ответ на: комментарий от x905

> проблемы при разработки под разные бд вижу, а профита нет

профит в том, что юзвери посмотрят на postgres в зависимостях и взвоют: ааа, десктопному приложению нужна большая БД, ужас какой, не буду эту фигню ставить.

а если будет sqlite то они и не догадаются ничего.

(была б моя воля, я бы вообще диван-кровать или риак заюзал, но... см выше).

stevejobs ★★★★☆
() автор топика
Ответ на: комментарий от stevejobs

а если они увидят в зависимостях mysql, то выть они не будут ?
зачем тогда нужна mysql, если приложение только десктопное?

x905 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.