Обычная версия
Java форум JavaTalks
форум программистов

Поиск   Пользователи   Группы   Регистрация 
 Профиль   Личные сообщения 

 Вход 

Требуется квалифицировнная консультация JDBC firebird
Список форумов
 ->  Работа с базами данных


 
Начать новую тему 
Предыдущая тема :: Следующая тема  
Автор Сообщение
msam : 38
Новичок

СообщениеФев 12, 2012 22:19 
Ответить с цитатой
Подскажите как можно с используя JDBC открыв несколько соединений объеденить их все в одну транзакцию?
К началу Посмотреть профиль Отправить личное сообщение
mesier : 693
Постоянный посетитель
Откуда: Новокузнецк

СообщениеФев 13, 2012 7:16 
Ответить с цитатой
Цитата:
Подскажите как можно с используя JDBC открыв несколько соединений объеденить их все в одну транзакцию?

Да вроде бы никак..
К началу Посмотреть профиль Отправить личное сообщение ICQ Number
Skipy : 4805
Я тут живу!
Откуда: Москва, Россия

СообщениеФев 13, 2012 11:28 
Ответить с цитатой
msam писал(а):
Подскажите как можно с используя JDBC открыв несколько соединений объеденить их все в одну транзакцию?


Если имеется в виду транзакция в БД - никак.

Теоретически есть возможность на сервере получить идентификатор транзакции (сервер должен поддерживать распределенные транзакции). Т.е. начать одну транзакцию, получить ID, передать в другое соединение, использовать там для подключения к существующей транзакции. Практически же у меня это не получилось ни с MSSQL 2008, ни с PostgreSQL 8.4.

Если имеется в виду просто транзакция с точки зрения бизнес-логики - смотрите в сторону распределенных транзакций (XADataSource и иже с ним, поддерживающие XA драйвера). Формально это будет несколько разных транзакций - изменения в одном соединении Вы в другом не увидите - но коммит/откат будет синхронным.
_________________
С уважением,
Евгений aka Skipy
www.skipy.ru
P.S. Я НЕ решаю задачи ЗА других!
К началу Посмотреть профиль Отправить личное сообщение Посетить сайт автора
msam : 38
Новичок

СообщениеФев 13, 2012 12:20 
Ответить с цитатой
Спасибо за ответы.
К сожалению нужны именно несколько соединений в одну транзакцию Используем firebird в нем есть так называемые двух двухуровневые распределенные транзакции, сами не пробовали. от XA пришлось отказаться - сильно медленно, по сравнению с JDBC.
К началу Посмотреть профиль Отправить личное сообщение
aleksandy : 1077
Завсегдатай

СообщениеФев 16, 2012 11:02 
Ответить с цитатой
msam писал(а):
Подскажите как можно с используя JDBC открыв несколько соединений объеденить их все в одну транзакцию?

А зачем открывать несколько соединений? Нельзя одно передавать? Что вообще в итоге должно получиться? Может через savepoint-ы можно сэмулировать?
К началу Посмотреть профиль Отправить личное сообщение
msam : 38
Новичок

СообщениеФев 16, 2012 15:47 
Ответить с цитатой
aleksandy писал(а):
msam писал(а):
Подскажите как можно с используя JDBC открыв несколько соединений объеденить их все в одну транзакцию?

А зачем открывать несколько соединений? Нельзя одно передавать? Что вообще в итоге должно получиться? Может через savepoint-ы можно сэмулировать?


Нет не получится. В последствии будут разные физические базы. На счет savepint тоже закрась у меня мысль что этот механизм может пригодиться, где бы его подробное описание взять? Может ли одна savepoint работать для нескольких соединений?
К началу Посмотреть профиль Отправить личное сообщение
mesier : 693
Постоянный посетитель
Откуда: Новокузнецк

СообщениеФев 16, 2012 16:05 
Ответить с цитатой
Не покидает ощущение, что автор пытается сгорбатить какой-то жуткий велосипед!
Несколько соединений в одной транзакции.. Разные физические базы.. Боюсь даже представить что может получиться! Не велосипед даже, а скорее какой-то шестикрылый семи%уй..
Поделитесь задачей! Тут на сайте есть люди, я уверен, которые обладают навыками архитекторов. Ведь большинство бизнес-требований уже когда-то кем-то решено - есть множество готовых решений по интеграции, консолидации, репликации, кластеризации.. (О скока умных слов знаю! Cool )
А то вот выпустите вы своего монстра в продакшн а он в первый же день на банальном дэдлоке заткнется, во смеху-то будет. Laughing
К началу Посмотреть профиль Отправить личное сообщение ICQ Number
msam : 38
Новичок

СообщениеФев 16, 2012 23:42 
Ответить с цитатой
mesier писал(а):
...
Поделитесь задачей! Тут на сайте есть люди, я уверен, которые обладают навыками архитекторов. Ведь большинство бизнес-требований уже когда-то кем-то решено - есть множество готовых решений по интеграции, консолидации, репликации, кластеризации...


Пожалуйста, советы люблю.

Немного о себе: более 26 лет занимаюсь разработкой и внедрением комплексных информационных систем управления предприятием. Термин ERP будет близок, но есть еще много чего, документооборот, CRM, PDM и т.д. Все собственной разработки. Речь идет о тысячах рабочих мест .

Задача проста - переписать существующую систему управления, с учетом всех уже известных сложностей.

Начнем с общих требований к системе и к среде разработки.

Масшатабируемость, увеличение производительности всей системы, путем простого увеличения количества компьютеров, на которых работает сервер приложений, база данных. (Велись переговоры с ibm и oracle. Наше предложение продемонстрировать работу на кластерах как то не вызвало никого энтузиазма Smile ).

Многоплатформенность.

Дистанционная работа.

Возможность работы клиентов на слабых каналах – минимизация объема передаваемой информации.

Бесплатность(по возможности) использованного ПО. Долго искали, кому можно отдать денег за то, что нам нужно, но пока пусто …).

Возможность использования любого SQL сервера, поддерживающего стандарты.

Встроенная версионность. Возможность использования версионности для любого объекта находящегося в системе.
Единая система управления правами : каждый модуль , объект может обладать своим уникальных набором прав.

Встроенная в систему возможность архивирования данных, т.е. создание архивных хранилищ данных доступных при оперативном поиске и не как не влияющих на оперативную работу связанную с изменением данных. Поясню: Есть некий физический придел роста объема одной базы дынных, после которого с ней работать становиться не только не удобно, но совершенно по идиотски используются ресурсы сервера. Зачем например серверу при вставке очередной накладной учитывать, выдачу перчаток 1995 году Smile Хотя для статистики эта информация нужна. По этому решение - другая база .

Невозможность испортить ясную и логичную исходно созданную структуру данных, “специалистами” на местах, делающих некие корректировки системы.

Сохранение простоты и управляемости структурами данных, при неограниченно росте решаемых прикладных задач.

Автономность модулей, форм системы, т.е. полная не зависимость от любых внесенных изменений в другие прикладные формы, модули.

Простота разработки приложений, скорость разработки не ниже чем в delphi , при скромной квалификации кодеров.

Это то, что вспомнилось сегодня вечером, хотя есть ощущение что, что-то забыл Smile

Большинство вопросов решено.

Сейчас запускаем первый прикладной модуль с использованием нашей среды разработки. Решили назвать ее JDF - Java Developer Framework.

Актуальный вопрос это управлений несколькими соединениями в одной транзакции, как я уже писал выше, хотя решение есть, но как то оно мне не нравиться.
К началу Посмотреть профиль Отправить личное сообщение
mesier : 693
Постоянный посетитель
Откуда: Новокузнецк

СообщениеФев 17, 2012 5:46 
Ответить с цитатой
Собственный SAP R3 ? Wink
А чем готовый-то не угодил?
У нас работает..
К началу Посмотреть профиль Отправить личное сообщение ICQ Number
msam : 38
Новичок

СообщениеФев 17, 2012 8:54 
Ответить с цитатой
mesier писал(а):
Собственный SAP R3 ? Wink
А чем готовый-то не угодил?
У нас работает..

Ага, кое в чем похоже, SAP не устраивал как минимум по двум параметрам: управление производством в нем примитивное и цена. Получалось нужно заплатить для начала 700000$ за 50 рабочих мест и получить то, что работало еще 1998 году. А мест рабочих нужно гораздо больше и терять в функционале да еще за свои деньги, как то странно а потом уже с пользованием среды SAP дописывать то что нужно.
К началу Посмотреть профиль Отправить личное сообщение
Skipy : 4805
Я тут живу!
Откуда: Москва, Россия

СообщениеФев 17, 2012 14:11 
Ответить с цитатой
msam писал(а):
Ага, кое в чем похоже, SAP не устраивал как минимум по двум параметрам: управление производством в нем примитивное и цена. Получалось нужно заплатить для начала 700000$ за 50 рабочих мест и получить то, что работало еще 1998 году. А мест рабочих нужно гораздо больше и терять в функционале да еще за свои деньги, как то странно а потом уже с пользованием среды SAP дописывать то что нужно.


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

