iAlexander |
Отправлено: 10.02.2005, 12:21 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 70
|
Привет всем.
Пожалуйста, дайте совет, как поступить в следующей ситуации:
Есть программа, написанная на BC5, +BDE, +база Paradox. Данная программа неплохо функционировала на локальной машине, но как только базу начали юзать с нескольких машин, она начала периодически рушиться. В связи с этим я давно начал подумывать о переходе на сетевую БД. Программа использует компоненты TTable и TQuery. Подготовительную работу по искоренению TTable и замену их на TQuery в основных модулях я начал давно. Сейчас эта часть выполнена на 40%, и я начал думать о выборе конкретной БД.
Пожалуйста, посоветуйте, что же мне выбрать в соответствии со следующими критериями:
1) Желательно произвести минимум рефакторинга по установлению соединения с базой.
2) BDE можно оставить, но если переход на ADO или другую схему при выбранной БД необходим, и при этом не потребуется существенных переделок, то можно и ликвидировать BDE.
3) Желательно, чтобы с БД могли работать стандартные TQuery компоненты (пускай и через BDE и дополнительный драйвер)
4) Ньюанс: скорее всего, все TTable'ы я не выгребу. В редкоиспользуемых частях программы они все-таки останутся.
5) Модификация базы нежелательна (есть autoinc поля, например), вместе с тем серверные возможности по обработке данных приветствуются (хранимые процедуры, etc.), хотя сейчас, конечно, и не используются.
Я выскажу несколько своих соображений:
InterBase видится как прямая альтернатива, но он не имеет AutoInc полей. Придется использовать генераторы, а модификация базы нежелательна. К тому же он не бесплатный (конечно, при нелицензионном BC это не сыграет роли, но все же приятнее осознавать, что хотя бы база лежит в свободном формате)
MySQL — неплохая альтернатива. Он бесплатный, простой, только я не знаю, насколько сильно мне придется менять структуру программы для обеспечения его поддержки. Просмотрев тему
MySQL , я не разрешил этот вопрос.
FireBird. Потребуется ли смена компонентов? Если это будет просто смена типов компонентов, с сохранением прежнего интерфейса доступа к данным, то это отлично. Замена не вызовет осложнений.
Пожалуйста, посоветуйте, что выбрать из того, что я перечислил, или что-нибудь другое, что может оказатся более удачным выбором.
|
|
AVC |
Отправлено: 10.02.2005, 12:46 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
Связка BDE — ODBC работает всегда. Так что если не нужна особая скорость и спец возможности, предоставляемые "прямыми" компонентами то выбор СУБД по этому признаку не критичен. (Одно из моих приложений с такой связкой находится в промышленной эксплуатациеи с 2000г практически без обслуживания)
Автоинкрементные поля отсутвуют во многих СУБД но их прекрасно заменяет пара триггер-генератор, что так же не требует переделки клиента.
Я правильно понял — вам нужна СУБД среднего класса?
Я бы выбирал по поддерживаемым типам блокировок, наличию средств разграничения доступа (зависит от приложения) и возможностям Select'а
FireBird — не поддерживает Select From Select, проблемы со служебными таблицами
MySQL — падает при выборке из 5-7 связных таблиц
MaxDB(SubDB) — имеет малое количество триггеров и сильно тормозит при выборках типа Select Field1, (Select Value) as Field2 From ...
Sybase ASA — хорош но далеко не бесплатен
PostGreeSQL — сейчас тестируем. Бесплатен и вроде удовлетворяет всем требованиям (ставить лучше на Linux)
MSSql — из серии больших серверов (очень не бесплатен)
Oracle — (см MSSql) + требет внимания при администрировании, зато очень масштабирем и из того что я пробовал самый быстрый, надежный и имеет много дополнительных возможностей (работать с ним просто приятно)
Выбирайте! |
|
iAlexander |
Отправлено: 10.02.2005, 13:43 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 70
|
AVC, большое спасибо.
Среднего класса — скорее интуитивно осознавая, что под этим подразумевается, я отвечу утвердительно. Особая скорость не нужна, наверное. Я думаю, MySQL после Paradox'a пользователям покажется ураганом, так?
FireBird: Отсутствие Select from Select -это серьезный минус. Отметаем, к сожалению.
MySQL. А здесь интереснее. MySQL мне нравится. Только вот: падает при выборке из 5-7 связных таблиц — то есть при SELECT FROM t1,t2, ..., t5 ?
и даже при SELECT FROM t1 LEFT JOIN t2 ... JOIN t5?
и падает весь сервер или просто не выполняется запрос?
Я поисследую свой код на наличие таких монстроидальных запросов.
MSSql и Oracle — нет, это к сожалению уже высоковато. Да и сервер будет работать далеко не на новом железе... Администрирование будет практически отсутствовать...
А насчет триггеров и генераторов я объясню: мне не хотелось бы ограничивать себя только базами, предоставляющими такие возможности. Ибо возможно в дальнейшем база будет портироваться дальше. Может, уже и без Билдера
То есть мне больше интересны MySQL и PostGreeSQL. Но ставиться сервер будет точно на win9x (winNT)
Буду весьма благодарен, если Вы укажете руководства по прикручиванию MySQL или PostGreeSQL к BDE и использованию этой связки в Билдере. Можно на английском. Если навскидку не знаете, я поищу сам.
Интересно, намного ли PostGreeSQL быстрее MySQL? Я использовал MySQL в связке с Tomcat. Скорость не поражает воображение, хоть и вполне приемлема.
Отредактировано iAlexander — 10/02/2005, 14:47 |
|
AVC |
Отправлено: 10.02.2005, 14:37 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
Опытне люди советут PostGreSQL ставить только на Linux'е.
QUOTE |
Буду весьма благодарен, если Вы укажете руководства по прикручиванию MySQL или PostGreeSQL к BDE и использованию этой связки в Билдере. Можно на английском. Если навскидку не знаете, я поищу сам.
|
Через ODBC. Брал на родных сайтах производителя. Работало с первого предъявления. Пробные запросы делал в SQLExplorer.
Сейчас закачаю в тестовый MySQL несколько рабочих таблиц и скажу что конкретно будет при связках. Запрос на несколько связок это не монстр, а норма. |
|
Gedeon |
Отправлено: 10.02.2005, 14:44 |
|
Ветеран
Группа: Модератор
Сообщений: 1742
|
QUOTE (iAlexander @ 10/02/2005, 12:45) | MSSql и Oracle — нет, это к сожалению уже высоковато. Да и сервер будет работать далеко не на новом железе... Администрирование будет практически отсутствовать...
То есть мне больше интересны MySQL и PostGreeSQL. Но ставиться сервер будет точно на win9x (winNT)
|
Вот тут как раз Вам прямая дорога именно в линукс по всем пожеланиям.
|
|
iAlexander |
Отправлено: 10.02.2005, 15:17 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 70
|
QUOTE | Сейчас закачаю в тестовый MySQL несколько рабочих таблиц и скажу что конкретно будет при связках. Запрос на несколько связок это не монстр, а норма. |
Так вылетает сам сервер от чрезмерной нагрузки на объемы данных?
Я обычно стараюсь минимизировать объемы обрабатываемых данных всеми возможными способами. А Вы имели в виду, что MySQL ломается при связке любых минимальных 7 таблиц или все же при полновесном декартовом произведении 7 мощных таблиц от большой нагрузки?
С нетерпением жду результатов тестов. Пока пошел на http://www.mysql.com.
Gedeon
Да, это хорошо, но в моих конкретных условиях к сожалению нереализуемо.
Отредактировано iAlexander — 10/02/2005, 16:31 |
|
AVC |
Отправлено: 10.02.2005, 15:59 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
Простите, что невольно ввел вас в заблуждение. Я и сам заблуждался. Если есть индексы ни чего он не падает. Ведет себя вполне адекватно. И поддерживает выборки типа
Select t.*
,(Select одно_значение ...) as field1
From
(Select ...) t1
Не поддерживает выборку одного значения в параметр функции
Подсказывают, что он не любит нескольких одновременно открытых связей
(у меня в памяти отложилось как связей с таблицами — еще раз простите).
Это надо проверять.
PS. самая большая из таблиц еще качается
PPS. Мне еще ни разу не понадобилось декартово произведение.
Отредактировано AVC — 10/02/2005, 16:06 |
|
iAlexander |
Отправлено: 10.02.2005, 16:12 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 70
|
AVCСпасибо. Я сейчас читаю что там http://dev.mysql.com/ про себя пишут.
А Вы не могли бы присоединить этот тестовый проект, чтобы я его посмотрел и попробовал запустить? Так старт побыстрее бы получился. |
|
AVC |
Отправлено: 10.02.2005, 16:31 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
QUOTE |
А Вы не могли бы присоединить этот тестовый проект, чтобы я его посмотрел и попробовал запустить?
|
Нет. Но не потому что мне жалко, а потому что его нет в природе
Прошлой весной мне пришлость тестировать несколько серверов и от этой работы осталось 9 файлов dbf, которые имитируют данные для решения одной из задач работающей системы. Я их чем нибудь закачиваю на исследуемый сервер и пробую запросы.
Сейчас проверятся MySQL сервер и связка BDE-ODBC. Server доступен по лвс и стоит на Win2003. Работа ведется через DBExplorer.
Могу привести имеющиеся на данный момент результаты.
Все. Загрузка кончилась. Сейчас попытаюсь "поднять" основной рабочий запрос.
QUOTE | Так старт побыстрее бы получился |
Если вы использовали TDatabase то вообще проблемы можно попытаться свести к минимуму если "попасть" в имена таблиц, полей и типы полей
Отредактировано AVC — 10/02/2005, 16:42 |
|
iAlexander |
Отправлено: 10.02.2005, 16:59 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 70
|
Нет, DataBase я не использовал.
Но, может быть, есть смысл его привнести? |
|
avc* |
Отправлено: 10.02.2005, 17:11 |
|
Не зарегистрирован
|
Конечно. Это же централизация. Сейчас поменяли бы в DataBase Alias и все.
Я еще и Session ставлю яный, но это может и лишнее. |
|
iAlexander |
Отправлено: 10.02.2005, 18:22 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 70
|
Ну, в общем-то у меня все равно всем компонентам свойство DatabaseName назначается динамически. Так что мне нужно лишь поменять то значение, которое им присваивается
Но, может быть, TDataBase я все равно встрою. Спасибо за наводки. Буду приколачивать MySQL. |
|
AVC |
Отправлено: 11.02.2005, 09:18 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
Удачи!
В целях значительного уменьшения объемов переработок можно остакить пару BDE-ODBC. Ну а для нового проекта можно поискать "прямые" компоненты. (Мне тут подсказывают DAC for MySQL) |
|