R/O mapping для FireBird
От: dimzon Россия http://dimzon541.narod.ru
Дата: 18.05.04 12:36
Оценка:
Я тут чуть-чуть програмизмом занимаюсь, пишу сабж под FB для Delphi. Соотв. спрашиваю — кому-нить кроме меня нужно? Если нужно то можно обсудить особенности реализации

Пока надумал вот что — в связи с наличием огромного кол-ва библиотек работы с FB/IB не зашиваться на конкртную но требовать у пользователя реализации 2-х примитивных интерфейсов для работы с данными (это можно запросто сделать слегка обернув выбранную программистом библиотечку).
Re: R/O mapping для FireBird
От: Lloyd Россия  
Дата: 18.05.04 13:19
Оценка: -1
Здравствуйте, dimzon, Вы писали:

D>Я тут чуть-чуть програмизмом занимаюсь, пишу сабж под FB для Delphi. Соотв. спрашиваю — кому-нить кроме меня нужно? Если нужно то можно обсудить особенности реализации


D>Пока надумал вот что — в связи с наличием огромного кол-ва библиотек работы с FB/IB не зашиваться на конкртную но требовать у пользователя реализации 2-х примитивных интерфейсов для работы с данными (это можно запросто сделать слегка обернув выбранную программистом библиотечку).


Если под R/O mapping-ом ты понимаешь O-R mapping, то рекомендую тебе не заморачиваться: Во-первых, тема достаточно сложная и малоподъемная для одного человека (особенно занимающегося программизмом чуть-чуть). Во-вторых, есть уже достаточное количество работающих маперов, не привязывающихся к конкретному провайдеру.
Re[2]: R/O mapping для FireBird
От: dimzon Россия http://dimzon541.narod.ru
Дата: 18.05.04 14:23
Оценка:
Здравствуйте, Lloyd, Вы писали:


L>Если под R/O mapping-ом ты понимаешь O-R mapping, то рекомендую тебе не заморачиваться: Во-первых, тема достаточно сложная и малоподъемная для одного человека (особенно занимающегося программизмом чуть-чуть). Во-вторых, есть уже достаточное количество работающих маперов, не привязывающихся к конкретному провайдеру.


Во первых несложная (для меня) ибо уже есть опыт (работающий мапер) на VB под MSSQL и Oracle и все алгоритмы я ужо знаю. Во вторых под "программизмом чуть-чуть" я имел ввиду небольшую библиотечку заточенную под FB и под Delphi чтобы можно было на коленке клепать desktop-приложения с минимальный деплойментом (например используя FB Embeded). При этом, замечу, я пытаюсь сделать библиотечку максимально универсальной и гибкой, пригодной для многозвенок

Единственное что меня собственно несколько заботит это незнание SQL диалекта FB но это несерьёзно
Re[3]: R/O mapping для FireBird
От: Lloyd Россия  
Дата: 18.05.04 14:36
Оценка:
Здравствуйте, dimzon, Вы писали:

D>Во первых несложная (для меня) ибо уже есть опыт (работающий мапер) на VB под MSSQL и Oracle и все алгоритмы я ужо знаю. Во вторых под "программизмом чуть-чуть" я имел ввиду небольшую библиотечку заточенную под FB и под Delphi чтобы можно было на коленке клепать desktop-приложения с минимальный деплойментом (например используя FB Embeded). При этом, замечу, я пытаюсь сделать библиотечку максимально универсальной и гибкой, пригодной для многозвенок


D>Единственное что меня собственно несколько заботит это незнание SQL диалекта FB но это несерьёзно



Это ты думаешь, что у тебя есть опыт написания O-R маперов.
Посмототри проекты этих маперов из числа open source. И оцени после этого, сколько тебе времени и сил понадобится для того, чтобы полноценно повторить это на Дельфе. Уверен, что после того, как подробнее ознакомишься с этой темой, желание писать очередной свой мапер у тебя отпадет.

P.S. Nothing personal.
Re[4]: R/O mapping для FireBird
От: dimzon Россия http://dimzon541.narod.ru
Дата: 18.05.04 15:12
Оценка: -1 :)
Здравствуйте, Lloyd, Вы писали:

L>Это ты думаешь, что у тебя есть опыт написания O-R маперов.

L>Посмототри проекты этих маперов из числа open source. И оцени после этого, сколько тебе времени и сил понадобится для того, чтобы полноценно повторить это на Дельфе. Уверен, что после того, как подробнее ознакомишься с этой темой, желание писать очередной свой мапер у тебя отпадет.

Я вопрос задавал по предложениям/идеям. А про свои желания и возможности я сам прекрасно знаю. Сударь, со всей ответственностью заявляю что опыт есть, алгоритмы есть, работающая версия на которой крутится куча(!) коммерческих проектов есть. За 2-4 месяца неспешного кодирования (по желанию 1-2 часа в день через день) всё это преспокойно ляжет(читай будет портировано) в Delphi для FB. Будет 3 интерфейса 2 из которых необходимо будет реализовать самому (для взаимодействия мапера с БД), третий — интерфейс самого мапера. В базу будут укладываться сколь угодно сложные(практически) структуры данных (коллекции взаимосвязанных объектов) с минимальным overhead-ом. Исходный мапер является COM-компонентом на VB работающим с БД (MSSQL и Oracle) через ADO и для Desktop приложений не шибко подходит по ряду причин посему я и затеял всё это дело. Хочу вот поделится с людьми а они меня отговаривают, забавно
Re[5]: R/O mapping для FireBird
От: Lloyd Россия  
Дата: 18.05.04 15:54
Оценка:
Здравствуйте, dimzon, Вы писали:

D>Я вопрос задавал по предложениям/идеям. А про свои желания и возможности я сам прекрасно знаю. Сударь, со всей ответственностью заявляю что опыт есть, алгоритмы есть, работающая версия на которой крутится куча(!) коммерческих проектов есть. За 2-4 месяца неспешного кодирования (по желанию 1-2 часа в день через день) всё это преспокойно ляжет(читай будет портировано) в Delphi для FB. Будет 3 интерфейса 2 из которых необходимо будет реализовать самому (для взаимодействия мапера с БД), третий — интерфейс самого мапера. В базу будут укладываться сколь угодно сложные(практически) структуры данных (коллекции взаимосвязанных объектов) с минимальным overhead-ом. Исходный мапер является COM-компонентом на VB работающим с БД (MSSQL и Oracle) через ADO и для Desktop приложений не шибко подходит по ряду причин посему я и затеял всё это дело. Хочу вот поделится с людьми а они меня отговаривают, забавно


Сударь, ни в коем случае не хотел умалить ваши достоинства/таланты. Но все-таки ради интереса посмотрите Hibernate. Дистрибутив в районе двух десятков метров и документация на несколько сотен страниц дают основания предполагать, что все-таки нормальный мапер неспешно за пару месяцев на коленке не пишется.
Re[6]: R/O mapping для FireBird
От: dimzon Россия http://dimzon541.narod.ru
Дата: 18.05.04 16:06
Оценка:
Здравствуйте, Lloyd, Вы писали:

L>Здравствуйте, dimzon, Вы писали:



L>Сударь, ни в коем случае не хотел умалить ваши достоинства/таланты. Но все-таки ради интереса посмотрите Hibernate. Дистрибутив в районе двух десятков метров и документация на несколько сотен страниц дают основания предполагать, что все-таки нормальный мапер неспешно за пару месяцев на коленке не пишется.


Сударь, это говорит только о том что мой мапер будет "ненормальный" Всё гениальное просто
Ну а если по существу — вот отличительные особенности моего мапера:
— использование XML вместо классов
Действительно я не планирую делать O-R мапер в полном объёме. Т.е. мапер не будет сохранять/загружать дельфовые классы. Вместо этого мапер будет оперировать XML (Объект это XMLElement, дочерние элементы XMLElement-а это свойства объекта...) Это съэкономит мне кучу времени на пляске вокруг RTTI
Re[7]: R/O mapping для FireBird
От: Lloyd Россия  
Дата: 18.05.04 16:12
Оценка:
Здравствуйте, dimzon, Вы писали:

D>Сударь, это говорит только о том что мой мапер будет "ненормальный" Всё гениальное просто

D>Ну а если по существу — вот отличительные особенности моего мапера:
D>- использование XML вместо классов
D> Действительно я не планирую делать O-R мапер в полном объёме. Т.е. мапер не будет сохранять/загружать дельфовые классы. Вместо этого мапер будет оперировать XML (Объект это XMLElement, дочерние элементы XMLElement-а это свойства объекта...) Это съэкономит мне кучу времени на пляске вокруг RTTI

Ну это уже не O-R, а X-R мапер.
Re[8]: R/O mapping для FireBird
От: dimzon Россия http://dimzon541.narod.ru
Дата: 18.05.04 16:17
Оценка:
Здравствуйте, Lloyd, Вы писали:

L>Ну это уже не O-R, а X-R мапер.

Пусть так (мне даже понравилось).
Опять же при желании никто не мешает позже докрутить O-X мапер

Ну ладно, наверно хватит флеймить, есть предложения/пожелания/советы по существу?
Re[9]: R/O mapping для FireBird
От: Lloyd Россия  
Дата: 18.05.04 16:21
Оценка:
Здравствуйте, dimzon, Вы писали:

D>Пусть так (мне даже понравилось).

D>Опять же при желании никто не мешает позже докрутить O-X мапер

D>Ну ладно, наверно хватит флеймить, есть предложения/пожелания/советы по существу?


Угу. Есть. Посмотри Хибернэйт. И забудь после этого свою затею писать мапер.
Re[10]: R/O mapping для FireBird
От: dimzon Россия http://dimzon541.narod.ru
Дата: 18.05.04 16:22
Оценка:
Здравствуйте, Lloyd, Вы писали:

L>Здравствуйте, dimzon, Вы писали:


D>>Пусть так (мне даже понравилось).

D>>Опять же при желании никто не мешает позже докрутить O-X мапер

D>>Ну ладно, наверно хватит флеймить, есть предложения/пожелания/советы по существу?


L>Угу. Есть. Посмотри Хибернэйт. И забудь после этого свою затею писать мапер.

Сцылку дай
Re[11]: R/O mapping для FireBird
От: Lloyd Россия  
Дата: 18.05.04 16:30
Оценка:
Здравствуйте, dimzon, Вы писали:

D>Сцылку дай


здесь
Re[12]: R/O mapping для FireBird
От: dimzon Россия http://dimzon541.narod.ru
Дата: 18.05.04 16:39
Оценка:
Здравствуйте, Lloyd, Вы писали:

L>Здравствуйте, dimzon, Вы писали:


D>>Сцылку дай


L>здесь


Глянул! Не, такое я ТОЧНО делать не буду. Нафиг! А вот простенькую библиотечку забацаю — самое то будет. А этот самый хибернейт черезчур уж наворочен, мне например такой функционал нафиг ненужен! Мне нужно чтобы при сохранении сложных структур UPDATE/INSERT-ы руками не конструировать — создал XML, скормил маперу — он фсё но табличкам аккуратно разложил. Мапер это вообще интерфейс с 10-ю методами Причём заметь — за аккуратность и грамотность сохранения отвечаю на 100%

И опять же — хибернейт он для Явы а я про Дельфи говорю
Re[13]: R/O mapping для FireBird
От: Lloyd Россия  
Дата: 18.05.04 16:47
Оценка:
Здравствуйте, dimzon, Вы писали:

D>Глянул! Не, такое я ТОЧНО делать не буду. Нафиг! А вот простенькую библиотечку забацаю — самое то будет. А этот самый хибернейт черезчур уж наворочен, мне например такой функционал нафиг ненужен! Мне нужно чтобы при сохранении сложных структур UPDATE/INSERT-ы руками не конструировать — создал XML, скормил маперу — он фсё но табличкам аккуратно разложил. Мапер это вообще интерфейс с 10-ю методами Причём заметь — за аккуратность и грамотность сохранения отвечаю на 100%


Не зарекайся. Грамотность сохранения подразумевает, например, что в апдейте участвуют только измененные поля.

D>И опять же — хибернейт он для Явы а я про Дельфи говорю


А выбирать из базы ты каким образом будешь?
Re[14]: R/O mapping для FireBird
От: dimzon Россия http://dimzon541.narod.ru
Дата: 18.05.04 16:57
Оценка:
Здравствуйте, Lloyd, Вы писали:

L>Здравствуйте, dimzon, Вы писали:


L>Не зарекайся. Грамотность сохранения подразумевает, например, что в апдейте участвуют только измененные поля.

Не зарекаюсь — ЗНАЮ Я же говорю — есть уже работающий код просто он в виде COM-а и на VB и НЕ ДЛЯ FB Там много тонкостей например в т.ч. и с уникальными индексами и с ссылочной целостностью, я обо всём в курсе (этот самый компонент на VB ужо за 3 года обкатали)

D>>И опять же — хибернейт он для Явы а я про Дельфи говорю

L>А выбирать из базы ты каким образом будешь?
Если данные ТОЛЬКО на чтение то лучше и быстрее обычного SELECT-а исчо никто не придумал.
Если для модификации — будет метод который по имени таблицы и первичному ключу возвращает заполненный XML.
Re[13]: R/O mapping для FireBird
От: Supervisor Беларусь  
Дата: 19.05.04 07:05
Оценка:
Здравствуйте, dimzon, Вы писали:

D>Глянул! Не, такое я ТОЧНО делать не буду. Нафиг! А вот простенькую библиотечку забацаю — самое то будет.

удачи... собственно, что тебе мешает? Просто есть большие подозрения, что твоя простенькая библиотечка может и будет эффективно работать с базой в которой 2-3 таблицы, по 10 записей в каждой, но вот на больших объемах сомнительно.


D> А этот самый хибернейт черезчур уж наворочен, мне например такой функционал нафиг ненужен! Мне нужно чтобы при сохранении сложных структур UPDATE/INSERT-ы руками не конструировать — создал XML, скормил маперу — он фсё но табличкам аккуратно разложил.

Hibernate именно так и работает — создаешь класс, который будешь мапировать, создаешь XML-файл, в котором указываешь какие поля и по каким правилам будешь мапить, а потом все обращение к базе идет ИМЕННО на уровне объектов, все операции типа SELECT/INSERT/UPDATE/DELETE библитека сама cделает.

D>Мапер это вообще интерфейс с 10-ю методами

А перечислить их тебя не затруднит?

D>Причём заметь — за аккуратность и грамотность сохранения отвечаю на 100%

Тесты, таварисч, хотелось бы видеть тесты.

D>И опять же — хибернейт он для Явы а я про Дельфи говорю

есть порт для .NET, правда еще в стадии alfa-версии
... << RSDN@Home 1.1.3 beta 2 >>
Re[14]: R/O mapping для FireBird
От: dimzon Россия http://dimzon541.narod.ru
Дата: 19.05.04 08:53
Оценка:
Здравствуйте, Supervisor, Вы писали:

S>Здравствуйте, dimzon, Вы писали:


S>удачи... собственно, что тебе мешает? Просто есть большие подозрения, что твоя простенькая библиотечка может и будет эффективно работать с базой в которой 2-3 таблицы, по 10 записей в каждой, но вот на больших объемах сомнительно.

Хм. Я же говорю есть работающий компонент на котором живут большие проекты (последний проект это порядка 40 таблиц в некоторых ~поллимона записей)


S>Hibernate именно так и работает — создаешь класс, который будешь мапировать, создаешь XML-файл, в котором указываешь какие поля и по каким правилам будешь мапить, а потом все обращение к базе идет ИМЕННО на уровне объектов, все операции типа SELECT/INSERT/UPDATE/DELETE библитека сама cделает.

Не совсем. Hibernate работает с Java-клсаами, у меня это не классы а структуры XML


D>>Мапер это вообще интерфейс с 10-ю методами

S> А перечислить их тебя не затруднит?
Примерно так:


type
  // IFBAdapterDataReader & IFBAdapter - обёртки вокруг любой библиотеки работы с Firebird
  IFBAdapterDataReader= interface
    function MoveNext():boolean;
    function FieldValueAsVariant(nFieldIndex):Variant
  end;

  IFBAdapter=interface
    function ExecuteSqlStatement(sSql: string ):integer;
    function ExecuteSqlAndReturnDataReader(sSql: string ):IFBAdapterDataReader;
  end;

  IXRFBMapper = interface
    function NewObject(sObjectType:string):IXMLDOMElement;
    function ReadObject(oFBAdapter: IFBAdapter; sObjectType:string; sObjectKey:string):IXMLDOMElement;
    function WriteObject(oFBAdapter: IFBAdapter; oObject: IXMLDOMElement; bCheckVersions: boolean ):boolean;
    function BatchWrite(oFBAdapter: IFBAdapter; oContainer: IXMLDOMElement; bCheckVersions: boolean ):boolean;
    function ReadObjectProperty(oFBAdapter: IFBAdapter; oObjectProperty: IXMLDOMElement):IXMLDOMElement;
    function ReadObjectPropertyByObjectKey(oFBAdapter: IFBAdapter; sObjectType:string; sObjectKey:string; sPropertyName: string):IXMLDOMElement;
    function DeleteObject(oFBAdapter: IFBAdapter; oObject: IXMLDOMElement):boolean;
    function DeleteObjectByObjectKey(oFBAdapter: IFBAdapter; sObjectType:string; sObjectKey:string):boolean;
  end;
Re: R/O mapping для FireBird
От: dimzon Россия http://dimzon541.narod.ru
Дата: 20.05.04 12:27
Оценка:
Собственно уже сделал:
Создание
Загрузка
Удаление
Осталось самое сложное — Сохранение

Ожидайте альфа-версию через пару недель
Re[2]: R/O mapping для FireBird
От: dik76  
Дата: 21.05.04 06:39
Оценка:
Здравствуйте, dimzon.

Я в данном вопросе профан.
Раскажите, плиз, о методологии работы мепера или может дадите ссылочку где можно почитать об этом.

Заранее спасибо, Dik76.
Re[3]: R/O mapping для FireBird
От: lazymf Россия  
Дата: 21.05.04 07:00
Оценка:
Здравствуйте, dik76, Вы писали:

D>Я в данном вопросе профан.

D>Раскажите, плиз, о методологии работы мепера или может дадите ссылочку где можно почитать об этом.

Вот здесь есть кое-какая инфа.
silent
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.