| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > 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 | ||
Да для небольших серверов подходит замечательно, тем более что для Дельфей - родная. |
| Автор: 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 | ||
А почему ? Я просто писал базы с использованием BDE и ODBC - сказать, что все так плохо, не могу. Да, несомненно есть кое-какие ограничения. Но столь категорично я бы не рискнул. Если есть печальный опыт - делись |
| Автор: 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 | ||
А мне нравится ODBC+ Access |
| Автор: NoName 5.3.2003, 23:08 |
| http://www.ibase.ru |
| Автор: Vit 6.3.2003, 01:58 | ||||
Есть - 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 | ||
DAO работает примерно в 3-7 раз быстрее (сам проверял), и даёт гораздо бОльшие возможности по манипулированию данными, так же прошу учесть что именно DAO является родным драйвером для MS Access и MS Excel - специально для этих баз данных изобретённых, а ODBC задумывалась как универсальная система к любым базам, как всегда специализированные системы работают эффективнее, чем универсальные... |
| Автор: AntonSaburov 6.3.2003, 02:02 | ||
Ты имеешь в виду, что у тебя была трехзвенка ? И проблемы были в средней части ? |
| Автор: Vit 6.3.2003, 02:07 | ||
Не знаю о чём Вы говорите. Транзакции ADO поддерживает точно так же, и возможностей куча. По поводу объёма - у меня база данных в десятки миллионов записей (MS SQL Server) размер базы данных уже приближается к 100 гигабайтам, количество одновременных подключений более 1000, количество одновременно исполняемых кверей более сотни, при этом время выполнения одной квери примерно 10-30 мсек. Использую для доступа ADO. Если у вас проблема с ADO доступом и он тормозит, то скорее всего дело не в ADO, а в том что ADO подразумевает Client-Server архитектуру, а Вы с ним пытаетесь работать как с локальной базой данных. Прошу заметить, что InterBase подходит только для маленьких баз данных, с количеством записей не более нескольких десятков миллионов, и количеством одновременных подключений не более 500... Тем более что для серьёзных баз данных Interbase имеет слишком ограниченные возможности администрирования... |
| Автор: Vit 6.3.2003, 02:09 | ||
Что такое "трёхзвенка"? Извини, я учил базы данных уже в США и не знаком с русским сленгом и некоторыми терминами... |
| Автор: 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 | ||
Вот оно как - вот тут может как раз собака и порылась - надо тестик забабахать |
| Автор: 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 | ||
Я ни на что не претендую. Мне заказали разработать БД для совсем небольшой организации. Указанных недостатков, естесственно не обнаружил... записей - то было всего 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 | ||
Конечно, я не агитирую использлвание пиратских кодов, но моих "левых" сериийников хватило. Кстати, та версия IB (5.5) странно глючила и давала подключать больше пользователей, чем положено было по регистрации. Она мне обошлась в 75 руб. (учитывая, что вместе с ней ещё шла и Delphi 5). Конечно, она явно пиратская. Но работает же! |
| Автор: AntonSaburov 11.3.2003, 17:47 | ||
Может тогда проще FireBird взять - он-то истинно халявный. |
| Автор: Roman 14.3.2003, 22:05 |
| Vit ты про начинающих БД-шников не забыл !!!??? |
| Автор: Vit 15.3.2003, 01:30 | ||
В смысле? |
| Автор: Medved 16.3.2003, 09:26 |
| Он имеет в виду статью наверное, про основы работы с БД. |