Модераторы: LSD

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Какую базу данных выбрать? Самый краткий FAQ! 
:(
    Опции темы
Vit
Дата 9.12.2004, 15:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 14
Всего: 207



Цитата(Cashey @ 8.12.2004, 15:39)
На сколько я понимаю основное отличие файл-серверных БД от клиент-серверных заключается в том, что последние производят все вычесления на сервере и передают клиенту выборку. А локальные БД тянут всю таблицу. Поэтому имеет малое значение что является клиентской частью, она все-равно работает с минимальной выборкой и говорить о радикальном приросте производительности от смены одной на другую не приходится.



Не совсем так. Всё сложнее. Для эффективной работы клиент сервера от клиента нужно:

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
PM MAIL WWW ICQ   Вверх
Cashey
Дата 9.12.2004, 23:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бессмертный
****


Профиль
Группа: Завсегдатай
Сообщений: 3441
Регистрация: 13.11.2002
Где: в столице

Репутация: нет
Всего: 60



Цитата(Vit @ 9.12.2004, 15:16)
1) Правильные блокировки
2) Кэширование данных на клиентской части
3) Передача данных кусками а не целиком по запросу


Ну Vit, первый пункт решается программистом, по крайне мере в фоксе все блокировки прописываются программно, да и в других локальных БД то же.
Со вторым пунктом справляются все боле менее популярные драйвера (в том числе и ODBC). А передача данных кусками, это как раз особенность клиент-серверных БД.



--------------------
библия учит любить ближнего, а камасутра обучает как именно
PM Jabber   Вверх
Alex
Дата 9.12.2004, 23:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4147
Регистрация: 25.3.2002
Где: Москва

Репутация: нет
Всего: 162



Цитата(Cashey @ 9.12.2004, 23:42)
Ну Vit, первый пункт решается программистом, по крайне мере в фоксе все блокировки прописываются программно, да и в других локальных БД то же.

Это интересно как же. У тебя есть база данных, которая лежит на серваке твоя прога к ней подключается и начинает редактировать какой то набор данных, в этот момент запускается еще одна версия твоей программы и тоже хочет отредактировать те данные, которые редактирует 1 программа. И как в этом случае узнать, что данные уже кем-то редактируются?


--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
Cashey
Дата 10.12.2004, 00:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бессмертный
****


Профиль
Группа: Завсегдатай
Сообщений: 3441
Регистрация: 13.11.2002
Где: в столице

Репутация: нет
Всего: 60



Цитата(Alex @ 9.12.2004, 23:54)
Это интересно как же. У тебя есть база данных, которая лежит на серваке твоя прога к ней подключается и начинает редактировать какой то набор данных, в этот момент запускается еще одна версия твоей программы и тоже хочет отредактировать те данные, которые редактирует 1 программа. И как в этом случае узнать, что данные уже кем-то редактируются?


RLock smile и второй проге будет показана фига smile


--------------------
библия учит любить ближнего, а камасутра обучает как именно
PM Jabber   Вверх
Vit
Дата 10.12.2004, 00:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 14
Всего: 207



Цитата(Cashey @ 9.12.2004, 15:03)
RLock  и второй проге будет показана фига 



Вот в том то и дело... Что фига...


--------------------
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
PM MAIL WWW ICQ   Вверх
Cashey
Дата 10.12.2004, 00:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бессмертный
****


Профиль
Группа: Завсегдатай
Сообщений: 3441
Регистрация: 13.11.2002
Где: в столице

Репутация: нет
Всего: 60



Цитата(Vit @ 10.12.2004, 00:12)
Вот в том то и дело... Что фига...

ну а что должно будет произойти?


--------------------
библия учит любить ближнего, а камасутра обучает как именно
PM Jabber   Вверх
Vit
Дата 10.12.2004, 00:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 14
Всего: 207



Цитата(Cashey @ 9.12.2004, 14:42)
Ну Vit, первый пункт решается программистом, по крайне мере в фоксе все блокировки прописываются программно, да и в других локальных БД то же.



Нет. Блокировки фокса тут не причём, мы же говорим о клиент-сервере, следовательно говорим о серверных а не локальных базах данных.


Цитата(Cashey @ 9.12.2004, 14:42)
Со вторым пунктом справляются все боле менее популярные драйвера (в том числе и ODBC).


Очень-очень плохо справляются, драйвера не рассчитанные на клиент-серверные технологии типа DAO/ODBC/BDE неправильно распределяют загрузку сети, неправильно делают кэширование, что очень сильно тормозит.



Цитата(Cashey @ 9.12.2004, 14:42)
А передача данных кусками, это как раз особенность клиент-серверных БД.


Нет, база данных ничего никуда не передаёт. Передача данных от клиента к серверу - это прерогатива драйвера. А чтобы не быть голословным, проведи эксперимент:
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
PM MAIL WWW ICQ   Вверх
Cashey
Дата 10.12.2004, 00:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бессмертный
****


Профиль
Группа: Завсегдатай
Сообщений: 3441
Регистрация: 13.11.2002
Где: в столице

Репутация: нет
Всего: 60



Цитата(Vit @ 10.12.2004, 00:23)
Нет. Блокировки фокса тут не причём, мы же говорим о клиент-сервере, следовательно говорим о серверных а не локальных базах данных.

Ну так серверный БД и так блокируют нормально, это их прямая обязанность.

С остальным я соглашусь, но вопрос звучал об использовании клиента, а не драйвера. А точнее, переходить ли с базы access на какую-то другую. С большинством баз можно коннектится как средствами ADO так и ODBC, а об их отличиях уже говорилось и не раз. И я говорил о том, что большой разницы в клиенте не будет.


--------------------
библия учит любить ближнего, а камасутра обучает как именно
PM Jabber   Вверх
Vit
Дата 10.12.2004, 02:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 14
Всего: 207



Цитата(Cashey @ 9.12.2004, 15:33)
Цитата (Vit @ 10.12.2004, 00:23)
Нет. Блокировки фокса тут не причём, мы же говорим о клиент-сервере, следовательно говорим о серверных а не локальных базах данных.


Ну так серверный БД и так блокируют нормально, это их прямая обязанность.



В том то и дело, сервера имеют очень много различных видов блокировок. Например есть у меня таблица погоды в разных городах:

Город ---- Темепратура Воздуха --- Влажность --- Давление

Есть три клиента работающие одновременно:

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
PM MAIL WWW ICQ   Вверх
Cashey
Дата 10.12.2004, 19:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бессмертный
****


Профиль
Группа: Завсегдатай
Сообщений: 3441
Регистрация: 13.11.2002
Где: в столице

Репутация: нет
Всего: 60



Цитата(Vit @ 10.12.2004, 02:26)
А не клиентсерверные системы этого обеспечить не могут, один из Update блокирует таблицу по записи, а если совсем не повезёт то и по чтению, второй Update при этом должен ждать результатов первого.

Именно поэтому надо прописовать програмно блокировку каждой записи, т.е. бежит курсор по записям, встал-заблокировал, ушел-разблокировал, а не блокировать всю таблицу. В файл-серверных БД это надо прописывать руками, в клиент-серверных, по идеи, это должно работать автоматически.



--------------------
библия учит любить ближнего, а камасутра обучает как именно
PM Jabber   Вверх
Vit
Дата 10.12.2004, 21:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 14
Всего: 207



Цитата(Cashey @ 10.12.2004, 10:10)
в клиент-серверных, по идеи, это должно работать автоматически.



Это не может работать автоматически, точнее это работает автоматически но пользователь обязан указать какую блокировку использовать. Например в приведенном выше примере блокировки не нужны, а если бы допустим у меня были финансовые транзакции, то нужна была бы блокировка чтобы пресечь 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
PM MAIL WWW ICQ   Вверх
Cashey
Дата 11.12.2004, 14:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бессмертный
****


Профиль
Группа: Завсегдатай
Сообщений: 3441
Регистрация: 13.11.2002
Где: в столице

Репутация: нет
Всего: 60



так я и говорю, в локальных это надо прописывать программисту в ручную.


--------------------
библия учит любить ближнего, а камасутра обучает как именно
PM Jabber   Вверх
Vit
Дата 11.12.2004, 19:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Vitaly Nevzorov
****


Профиль
Группа: Экс. модератор
Сообщений: 10964
Регистрация: 25.3.2002
Где: Chicago

Репутация: 14
Всего: 207



Цитата(Cashey @ 11.12.2004, 05:45)
так я и говорю, в локальных это надо прописывать программисту в ручную.



Я не спорю, я утверждаю вещь лежащую АБСОЛЮТНО в другой плоскости. Я вообще не трогаю ЛОКАЛЬНЫЕ базы данных, не пытайся меня сбить на 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
PM MAIL WWW ICQ   Вверх
Euclid
Дата 14.12.2004, 20:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 26.10.2004

Репутация: нет
Всего: 1



Вопрос был в том что Ассесс использует ODBC для связи с MS SQL. А здесь утверждается, что ODBC в сети медленна. Так может именно по этой причине не стоит использовать связку Ассесс - MS SQL при большом числе пользователей ( 30 )?

Кстати клиентская часть при MS SQL обычно тонкая, большая часть работы происходит на сервере. Так иммет ли смысл использовать С++ для клиентской части.
Программироваровать на VB намного легче. Или все-таки у С++ для клиентской части есть преимущества перед VB ( кроме личных предпочтений).
PM MAIL   Вверх
Vit
Дата 15.12.2004, 04:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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
PM MAIL WWW ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Общие вопросы по базам данных"
LSD
Zloxa

Данный форум предназначен для обсуждения вопросов о базах данных не попадающих под тематику других форумов:

  • вопросам по СУБД для которых нет отдельных подфорумов
  • вопросам которые затрагивают несколько разных СУБД (например проблема выбора)
  • инструменты для работы с СУБД
  • вопросы проектирования БД
  • теоретически вопросы о СУБД

Данный форум не предназначен для:

  • вопросов о поиске разлиных БД (если не понимаете чем БД отличается от СУБД то: а) вам не сюда; б) Google в помощь)
  • обсуждения проблем с доступом к СУБД из различных ЯП (для этого есть соответсвующие форумы по каждому ЯП)
  • обсуждения проблем с написание SQL запросов, для этого есть форум Составление SQL-запросов
  • просьб о написании курсовой, реферата и т.п., для этого есть Центр помощи или фриланс биржа
  • объявлений о найме специалистов, для этого есть раздел Объявления о найме специалистов

Если вы не соблюдаете эти правила, не удивляйтесь потом не найдя свою тему/сообщение. ;)


Полезные советы:

При написании сообщения постарайтесь дать теме максимально понятное название. В теме максимально подробно опишите проблему. Если применимо укажите: название базы данных и версии (MySQL 4.1, MS SQL Server 2000 и т.п.); используемых язык программирования; способа доступа (ADO, BDE и т.д.); сообщения об ошибках.

Для вставки кода используйте теги [code=sql] [/code].

Литературу по базам данных можно поискать здесь.

Действия модераторов можно обсудить здесь.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, LSD, Zloxa.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | СУБД, общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1645 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.