Форум: "Базы";
Текущий архив: 2004.09.12;
Скачать: [xml.tar.bz2];
ВнизКак правильно сохранить объекты в базе? Найти похожие ветки
← →
miwa © (2004-08-14 19:18) [0]Сразу уточню, что работаю с firebird.
Представляю себе несколько путей:
1. Внешней процедурой.
Процедура получает объект в качестве параметра, заполняет его полями параметры запроса и отсылает на сервер ExecSQL. Не нравится тем, что это подход "в лоб". Не знаю почему, но он мне кажется неправильным. Не соответствующим ни ООП ни современным БД.
2. Методом объекта.
В объекте пишется специальный метод, который сохраняет объект. Этот подход мне не нравится тем, что в модуль реализации класса автоматом добавляется пара модулей для оперирования, например, запросом TIBQuery.
3. Stored procedure.
А этот подход я просто не представляю как реализовывать. Как передать процедуре объект целиком, а не просто кучу свойств (так как в этом случае мы просто будем иметь вариацию первого или второго подхода).
← →
Desdechado © (2004-08-14 20:30) [1]если тебе нужно просто хранение данных без всяких там:
сортировок,
выборок с объединением других таблиц по свойствам объекта,
т.п.
то можешь просто сохранять его в BLOB-поле методом TPersistent.SaveToStream
← →
jack128 © (2004-08-14 22:26) [2]
> TPersistent.SaveToStream
а что, в семерке такой метод появился?
← →
miwa © (2004-08-14 23:28) [3]Не, как раз нужны и выборки и сортировки и весь остальной комплект, который предоставляет "среднестатистическая" БД. А еще этих объектов ожидается дысячи-десятки тысяч. И воспомагательной информации об объектах, непосредственно завязаной на них (на ID тоесть) - уже на сотни тысяч записей.
← →
Desdechado © (2004-08-15 14:48) [4]2 jack128
Нет, но что мешает его написать? Тем более, что там предусмотрен для этого виртуальный метод DefineProperties. Я ж просто направление показал.
2 miva
Т.е. тебе надо, например, сделать выборку объектов, у которых цвет красный, но они не железные и не бытовая техника? Тогда в БЛОБе не катит, конечно.
А что тебя во втором методе смущает? То, что подключаешь другие модули? Ну, так это не страшно. Объект должен знать, как себя сохранять, раз уж он должен быть сохранен в БД. И должен знать, как себя считать и инициализировать. Все в порядке вещей. Тем более если объекты разных классов и каждый имеет свои особенности сохранения. Если же класс один, то тем более тревога не ясна.
Объемы в 10-100 тыс смешные для SQL-серверов.
← →
miwa © (2004-08-16 21:50) [5]
> Т.е. тебе надо, например, сделать выборку объектов, у которых
> цвет красный, но они не железные и не бытовая техника?
Да, что-то типа того :о))
> Все в порядке вещей. Тем более если объекты разных классов
> и каждый имеет свои особенности сохранения. Если же класс
> один, то тем более тревога не ясна.
Не, ну почему же не ясна - малое количество и низкое качество располагаемых знаний ;о((. Относительно, конечно ;о)).
> Объемы в 10-100 тыс смешные для SQL-серверов.
Знаю, но для самостоятельной обработки это уж слишком. Поэтому и остановился на SQL.
Значит, говорите, ничего зазорного нету в том, что я в свой u_classes (так он у меня называется, модуль-то) напишуuses DB, IB, IBCustomDataSet, IBQuery, IBDatabase
? Что ж. Если так, тогда всем спасибо за внимание.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.09.12;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.033 c