P.S. Кстати, Вы так и не объяснили, зачем Вам несколько соединений в одной транзакции. Из кучи общих слов такое требование никак не следует.
_________________
С уважением,
Евгений aka Skipy
www.skipy.ru
P.S. Я НЕ решаю задачи ЗА других!
К началу Посмотреть профиль Отправить личное сообщение Посетить сайт автора
msam : 38
Новичок

СообщениеФев 17, 2012 15:59 
Ответить с цитатой
Skipy писал(а):

P.S. Кстати, Вы так и не объяснили, зачем Вам несколько соединений в одной транзакции. Из кучи общих слов такое требование никак не следует.


Вариантов несколько:
1) это тогда когда физически будут использоваться несколько баз для хранения данных.
2) если использовать заранее подготовленные "PreparedStatement" в которые просто подставить параметры, то скорость работы с базой получается весьма приличной по сравнению с entity в 30 - 100 раз. Речь идет о простых коротких запросах.

Теперь немного о скупости и тд.

Дело даже не в деньгах, деньги есть. Получается что приходят специалисты у которых система умеет меньше, чем та, которая работает уже 12 лет. Сами они могут говорить стандартный набор фраз, не понравилось прежде всего это. В итого получается купить за не слабые денюжки старинную не удобную среду разработки и разбираться с ней самим, дописывая то что нужно? Решили что нет, напишем сами. Прошло 1.5, года почти все работает. Например нет пока еще красивого редактора прав и другие мелочи, основной функционал работает. Прикладные приложения встали в разработку а склад уже запускаем.
Ведь хочется сразу и всего и по возможности дешевле. Как более менее JDF устаканиться, я выложу результат работы. Сама среда предполагается бесплатной.
К началу Посмотреть профиль Отправить личное сообщение
GlooK : 58
Новичок
Откуда: Самара

СообщениеФев 28, 2012 23:08 
Ответить с цитатой
Возможно глупость скажу, но может в данном случае применить партиционирование таблиц в самой БД? В ФБ конечно такого нет, зато, к примеру есть в MySQL.
Ну или попробовать сделать пул транзакций - т.е. перед коммитом проверять, что остальные транзакции также готовы к коммиту. Если хоть одна транзакция зафейлилась, делать у всех ролбэк.
К началу Посмотреть профиль Отправить личное сообщение Посетить сайт автора
Skipy : 4805
Я тут живу!
Откуда: Москва, Россия

СообщениеФев 29, 2012 13:28 
Ответить с цитатой
msam писал(а):
Skipy писал(а):

P.S. Кстати, Вы так и не объяснили, зачем Вам несколько соединений в одной транзакции. Из кучи общих слов такое требование никак не следует.


Вариантов несколько:
1) это тогда когда физически будут использоваться несколько баз для хранения данных.
2) если использовать заранее подготовленные "PreparedStatement" в которые просто подставить параметры, то скорость работы с базой получается весьма приличной по сравнению с entity в 30 - 100 раз. Речь идет о простых коротких запросах.


Так, стоп. Несколько соединений с разными физическими базами (ну или с одной, но с разными транзакциями внутри соединений) - это принципиально другое. Это XA-транзакции, они поддерживаются большинством производителей. Используется XA-драйвер, который есть для Oracle, MS SQL, Sybase, PostgreSQL совершенно точно. Физически в базах транзакции разные, собраны в одной глобальной распределенной транзакции, менеджер работает по принципу двухфазного коммита. Я говорил об объединении нескольких соединений к одной физической базе в одну физическую транзакцию в этой базе.

А какой отношение к транзакциям в разных базах имеют prepared statements - я, честно сказать, не совсем понял.
_________________
С уважением,
Евгений aka Skipy
www.skipy.ru
P.S. Я НЕ решаю задачи ЗА других!
К началу Посмотреть профиль Отправить личное сообщение Посетить сайт автора
 
Начать новую тему  Ответить на тему
Страница 1 из 1
Список форумов
 -> Работа с базами данных


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


Java and all Java-related trademarks and logos are trademarks or registered trademarks of Oracle Corporation in the United States and other countries.
Это сайт не относится к фирме Oracle Corporation и не поддерживается ею.

© 2006-2010 www.javatalks.ru: форум java программистов
Используется скрипт phpBB © 2001, 2010 phpBB Group

Хостинг от bizname.ru