|
Модераторы: LSD |
|
Vit |
|
|||
Vitaly Nevzorov Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: 14 Всего: 207 |
Не совсем так. Всё сложнее. Для эффективной работы клиент сервера от клиента нужно: 1) Правильные блокировки 2) Кэширование данных на клиентской части 3) Передача данных кусками а не целиком по запросу Если клиентская система этого не поддерживает то производительность будет очень низкая, ODBC как раз с этим справляется не очень... -------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
|||
|
||||
Cashey |
|
|||
Бессмертный Профиль Группа: Завсегдатай Сообщений: 3441 Регистрация: 13.11.2002 Где: в столице Репутация: нет Всего: 60 |
Ну Vit, первый пункт решается программистом, по крайне мере в фоксе все блокировки прописываются программно, да и в других локальных БД то же. Со вторым пунктом справляются все боле менее популярные драйвера (в том числе и ODBC). А передача данных кусками, это как раз особенность клиент-серверных БД. -------------------- библия учит любить ближнего, а камасутра обучает как именно |
|||
|
||||
Alex |
|
|||
Эксперт Профиль Группа: Экс. модератор Сообщений: 4147 Регистрация: 25.3.2002 Где: Москва Репутация: нет Всего: 162 |
Это интересно как же. У тебя есть база данных, которая лежит на серваке твоя прога к ней подключается и начинает редактировать какой то набор данных, в этот момент запускается еще одна версия твоей программы и тоже хочет отредактировать те данные, которые редактирует 1 программа. И как в этом случае узнать, что данные уже кем-то редактируются? -------------------- Написать можно все - главное четко представлять, что ты хочешь получить в конце. |
|||
|
||||
Cashey |
|
|||
Бессмертный Профиль Группа: Завсегдатай Сообщений: 3441 Регистрация: 13.11.2002 Где: в столице Репутация: нет Всего: 60 |
RLock и второй проге будет показана фига -------------------- библия учит любить ближнего, а камасутра обучает как именно |
|||
|
||||
Vit |
|
|||
Vitaly Nevzorov Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: 14 Всего: 207 |
Вот в том то и дело... Что фига... -------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
|||
|
||||
Cashey |
|
|||
Бессмертный Профиль Группа: Завсегдатай Сообщений: 3441 Регистрация: 13.11.2002 Где: в столице Репутация: нет Всего: 60 |
ну а что должно будет произойти? -------------------- библия учит любить ближнего, а камасутра обучает как именно |
|||
|
||||
Vit |
|
||||||
Vitaly Nevzorov Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: 14 Всего: 207 |
Нет. Блокировки фокса тут не причём, мы же говорим о клиент-сервере, следовательно говорим о серверных а не локальных базах данных.
Очень-очень плохо справляются, драйвера не рассчитанные на клиент-серверные технологии типа DAO/ODBC/BDE неправильно распределяют загрузку сети, неправильно делают кэширование, что очень сильно тормозит.
Нет, база данных ничего никуда не передаёт. Передача данных от клиента к серверу - это прерогатива драйвера. А чтобы не быть голословным, проведи эксперимент: 1) Создай таблицу в MS SQL Server средних размеров, на десяток полей и десяток миллионов рекордов 2) напиши клиента который в цикле будет выполнять на таблице Select, Update и Insert запросы постоянно со случайными параметрами, причём напиши клиента в 2х ипостасях - один с коннектом через ODBC, другой через ADO. 3) Запусти по 10 экземпляров клиента с 10 разных компьютеров и посмотри как будет работать клиент через ADO и клиент через ODBC. Я пробовал, на одних и тех же запросах и данных - на ADO клиент работать нормально, и сервак справляется. На ODBC - сервак умирает - загрузка процессора 100%, запросы длятся десятками минут, сеть лежит... -------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
||||||
|
|||||||
Cashey |
|
|||
Бессмертный Профиль Группа: Завсегдатай Сообщений: 3441 Регистрация: 13.11.2002 Где: в столице Репутация: нет Всего: 60 |
Ну так серверный БД и так блокируют нормально, это их прямая обязанность. С остальным я соглашусь, но вопрос звучал об использовании клиента, а не драйвера. А точнее, переходить ли с базы access на какую-то другую. С большинством баз можно коннектится как средствами ADO так и ODBC, а об их отличиях уже говорилось и не раз. И я говорил о том, что большой разницы в клиенте не будет. -------------------- библия учит любить ближнего, а камасутра обучает как именно |
|||
|
||||
Vit |
|
|||
Vitaly Nevzorov Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: 14 Всего: 207 |
В том то и дело, сервера имеют очень много различных видов блокировок. Например есть у меня таблица погоды в разных городах: Город ---- Темепратура Воздуха --- Влажность --- Давление Есть три клиента работающие одновременно: 1) Клиент А - обновляет таблицу данными по Магаданской области. 2) Клиент Б - обновляет таблицу данными по Московской области. 3) Клиент С - запрашивает таблицу о погоде в Москве Они запустили запросы примерно одновременно. Кто кого должен блокировать? Да никто никого не должен! Они вообще не должны друг другу мешать... А не клиентсерверные системы этого обеспечить не могут, один из Update блокирует таблицу по записи, а если совсем не повезёт то и по чтению, второй Update при этом должен ждать результатов первого. Селект тоже может быть затребован очень хреново: допустим селект должен вернуть данные по всему Европейскому региону, начинает перекачивать на клиент данные, на пол пути клиент Б делает обновление, и клиент начинает тянуть данные опять с начала... и т.д. Когда таких одновременных запросов накапливается несколько десятков - сеть, сервак и клиенты сдыхают... Клиент-серверные технологии, например ADO дают очень хороший контроль над возможностью установить именно тот уровень блокировки который нужен, а другие - дают эту возможность лишь в очень урезанном виде.... -------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
|||
|
||||
Cashey |
|
|||
Бессмертный Профиль Группа: Завсегдатай Сообщений: 3441 Регистрация: 13.11.2002 Где: в столице Репутация: нет Всего: 60 |
Именно поэтому надо прописовать програмно блокировку каждой записи, т.е. бежит курсор по записям, встал-заблокировал, ушел-разблокировал, а не блокировать всю таблицу. В файл-серверных БД это надо прописывать руками, в клиент-серверных, по идеи, это должно работать автоматически. -------------------- библия учит любить ближнего, а камасутра обучает как именно |
|||
|
||||
Vit |
|
|||
Vitaly Nevzorov Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: 14 Всего: 207 |
Это не может работать автоматически, точнее это работает автоматически но пользователь обязан указать какую блокировку использовать. Например в приведенном выше примере блокировки не нужны, а если бы допустим у меня были финансовые транзакции, то нужна была бы блокировка чтобы пресечь 2 одновременные транзакции с одими и теми же деньгами... В каждом конкретном случае нужен свой тип блокировок, и этим можно управлять. Системы локальных баз не умеют по нормальному обеспечить установку блокировок и по умолчанию используют самые безопастные, а потому самые "сильные" блокировки, которые в 90% случаев излишни и сильно тормозят работу. -------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
|||
|
||||
Cashey |
|
|||
Бессмертный Профиль Группа: Завсегдатай Сообщений: 3441 Регистрация: 13.11.2002 Где: в столице Репутация: нет Всего: 60 |
так я и говорю, в локальных это надо прописывать программисту в ручную.
-------------------- библия учит любить ближнего, а камасутра обучает как именно |
|||
|
||||
Vit |
|
|||
Vitaly Nevzorov Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: 14 Всего: 207 |
Я не спорю, я утверждаю вещь лежащую АБСОЛЮТНО в другой плоскости. Я вообще не трогаю ЛОКАЛЬНЫЕ базы данных, не пытайся меня сбить на FOX в каждом своём топике... Попытайся понять то что я скажу: BDE или ODBC при работе с клиент-серверными базами данных НЕ В СОСТОЯНИИ обеспечить правильную установку блокировок, что приводит к наложению неоптимальных для данной задачи блокировок и сильному снижению производительности - это и является одной из причин того, что использование BDE или ODBC для серверов баз данных невыгодно и вызывает конкретную тормознутость системы. И это мой ответ на твою фразу: "Поэтому имеет малое значение что является клиентской частью, она все-равно работает с минимальной выборкой и говорить о радикальном приросте производительности от смены одной на другую не приходится." с которой я и спорю, утверждая, что при переходе на клиент сервер прийдётся менять клиентскую часть и весьма сильно, как минимум уход от BDE/ODBC. При чём тут fox к которому ты пытаешься аппелировать в каждом своём ответе я понять категорически не могу! -------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
|||
|
||||
Euclid |
|
|||
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 26.10.2004 Репутация: нет Всего: 1 |
Вопрос был в том что Ассесс использует ODBC для связи с MS SQL. А здесь утверждается, что ODBC в сети медленна. Так может именно по этой причине не стоит использовать связку Ассесс - MS SQL при большом числе пользователей ( 30 )?
Кстати клиентская часть при MS SQL обычно тонкая, большая часть работы происходит на сервере. Так иммет ли смысл использовать С++ для клиентской части. Программироваровать на VB намного легче. Или все-таки у С++ для клиентской части есть преимущества перед VB ( кроме личных предпочтений). |
|||
|
||||
Vit |
|
|||
Vitaly Nevzorov Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: 14 Всего: 207 |
Хех, не могу сказать как Access соединяется с MS SQL Server... Увы не компетентен, если на VB проще писать, то используйте VB - он прекрасно поддерживает ADO
-------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
|||
|
||||
Правила форума "Общие вопросы по базам данных" | |
|
Данный форум предназначен для обсуждения вопросов о базах данных не попадающих под тематику других форумов:
Данный форум не предназначен для:
Если вы не соблюдаете эти правила, не удивляйтесь потом не найдя свою тему/сообщение.
Полезные советы: Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, LSD, Zloxa. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | СУБД, общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |