Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Как лучше писать БД?


Автор: serious 5.3.2003, 02:16
Нужно мнение: как лучше писать базы данных (реляционные), ну в смысле что использовать (ADO, ODBC...).
А писать лучше на API или как? И подскажите пожайлуста, какие компоненты самые такие..

Автор: Vit 5.3.2003, 03:29
Зависит от многих факторов

1) Для локальных баз данных предпочтительнее сочетания:
ADO+MS Access
DAO + MS Access
BDE + Paradox
BDE + DBase/FoxPro

2) Для небольших серверных баз данных:
DBExpress + MySQL

3) Для больших серверных баз данных:
ADO + MS SQL Server
DOA + Oracle
DBExpress + Oracle


А теперь чего делать категорически не рекомендуется:

1) Использовать ODBC для любых баз данных
2) Использовать BDE для любых серверных баз данных

Автор: cpu 5.3.2003, 04:46
Я InterBase использовал. Понравилось.

Автор: Vit 5.3.2003, 06:12
Цитата(cpu @ 4.3.2003, 19:46)
Я InterBase использовал. Понравилось.

Да для небольших серверов подходит замечательно, тем более что для Дельфей - родная.

Автор: Medved 5.3.2003, 06:39
Маленькая проправочка, для Oracle лучше всего использовать ODAC. (Oracle Data Access Components)

Автор: NoName 5.3.2003, 18:08
Для баз с кол-вом записей менее 10000 лучше всего использовать ADO (преимущества: скорость, простота работы с ней, недостатки: при кол-ве записей более 10000 существенно замедляется работа с ней), для баз с кол-вом записей более 10000 лучше всего подходит Interbase (теже преимущества что и у ADO + использование транзакций, больше возможностей при работе с сетью, безопастность, использование триггеров и встроенных процедур) У каждого движка баз данных свои преимущества и недостатки, их выбор должен быть основан на конкретной поставленной задаче

Автор: AntonSaburov 5.3.2003, 18:37
Цитата
А теперь чего делать категорически не рекомендуется:

1) Использовать ODBC для любых баз данных
2) Использовать BDE для любых серверных баз данных


А почему ?
Я просто писал базы с использованием BDE и ODBC - сказать, что все так плохо, не могу. Да, несомненно есть кое-какие ограничения. Но столь категорично я бы не рискнул.

Если есть печальный опыт - делись biggrin.gif


Автор: NoName 5.3.2003, 19:57
http://okn.univer.omsk.su/emanual/1035.html

Автор: Guest_serious 5.3.2003, 22:16
А где про Interbase можно в сети почитать?

Автор: 78125 5.3.2003, 23:04
Цитата(Vit @ 5.3.2003, 03:29)
А теперь чего делать категорически не рекомендуется:

1) Использовать ODBC для любых баз данных

А мне нравится ODBC+ Access adv/65.gif

Автор: NoName 5.3.2003, 23:08
http://www.ibase.ru

Автор: Vit 6.3.2003, 01:58
Цитата(AntonSaburov @ 5.3.2003, 09:37)
Цитата
А теперь чего делать категорически не рекомендуется:

1) Использовать ODBC для любых баз данных
2) Использовать BDE для любых серверных баз данных


А почему ?
Я просто писал базы с использованием BDE и ODBC - сказать, что все так плохо, не могу. Да, несомненно есть кое-какие ограничения. Но столь категорично я бы не рискнул.

Если есть печальный опыт - делись biggrin.gif

Есть - ODBC при сравнении с DAO, BDE, ADO практически всегда проигрывает в скорости. Проверял неоднократно.

Был собственный печальный опыт BDE+MS SQL Server - при подключении более 15 пользователей работа стала невозможной - блокировки мешают друг другу, скорость работы очень низкая, загрузка всех процессоров сервера - 100%, программы работают еле-еле... Dead Lock каждую секунду - попытка понять его возникновения приводит что нахожу цепь блокирововок из штук 200 кверей... Замена того же кода и тех же самых кверей на ADO увеличила скорость выполнения кверей примерно на 3-4 порядка, загрузка процессоров на сервере упала до 20-30%, Dead Lock вообще исчезли... При этом я не менял ни кверей ни индексов ни структуры таблиц... Впрочем при количестве пользователей до 5 - существенной разницы между BDE и ADO нет

Автор: Vit 6.3.2003, 02:00
Цитата(78125 @ 5.3.2003, 14:04)
А мне нравится ODBC+ Access

DAO работает примерно в 3-7 раз быстрее (сам проверял), и даёт гораздо бОльшие возможности по манипулированию данными, так же прошу учесть что именно DAO является родным драйвером для MS Access и MS Excel - специально для этих баз данных изобретённых, а ODBC задумывалась как универсальная система к любым базам, как всегда специализированные системы работают эффективнее, чем универсальные...

Автор: AntonSaburov 6.3.2003, 02:02
Цитата
Был собственный печальный опыт BDE+MS SQL Server - при подключении более 15 пользователей работа стала невозможной - блокировки мешают друг другу, скорость работы очень низкая, загрузка всех процессоров сервера - 100%, программы работают еле-еле... Dead Lock каждую секунду - попытка понять его возникновения приводит что нахожу цепь блокирововок из штук 200 кверей... Замена того же кода и тех же самых кверей на ADO увеличила скорость выполнения кверей примерно на 3-4 порядка, загрузка процессоров на сервере упала до 20-30%, Dead Lock вообще исчезли... При этом я не менял ни кверей ни индексов ни структуры таблиц... Впрочем при количестве пользователей до 5 - существенной разницы между BDE и ADO нет


Ты имеешь в виду, что у тебя была трехзвенка ? И проблемы были в средней части ?

Автор: Vit 6.3.2003, 02:07
Цитата(NoName @ 5.3.2003, 09:08)
Для баз с кол-вом записей менее 10000 лучше всего использовать ADO (преимущества: скорость, простота работы с ней, недостатки: при кол-ве записей более 10000 существенно замедляется работа с ней), для баз с кол-вом записей более 10000 лучше всего подходит Interbase (теже преимущества что и у ADO + использование транзакций, больше возможностей при работе с сетью, безопастность, использование триггеров и встроенных процедур) У каждого движка баз данных свои преимущества и недостатки, их выбор должен быть основан на конкретной поставленной задаче

Не знаю о чём Вы говорите. Транзакции ADO поддерживает точно так же, и возможностей куча. По поводу объёма - у меня база данных в десятки миллионов записей (MS SQL Server) размер базы данных уже приближается к 100 гигабайтам, количество одновременных подключений более 1000, количество одновременно исполняемых кверей более сотни, при этом время выполнения одной квери примерно 10-30 мсек. Использую для доступа ADO. Если у вас проблема с ADO доступом и он тормозит, то скорее всего дело не в ADO, а в том что ADO подразумевает Client-Server архитектуру, а Вы с ним пытаетесь работать как с локальной базой данных.


Прошу заметить, что InterBase подходит только для маленьких баз данных, с количеством записей не более нескольких десятков миллионов, и количеством одновременных подключений не более 500... Тем более что для серьёзных баз данных Interbase имеет слишком ограниченные возможности администрирования...

Автор: Vit 6.3.2003, 02:09
Цитата(AntonSaburov @ 5.3.2003, 17:02)
Ты имеешь в виду, что у тебя была трехзвенка ? И проблемы были в средней части ?

Что такое "трёхзвенка"? Извини, я учил базы данных уже в США и не знаком с русским сленгом и некоторыми терминами...

Автор: SmaLL 6.3.2003, 02:14
"трёхзвенка" - схема клиент->сервер->БД

Автор: AntonSaburov 6.3.2003, 02:16
n-tier application

Т.е. есть клиентская часть, есть часть реализующая бизнес-логику и есть уже непосредственно SQL-сервер.

К базе данных ходит бизнес-логика, а клинеты все данные получают через нее.

Так вот у тебя проблемы в части бизнес-логики ?

Автор: Vit 6.3.2003, 02:35
Нет, я не вижу смысла в написании своей серверной части для данного проекта, так как используется только MS SQL Server и никакая дополнительная логика не нужна, т.е. самого MS SQL Server и его Transaction Server для меня достаточно, и я не писал multitier. Есть клиентские компьютеры (в большом количестве) и они опрашивают MS SQL Server - ничего более...

Автор: AntonSaburov 6.3.2003, 02:44
Т.е. ты наблюдал проблемы именно на клиентской машине ?
А программа была мультитредовой ?
В BDE действительно это крайне слабое место.

Автор: Vit 6.3.2003, 03:28
>>Т.е. ты наблюдал проблемы именно на клиентской машине ?

Нет, и на клиенте и на сервере

>>А программа была мультитредовой ?
Нет, в одну нитку но програм запущено много с разных машин - больше сотни в локалке


Автор: AntonSaburov 6.3.2003, 03:45
Цитата
>>Т.е. ты наблюдал проблемы именно на клиентской машине ?

Нет, и на клиенте и на сервере

>>А программа была мультитредовой ?
Нет, в одну нитку но програм запущено много с разных машин - больше сотни в локалке


Странно. Я такого не наблюдал. В одной конторе народу уже думаю гораздо больше 100. Я уходил - наблюдал более 100 коннектов. Сервак работал нормально. Да и клиенты не жаловались.
Причем мы прошли путь от MS SQL 6.0 до MS SQL 2000 - и никогда такого рода проблем не наблюдалось.
И связь была через BDE+ODBC - и никаких проблем.

А вот с native-драйверами чере BDE действительно наблюдал тормоза. Вспоминается такое.

Ладно, спасибо за информацию - буду учитывать.

Автор: Vit 6.3.2003, 03:55
Тут возможна специфика моих програм - это не интерфейсы к базе бданных, не "терминал" для сотрудника, а программы автоматической обработки инфы - т.е. количество кверей с каждой машины колеблется от 1 до 10 в секунду постоянно...

Автор: AntonSaburov 6.3.2003, 04:15
Цитата
Тут возможна специфика моих програм - это не интерфейсы к базе бданных, не "терминал" для сотрудника, а программы автоматической обработки инфы - т.е. количество кверей с каждой машины колеблется от 1 до 10 в секунду постоянно...


Вот оно как - вот тут может как раз собака и порылась - надо тестик забабахать biggrin.gif

Автор: Vit 6.3.2003, 06:46
В целом с учётом замечаний предыдущих товарищей выведу свою схему в скорректированном виде:

1) Для локальных баз данных предпочтительнее сочетания:
ADO+MS Access
DAO + MS Access
BDE + Paradox
BDE + DBase/FoxPro

2) Для небольших серверных баз данных:
DBExpress + MySQL
Interbase (с IB компонентами)

3) Для больших серверных баз данных:
ADO + MS SQL Server
ODAC(Oracle Data Access Components) + Oracle
DBExpress + Oracle

Автор: Medved 6.3.2003, 10:04
Oracle.

Автор: cpu 8.3.2003, 04:46
Цитата(Vit @ 5.3.2003, 18:07)
Прошу заметить, что InterBase подходит только для маленьких баз данных, с количеством записей не более нескольких десятков миллионов, и количеством одновременных подключений не более 500... Тем более что для серьёзных баз данных Interbase имеет слишком ограниченные возможности администрирования...

Я ни на что не претендую. Мне заказали разработать БД для совсем небольшой организации. Указанных недостатков, естесственно не обнаружил... записей - то было всего 100 000. Зато удобно - в дельфи все компоненты есть и хелпов завались.

Автор: Vit 8.3.2003, 04:51
Именно об этом я и говорю - для маленьких серверных баз данных IB оптимальный выбор.

Автор: Vit 8.3.2003, 04:53
Да, забыл один параметер - цену. Надо учесть что в некоторых концигурациях использование Oracle, MS SQL Server и IB может обойтись во многие десятки тысяч долларов...

Автор: cpu 9.3.2003, 06:38
Цитата(Vit @ 7.3.2003, 20:53)
Да, забыл один параметер - цену. Надо учесть что в некоторых концигурациях использование Oracle, MS SQL Server и IB может обойтись во многие десятки тысяч долларов...

Конечно, я не агитирую использлвание пиратских кодов, но моих "левых" сериийников хватило. Кстати, та версия IB (5.5) странно глючила и давала подключать больше пользователей, чем положено было по регистрации. Она мне обошлась в 75 руб. (учитывая, что вместе с ней ещё шла и Delphi 5).
Конечно, она явно пиратская. Но работает же!

Автор: AntonSaburov 11.3.2003, 17:47
Цитата
Конечно, я не агитирую использлвание пиратских кодов, но моих "левых" сериийников хватило. Кстати, та версия IB (5.5) странно глючила и давала подключать больше пользователей, чем положено было по регистрации. Она мне обошлась в 75 руб. (учитывая, что вместе с ней ещё шла и Delphi 5).


Может тогда проще FireBird взять - он-то истинно халявный.

Автор: Roman 14.3.2003, 22:05
Vit ты про начинающих БД-шников не забыл !!!???

Автор: Vit 15.3.2003, 01:30
Цитата(Roman @ 14.3.2003, 13:05)
Vit ты про начинающих БД-шников не забыл !!!???

В смысле?

Автор: Medved 16.3.2003, 09:26
Он имеет в виду статью наверное, про основы работы с БД.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)