Форум программистов, компьютерный форум, киберфорум
Наши страницы
Java и базы данных
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.90
Perun
5 / 5 / 3
Регистрация: 22.02.2008
Сообщений: 137
#1

Выбор базы для локального и удалённого использования - Java БД

01.06.2013, 00:29. Просмотров 1409. Ответов 17
Метки нет (Все метки)

Задача - документооборот и интеграция с различными сервисами. Софтина работает оффлайн и синхронизируется с основоной базой. Сейчас применяем H2 и Postgres. Приходится синхронизироваться неудобно, кто сталкивался с такой тривиальной задачей - поделитесь пожалуйста
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.06.2013, 00:29
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Выбор базы для локального и удалённого использования (Java БД):

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

Выбор библиотеки для использования в проекте
Гуру, подскажите, пли-и-из, имеет ли смысл использовать в МОЕМ проекте...

Код для использования базы данных PostgreSQL не работает
нашел в папке Examples код для использования базы данных PostgreSQL, но выдает...

Выбор СУБД для портативного использования (free)
Добрый день. Нужно по быстрому состряпать простенькое портативное...

Выбор роутера MikroTik для домашнего использования
Всем привет,решил отказаться от роутера предоставляемого провайдером т.к. он...

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

17
mutagen
2564 / 2237 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
01.06.2013, 01:42 #2
Могу поделиться с вами приятным ощущением наступающих выходных.
чем смог тем помог.
0
edwin3d
91 / 91 / 10
Регистрация: 18.05.2013
Сообщений: 265
01.06.2013, 10:31 #3
Ну как-бы на самом деле задача не настолько тривиальна, как кажется на первый взгляд ... из коробки и относительно прозрачно есть решений у Oracle ... как раз для синхронизации.
Но хотелось бы понять иной момент, а что именно у Вас лично "синхронизироваться неудобно" ?
0
Perun
5 / 5 / 3
Регистрация: 22.02.2008
Сообщений: 137
01.06.2013, 13:51  [ТС] #4
Предполагается в локальной БД хранить справочные данные и обновлять их - синхронизировать с Postgres. + Локально накапливается информация о заявках - которые потом надо в Postgres заливать, удаляя их локально (из-за того, что заявка имеет 2-3 уровня вложенности объектов временно сериализую её в файл, но надо от этого уходить). Тут появляются мысли о MongoDB, но у меня нет чёткого понимания, стоит ли её тут использовать...
0
edwin3d
91 / 91 / 10
Регистрация: 18.05.2013
Сообщений: 265
01.06.2013, 15:33 #5
Мне кажется, что у Вас нет понимания развития решения задачи.
Если Вы до сих пор не выбрали между парадигмами SQL или NoSQL, то очень сложно говорить о чем-то более серьезном ... а если вернуться к изначальному вопросу - Вот Вы сказали, что работаете через H2.
Вполне себе так .... так в чем проблема то, а, если не секрет ?
0
Perun
5 / 5 / 3
Регистрация: 22.02.2008
Сообщений: 137
01.06.2013, 16:21  [ТС] #6

Не по теме:

Мне кажется, что у Вас нет понимания развития решения задачи.


Согласен с Вами.

Вообще задача состоит в следующем. Ведётся приём заявок в оффлайн режиме, они накапливаются в каком-то локальном хранилище, при появлении соединения запускается поток, который начинает синхронизировать заявки с основной базой. При этом локально они удаляются. В памяти висит ООП модель данных, которая заполняется по мере взаимодействия с клиентом. Так же при наличии обновлений справочников, они должны сливаться в локальную базу.

Проблема в том, что используется 2 разных БД и данные приходится синхронизировать.
Идея заключается в том, что софт может работать в оффлайне. При этом заявки надо как-то хранить - каждый раз раскидывать модель данных по базе (так как в заявке имеется заявитель, документ заявки + его описание - справочная инфа). То есть прийдётся в 1 транзакции сделать несколько инсертов, как в postgres делается сейчас.

Я вообще хотел услышать мнения, как решаются такого рода задачи.
0
mutagen
2564 / 2237 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
01.06.2013, 16:29 #7
Цитата Сообщение от Perun Посмотреть сообщение
Я вообще хотел услышать мнения, как решаются такого рода задачи.
кратко: я бы сделал локальное хмл хранилище на базе коллекции лист, куда сливал бы все заявки при отсутствии соединения с бд., при коннекте заливал бы их в базу батчем.

подробно: БД используется обычно не как просто хранилище, а как "централизованное" хранилище с возможностью мультидоступа с множества клинтов.
Если вы гдето видели локальную sqlite базу - то её задача накопление статистики локального приложения и удобные инструменты поиска по этой истории.

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

ps: Кто то тут уже спрашивал меня о подобном и тоже выбирал синхронизацию БД. Вспомнайте о принципе KISS когда берётесь за реализацию, ато в будущем это ваше приложение может стимулировать у людей которые его сапортят маниакальное желание убить автора архитектуры
0
AckiyBolt
649 / 398 / 35
Регистрация: 19.02.2013
Сообщений: 1,072
Записей в блоге: 2
01.06.2013, 16:35 #8
у вас h2 на клиенте и постгрес на сервере? али я не понял чего?
0
Perun
5 / 5 / 3
Регистрация: 22.02.2008
Сообщений: 137
01.06.2013, 17:02  [ТС] #9
Да именно так
0
AckiyBolt
649 / 398 / 35
Регистрация: 19.02.2013
Сообщений: 1,072
Записей в блоге: 2
01.06.2013, 17:16 #10
так вроде ничего такая архитектура.

