Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2003.09.08;
Скачать: [xml.tar.bz2];

Вниз

Технология Клиент-Сервер   Найти похожие ветки 

 
alxx   (2003-08-21 17:11) [0]

Кто как предпочитает работать с базой при использовании этой технологии? Я, например, использую запросы Insert, Update, Select и компоненты типа TEdit для работы с отдельными записями (большая часть запросов генерится автоматически). Но один мой знакомый пытается использовать DBEdit на временной таблице с последующим обновлением реальной таблицы (мне кажется, это изврат).


 
Ru   (2003-08-21 17:19) [1]

>alxx © (21.08.03 17:11)

смотря какой движок базы данных. Например InterBase примерно так и работает. У него есть редактируемые представления (view) и копии реальной таблицы (в необходимом объеме не обязательно вся таблица).


 
alxx   (2003-08-21 17:24) [2]

MSSQLServer у нас обоих.


 
Romkin   (2003-08-21 17:26) [3]

Я всегда предпочитаю цеплять визуализацию (TDBEdit etc) к TClientDataset, которую уже через провайдера - к тому, что надо. Получается полная свобода, управляемость и однообразие :)


 
Nikolay M.   (2003-08-21 17:53) [4]


> один мой знакомый пытается использовать DBEdit на временной
> таблице с последующим обновлением реальной таблицы (мне
> кажется, это изврат).

Действительно, эти извращенцы в борланде придумали чушь какую-то: DBAware-компоненты какие-то... На фига они нужны, если для обновления какой-нибудь таблицы с десятком полей сформировать динамический UPDATE-запрос это как два пальца намочить :)

А Romkin дело говорит.


 
Ru   (2003-08-21 18:00) [5]

>Nikolay M. © (21.08.03 17:53) [4]

в некоторых проектах DBAware компоненты нужны также как рыбке зонтик


 
Nikolay M.   (2003-08-21 18:02) [6]


> Ru © (21.08.03 18:00) [5]

Кто-бы спорил. Просто порадовала фраза "с последующим обновлением реальной таблицы (мне кажется, это изврат)" :)


 
Ru   (2003-08-21 18:05) [7]

>Nikolay M. © (21.08.03 18:02) [6]

это уже другой вопрос


 
alxx   (2003-08-21 18:17) [8]

Вот елки-палки... Мне как-то кажется, что написать динамический запрос проще, чем следить за состоянием набора данных постоянно... :(


 
Romkin   (2003-08-21 18:42) [9]

А когда начинаешь задумываться над производительностью, постепенно само собой получается так, что стараешься давать как можно меньше запросов к базе, дулать как можно более короткие транзакции, передавать как можно меньше данных.
В результате при грамотном планировании реальный выигрыш по времени иногда десятикратным получается, как минимум :)
Приведу пример, из практики.
Имелась форма, сложная, для редактирования. На ней - 3 поля для клиентов (ФИО там или наименование). Что проще?
Все на TClientDataset, следовательно, открыл - и сиди спокойно, транзакция закрыта :)
Решение первое, естественное. При показе формы открыть справочник клиентов и на форме - TDBLookupComboBox. В справочнике - уже конкатенация ФИО или юр. наименования и др. в вычислимом поле, только показать. Удобно. Но справочник растет, и довольно быстро - задержки на открытие растут...
Решение второе. Хранимая процедура, выдающая по заданному ключу одну запись - только показать. На форме уже TDBEdit, присоединенный к calculated field, на событие калькуляции - обращение к процедуре. Рядом с полем - кнопка для вызова формы справочника клиентов. Но список растет :) Три поля - три запроса, дергающиеся на каждое шевеление полей в записи :)
Решение третье. Сделали InternalCalc fields - их можно как обычные использовать, и обращение только если пользователь сменил клиента, по изменению ссылочных полей :) Уже лучше, дергает только когда надо... Но все равно, на медленной машине (увы, пришлось), задержка заметна.
Решение четвертое. Сделали вспомогательную таблицу (warehouse), в которую триггерами пихается полное имя, а процедуру его выборки упростили максимально - взять строку из этой таблицы по первичному ключу :).

Вот так, постепенно и получилось так, что даже на P233 пользователь часиков вообще не видел :))) Ускорение даже считать не буду... Где-то на несколько порядков



Страницы: 1 вся ветка

Форум: "Потрепаться";
Текущий архив: 2003.09.08;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.007 c
7-24722
Dmitriy M. Volkov
2003-06-24 13:51
2003.09.08
Замена стандартного taskmgr в WinXP


1-24448
Shadow[AN]
2003-08-25 16:25
2003.09.08
Отображение unicode в Delphi (конкретно- иврит)


1-24520
Коля
2003-08-27 02:25
2003.09.08
ReplaceStr


3-24328
Dush
2003-08-18 16:17
2003.09.08
Помогите со структурой таблицы


3-24378
ASt
2003-08-15 20:41
2003.09.08
Чтение данных из таблицы





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский