|
|
|
Как правильно сохранять объекты бизнес-логики в базе данных
|
|||
|---|---|---|---|
|
#18+
ой. что такое импенданс? а то у нас, за канавой возле Хрещатика такого слова не говорят. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2007, 09:02 |
|
||
|
Как правильно сохранять объекты бизнес-логики в базе данных
|
|||
|---|---|---|---|
|
#18+
Реалист и оптимистВот я в самом начале и высказал мысль о том, что ОО парадигма программирования получила широкую популярность, а хранение и обработка данных, в подавляющем большинстве случаев, основана на реляционных моделях баз данных. И чтобы одно состыковать с другим приходится, выполнять «танцы шамана с бубном». Если СУБД чисто объектная, то никаких танцев и импедансов нет. Если СУБД табличная (рел., сет., иерарх), то и программы д.б. "табличные", тогда и танцы не нужны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2007, 11:20 |
|
||
|
Как правильно сохранять объекты бизнес-логики в базе данных
|
|||
|---|---|---|---|
|
#18+
У нас, например, бизнес-классы наследуются от класса с идентификатором, временем создания, создателем, признаком актуальности, и методами "создать", "сохранить", "уничтожить". В зависимости от цели (и значения аргумента, передаваемого этим методам), используются различные стратегии сериализации и сохранения: - создать новый/дописать существующий/переписать существующий файл в оперативной памяти, к-рый при выполнении определённого условия или по явной команде сохраняется на диск, - создать новый запрос SQL CREATE/UPDATE "изменить и оставить актуальным"/UPDATE "объявить неактуальным", к-рый ставится в очередь и передаётся на сервер БД. Т.о. бизнес-классы действительно не отвечают за сохранение себя - отвечает их родитель. Работает. Хотя классов бизнес-объектов у нас немного, чуть больше десятка, и ничего особенно сложного в их структуре и связях нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2007, 11:40 |
|
||
|
Как правильно сохранять объекты бизнес-логики в базе данных
|
|||
|---|---|---|---|
|
#18+
модЕсли СУБД табличная (рел., сет., иерарх), то и программы д.б. "табличные", тогда и танцы не нужны. - видимо создатели Hibernate, TopLink, Kodo и других ORM (Object Relational Mapping) ерундой занимаются? - какая бы ни была СУБД, а программирование хотелось бы объектное :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2007, 11:42 |
|
||
|
Как правильно сохранять объекты бизнес-логики в базе данных
|
|||
|---|---|---|---|
|
#18+
Kachalov- видимо создатели Hibernate, TopLink, Kodo и других ORM (Object Relational Mapping) ерундой занимаются? Именно так. Kachalov - какая бы ни была СУБД, а программирование хотелось бы объектное :) Сделайте свою ОСУБД и вперед. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2007, 12:00 |
|
||
|
Как правильно сохранять объекты бизнес-логики в базе данных
|
|||
|---|---|---|---|
|
#18+
модСделайте свою ОСУБД и вперед. - вот такой ерундой точно заниматься не буду. Мне вполне хватает реляционных СУБД и объектного маппинга существующего в EJB ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2007, 12:08 |
|
||
|
Как правильно сохранять объекты бизнес-логики в базе данных
|
|||
|---|---|---|---|
|
#18+
Сделайте свою ОСУБД и вперед. Согласен! Добавлю - дополните ее основанными на РМД возможностями по групповой обработке данных - и будет Вам вообще счастье .:) модератору Насчет "аффтар"ов - ни хотел никого обидеть. Понимаю, что эти люди заслуживают уважение, поскольку они строили то, на чём мы сейчас сидим и что воспринимаем как само собой разумеющееся. Но все таки там выразительная цель такая была - создать атмосферу легкого стеба:). Например, написал магАзин, что тоже неправильно. А некоторые тут без заглавных и знков препинания пищут ;). стиль у них такой.сугубо индивидуальный, за что их и ценим. Модератор: ))тут обиды не причем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2007, 12:18 |
|
||
|
Как правильно сохранять объекты бизнес-логики в базе данных
|
|||
|---|---|---|---|
|
#18+
StalkerSМожет у кого-нибудь есть хорошие ссылки по теме, или даже электронные книжки, посвященные этой тематике ? М. Фаулер. Архитектура корпорпоративных програмных приложений Пожалуй, одна из лучших книжек, рассматривающих различные способы построения ORM, а также существующие решения. StalkerS Как правильно сохранять объекты бизнес-логики в базе данных? В зависимости от платформы разработки проекта, СУБД, размера проекта, квалификации разработчиков, желаемого времени входа новых разработчиков в проект и ряда других исходных условий выбрать один из коммерческих ORM, либо же писать свой ORM. Если учитывать только платформу разработки (например), то: .NET -> ADO.NET (DataSet) J2EE -> Hibernate (с криком убегает от HW на эту тему) P.S. В случае выбора варианта "писать свой ORM" нужно быть очень осторожным: а) можно потратить кучу времени и денег и получить в результате бледный аналог DataSet-ов ADO.NET. Платят обычно за бизнес-логику, а не за разработку ORM. б) по крайней мере учитывать, что один объект бизнес-логики может состоять из нескольких тысяч записей в нескольких десятках таблиц. в) универсальное решение "для усех СУБД" может очень сильно выйти боком P.P.S. Да, кстати, "единственно правильного способа сохранять объекты в базе данных" пока нет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2007, 12:19 |
|
||
|
Как правильно сохранять объекты бизнес-логики в базе данных
|
|||
|---|---|---|---|
|
#18+
Странная постановка вопроса "Как правильно сохранять объекты бизнес-логики в базе данных". Зачем вообще их там сохранять. Объект - это свойство, методы , события (данные + код). Где хранится код наверное все знают. Наверно глупо его хранить в Базе Данных. Возможно речь идет только о хранении данных бизнес объекта а не самого объекта. А это уже совсем другая песня. Хранить можно где угодно в БД в XML файле и т.д. И я не вижу какие трудности здесь могут возникнуть. Храните в том виде в каком Вам удобно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2007, 12:46 |
|
||
|
Как правильно сохранять объекты бизнес-логики в базе данных
|
|||
|---|---|---|---|
|
#18+
U-geneДобавлю - дополните ее основанными на РМД возможностями по групповой обработке данных - и будет Вам вообще счастье .:) ОСУБД хранит и обрабатывает объекты, представленные списками этих самых объектов. РМД вроде как не нужна. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2007, 12:54 |
|
||
|
Как правильно сохранять объекты бизнес-логики в базе данных
|
|||
|---|---|---|---|
|
#18+
Kachalov- вот такой ерундой точно заниматься не буду. Напрасно. Берем любую пром. СУБД, используем ее как метод доступа и делаем свою ОСУБД. При необходимости можно использовать оба уровня. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2007, 12:56 |
|
||
|
Как правильно сохранять объекты бизнес-логики в базе данных
|
|||
|---|---|---|---|
|
#18+
мод Kachalov- вот такой ерундой точно заниматься не буду. Напрасно. Берем любую пром. СУБД, используем ее как метод доступа и делаем свою ОСУБД. При необходимости можно использовать оба уровня. - реализуем адаптивное кэширование, объектные транзакции, сетевой доступ к объектам, панель управления и получаем 30% от возможностей сервера приложений + массу потеряного времени + продукт неизвестного качества (тестируем само собой на заказчике) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2007, 14:21 |
|
||
|
Как правильно сохранять объекты бизнес-логики в базе данных
|
|||
|---|---|---|---|
|
#18+
Kachalov- реализуем адаптивное кэширование, объектные транзакции, сетевой доступ к объектам, панель управления и получаем 30% от возможностей сервера приложений + массу потеряного времени + продукт неизвестного качества (тестируем само собой на заказчике) ничего этого делать не надо (а что надо - вы не указали) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2007, 15:15 |
|
||
|
Как правильно сохранять объекты бизнес-логики в базе данных
|
|||
|---|---|---|---|
|
#18+
модничего этого делать не надо (а что надо - вы не указали) - может кому объектные транзакции и не нужны, так же как и удаленный доступ к бизнес объектам, а мне при работе с реляционными базами это необходимо. А Вы уважаемый мод могли бы поподробней написать, а то теперь все думают что Вы обладаете некоторыми сокровенными знаниями которыми не хотите поделиться с другими, да еще и флейм разводите. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2007, 15:34 |
|
||
|
Как правильно сохранять объекты бизнес-логики в базе данных
|
|||
|---|---|---|---|
|
#18+
KachalovА Вы могли бы поподробней написать Конечно можно. Транзакциями занимается базовая РСУБД Доступ к объектам (хоть удаленный хоть локальный) - "ОСУБД" Вы работаете с "ОСУБД", РСУБД исп. только в исключительных случаях. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2007, 15:52 |
|
||
|
Как правильно сохранять объекты бизнес-логики в базе данных
|
|||
|---|---|---|---|
|
#18+
мод Транзакциями занимается базовая РСУБД Доступ к объектам (хоть удаленный хоть локальный) - "ОСУБД" Вы работаете с "ОСУБД", РСУБД исп. только в исключительных случаях. - представим такой случай: Два клиента осуществляют транзакции с коллекциями объектов типа А, каждый из которых содержит объектное поле типа Б. В свою очередь объект типа Б имеет поле С типа INT. В обеих коллекциях содержатся объекты типа A, связаные с общим объектом Б1 типа Б. Один из клиентов меняет значение поля С в объекте Б1 в рамках свой транзакции. Второй клиент должен увидеть изменения значения поля С для объекта Б1 в соответствии с установленным уровнем изоляции транзакции. Внимание вопрос: кто по вашему должен заниматься реализацией механизма маппинга объектной транзакции на РСУБД? Программист разработчик конечного приложения или сторонние программисты предоставляющие готовые универсальные ОТМ (Object Transact Manager)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2007, 16:21 |
|
||
|
Как правильно сохранять объекты бизнес-логики в базе данных
|
|||
|---|---|---|---|
|
#18+
Kachalov- представим такой случай: Чессно говоря не понял в чем проблема Kachalov кто по вашему должен заниматься реализацией механизма маппинга объектной транзакции на РСУБД? Транзакции не надо маппить: Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2007, 16:37 |
|
||
|
Как правильно сохранять объекты бизнес-логики в базе данных
|
|||
|---|---|---|---|
|
#18+
модcommit -- отрабатывается РСУБД, изменения становяься видимыми для всех - с чего бы это? у меня как у второго клиента в памяти висит аналогичная коллекция с теми же объектами, почему они будут синхронизироваться с БД когда там первый клиент поменяет значение для одного из полей? Кроме того не факт что я "хочу видеть" все изменения - это должно регулироваться уровнем изоляции транзакции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2007, 16:47 |
|
||
|
Как правильно сохранять объекты бизнес-логики в базе данных
|
|||
|---|---|---|---|
|
#18+
Kachalov модcommit -- отрабатывается РСУБД, изменения становяься видимыми для всех - с чего бы это? у меня как у второго клиента в памяти висит аналогичная коллекция с теми же объектами, почему они будут синхронизироваться с БД когда там первый клиент поменяет значение для одного из полей? Кроме того не факт что я "хочу видеть" все изменения - это должно регулироваться уровнем изоляции транзакции. Так это не проблема объектной ориентированности. Это проблема синхронизации различных кэшей. Ваша коллекция объектов на втором клиенте есть (в какомто смысле) копией состояния БД - кэшем. С классами это не связано вообще. Другое дело, что, возможно, Вы хотите чтобы решение в терминах классов рассказали. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.07.2007, 20:36 |
|
||
|
Как правильно сохранять объекты бизнес-логики в базе данных
|
|||
|---|---|---|---|
|
#18+
tchingizТак это не проблема объектной ориентированности. Это проблема синхронизации различных кэшей. - проблема в том что можно отобразить объекты и действия над ними, в том числе в транзакционном контексте, на РСУБД, но реализация такого отображения это огромный и ненужный для рядового программиста (так как есть готовые ORM) труд. tchingizДругое дело, что, возможно, Вы хотите чтобы решение в терминах классов рассказали. - я не хочу что бы мне рассказывали как бы это могло быть, я знаю что все это уже реализовано в технологии EJB и мне непонятно зачем изобретать велосипед, когда весь мир уже давно этим успешно пользуется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2007, 02:21 |
|
||
|
Как правильно сохранять объекты бизнес-логики в базе данных
|
|||
|---|---|---|---|
|
#18+
за бесплатно я не буду даже над этим думать. До тех пор, пока не появится существенных причин, чтобы иметь два кэша. Пока мне всегда хватало одного. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2007, 07:01 |
|
||
|
Как правильно сохранять объекты бизнес-логики в базе данных
|
|||
|---|---|---|---|
|
#18+
tchingizДо тех пор, пока не появится существенных причин, чтобы иметь два кэша. Пока мне всегда хватало одного. - о каких кэшах вообще идет речь? Обычная работа с данными в рамках двух параллельных транзакций. Будет три клиента - будет три транзакции и соответственно три выборки объектов с которыми ведется работа и данные этих выборок должны синхронизироваться с учетом уровня изоляции с данными из РСУБД. Будет десять клиентов - будет десять выборок. tchingizза бесплатно я не буду даже над этим думать. - не я начал этот топик. У меня проблем с отображением объектов на РСУБД нет. Так же нет проблем при работе с объектными транзакциями. Все технологии которые позволяют это делать легко и просто уже перечисленны выше: EJB, Hibernate, TopLink, Kodo и т. п. Хотите думайте, хотите не думайте - дело Ваше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2007, 12:07 |
|
||
|
Как правильно сохранять объекты бизнес-логики в базе данных
|
|||
|---|---|---|---|
|
#18+
об этих автору меня как у второго клиента в памяти висит аналогичная коллекция с теми же объектами, почему они будут синхронизироваться с БД когда там первый клиент поменяет значение для одного из полей? коллекция чего угодно, которая должна синхронизироваться с базой данных, есть второй кэш. Первый живет в субд и не заметен для программиста. Вопрос синхронизации управляемого Вами кэша с базой данной не имеет отношения к обьектной ориентированности. Это всегда проблема. Нет коллекции чего угодно (байтов, списков, деревьев, объектов) которую надо с бд синхронизировать - нет проблемы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2007, 00:44 |
|
||
|
Как правильно сохранять объекты бизнес-логики в базе данных
|
|||
|---|---|---|---|
|
#18+
tchingizНет коллекции чего угодно (байтов, списков, деревьев, объектов) которую надо с бд синхронизировать - нет проблемы. - нет программы - нет проблемы. - про терминологию: видимо любой объект вытащенный из базы - это, по вашему, уже кэш? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2007, 14:19 |
|
||
|
Как правильно сохранять объекты бизнес-логики в базе данных
|
|||
|---|---|---|---|
|
#18+
да, но, возможно, не будет решена поставленная задача, для которой нужно писать программу. Любая область памяти, для которой требуется выполнять синхронизацию с другой областью памяти уже смахивает на кэш. Например, удаленная бд и локальная, между которыми происходит репликация. Это таже проблема с который Вы начали. Слово кэш не принципиально. Принципиально, что требуется синхронизация между, возможно, исскуственно созданной коллекцией, возможно, искуственно созданных объектов и базой данных. а по Вашему, что есть кэш? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.07.2007, 23:07 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=34646030&tid=1345957]: |
0ms |
get settings: |
5ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
159ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
80ms |
get tp. blocked users: |
1ms |
| others: | 216ms |
| total: | 491ms |

| 0 / 0 |