монго вам не подойдет по причине отсутствия транзакций. и если она играет роль заменителя h2 то не прокатит в виду того что ее ставить нужно, а h2 как я понял нет, и потому что монго жрет память на винте как дурное.
если вы используете голый sql (настроживает фраза "каждый раз раскидывать модель данных по базе"), то может имеет смысл перейти на орм фреймворки?
0
mutagen
2564 / 2237 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
01.06.2013, 17:20 #11
Цитата Сообщение от AckiyBolt Посмотреть сообщение
так вроде ничего такая архитектура.
ага тули базу куда не попадя, потом пригодится
0
AckiyBolt
649 / 398 / 35
Регистрация: 19.02.2013
Сообщений: 1,072
Записей в блоге: 2
01.06.2013, 17:31 #12
Цитата Сообщение от mutagen Посмотреть сообщение
ага тули базу куда не попадя, потом пригодится
так онож маленькое. да и почему нет? тем более что хмл любой дурак может поломать
0
Perun
5 / 5 / 3
Регистрация: 22.02.2008
Сообщений: 137
01.06.2013, 18:39  [ТС] #13
Ok, а по поводу транзакций в mogo - разве если я сохранять буду целиком объект, они нужны или я чего-то недопонял?

Не по теме:

настроживает фраза "каждый раз раскидывать модель данных по базе"



да здесь возможно лучше применить ORM типа hibernate
0
AckiyBolt
649 / 398 / 35
Регистрация: 19.02.2013
Сообщений: 1,072
Записей в блоге: 2
01.06.2013, 18:56 #14
Цитата Сообщение от Perun Посмотреть сообщение
Ok, а по поводу транзакций в mogo - разве если я сохранять буду целиком объект, они нужны или я чего-то недопонял?
ваша синхронизация подразумевает использование распределенных транзакций (т.н. two-phase commit). надеюсь следующая запись будет понятной:
Код
старт транзакции
(прочитать данные из локальной бд -> записать в удаленную бд) ?
      (удалить из локальной бд) ?
             коммит
             : ролбэк
      : ролбэк
иначе данные могут пролюбится в неизвестном направлении


Цитата Сообщение от Perun Посмотреть сообщение
да здесь возможно лучше применить ORM типа hibernate
в любом случае это добавит немало удобства в использовании
0
Perun
5 / 5 / 3
Регистрация: 22.02.2008
Сообщений: 137
01.06.2013, 19:06  [ТС] #15
ваша синхронизация подразумевает использование распределенных транзакций (т.н. two-phase commit). надеюсь следующая запись будет понятной:
Код Code
1
2
3
4
5
6
7
8

старт транзакции
(прочитать данные из локальной бд -> записать в удаленную бд) ?
(удалить из локальной бд) ?
коммит
: ролбэк
: ролбэк

то есть такое в mongo не вариант будет сделать, правильно я понял?
0
AckiyBolt
649 / 398 / 35
Регистрация: 19.02.2013
Сообщений: 1,072
Записей в блоге: 2
01.06.2013, 20:55 #16
да. в монго нет транзакций. вообще
0
mutagen
2564 / 2237 / 257
Регистрация: 14.09.2011
Сообщений: 5,185
Записей в блоге: 18
03.06.2013, 12:15 #17
Цитата Сообщение от AckiyBolt Посмотреть сообщение
тем более что хмл любой дурак может поломать
а базу любой дурак не сможет - ага

Цитата Сообщение от AckiyBolt Посмотреть сообщение
подразумевает использование распределенных транзакций
ну а вот и уже грабли на подходе )))

Цитата Сообщение от AckiyBolt Посмотреть сообщение
да. в монго нет транзакций. вообще
помню как сказал один умный дядька: "вам нужно было распарсить строку, вы решили использовать регулярные выражения - теперь у вас 2 проблемы"
так и тут у вас, уже 2фазкомит, уровни изоляции, etc
и это вы ещё не вспомнили про то как чинить крашнутую локальную базу по причине IO и кто её будет чинить, и что делать с исчезнувшими данными, или что делать если база из бекапа и данные дублицируются на локальной и удалённой.
Короче - теперь у вас 2(а может и больше) проблемы
0
AckiyBolt
649 / 398 / 35
Регистрация: 19.02.2013
Сообщений: 1,072
Записей в блоге: 2
03.06.2013, 15:52 #18
а теперь было бы неплохо написать развернутый версию ответа с наглядно прорисованными причинно следственными связями =)
0
03.06.2013, 15:52
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.06.2013, 15:52
Привет! Вот еще темы с решениями:

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

Выбор версии php для максимальной скорости без использования ООП
Я всегда думал, что php 5.2 работает быстрее, чем более старые версии при...

Выбор БД для базы
Доброго времени суток. Возникла необходимость переписать чужой древний проект...

Установка базы данных с локального денвера
Вопрос такой у меня на денвере стоит движок dcms-7.2.1.108 ну и база данных там...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru