Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Совет что выбрать?  (Прочитано 6442 раз)
0 Пользователей и 1 Гость смотрят эту тему.
AlexeySQL
Гость
« : 05-03-2007 12:21 » 

Необходимо создать программу на Builder C++ 6 с БД переодически обновляющейся через инет. Общий объём БД порядка 100МБ. Обновления с инета не более 10 МБ.
Какое из бесплатных решений посоветуете и какие доводы в их пользу?
Желательно чтобы имелась лёгкая возможность переноса приложения на любой комп.
Видел советы типа Builder-FibPlus-Firebird_embedded.
Может MySQL_embedded?
Что говорит за и что против ADO? Или ODBC?
« Последнее редактирование: 05-03-2007 12:27 от AlexeySQL » Записан
x77
Модератор

ro
Offline Offline
Пол: Мужской
меняю стакан шмали на обратный билет с Марса.


« Ответ #1 : 22-03-2007 12:46 » 

my_sql "заточен" под частые выборки больших обьёмов данных. на вставке/обновлении (при прочих равных условиях) firebird работает быстрее. кроме того, против mysql говорят такие вещи, как отсутствие вменяемого механизма транзакций (что может быть существенно при пакетных обновлениях) и отсутствие триггеров. в остальном эти СУБД схожи (я не буду говорить про типы, строки есть и там и там, а всё остальное при желании приводится к строкам Улыбаюсь); обе халявные, обе реализованы и для винды и для линукса, для обеих есть моды, подключаемые к ПХП (на сегодня интернет-сайт можно сделать на жарптице с почти такой же лёгкостью, как и на мускуле). в целом я существенной разницы между ними не вижу.

ODBC - минусы: неполная поддержка ANSI SQL'92. не все конструкции будут работать, возможны нюансы при подключении и настройке, кроме того, - это самый медленный способ (что очевидно: RDBMS -> Native API -> ODBC -> Client). лишнее звено, короче Улыбаюсь плюсы: универсальность.
ADO - минусов немного и почти все некритичны. плюс тот же, что и у ODBC - эта схема будет универсальна, при смене СУБД с мускула/жарптицы на MSSQL / Oracle - изменений на клиенте, возможно, даже удасться избежать, или обойтись малой кровью.

быстрее всего в любом случае будет работать Native API.

на мой взгляд, для базы в 100Мб выбор СУБД не критичен. лучше выбрать ту, с которой есть опыт работы.

касательно схемы обновлений, я бы советовал обновляться черех XML. Сервер генерит дельта-таблицы, экспортирует в delta.xml, пакует и спит дальше. программа периодически проверяет наличие по определённому адресу в сети нового пакета. если находит - скачивает и заливает XML в базу.
Записан

RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #2 : 22-03-2007 18:09 » new

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

Написаное справедливо для таблиц типа MyISAM, которые не поддерживают транзакции вообще (только блокировки таблиц).
Уже который год в составе MySQL есть тип таблиц Innodb, который поддерживает транзакции в полном объеме и отличается вполне высокой скоростью работы. Главное внешнее отличие от MyISAM - таблицы создаются в табличном пространстве (файлы ТС задаются на уровне конфига и могут расти по необъодимости).
Еще есть тип BDB (BerkleyDB) - промежуточный по возможностям формат. Хранит таблицы, как и MyISAM в отдельных файлах, но поддерживает транзакции.
О типах таблиц: http://www.mysql.ru/docs/man/Table_types.html

Есть градация возможностей MySQL от ветки. Сейчас развиваются: 3.23.х, 4.0.х, 4.1.х, 5.0.х и .5.1.х. Транзакции поддерживаются (на соотв. типах таблиц) всеми этими ветками.
В старшей ветке - 5.1 - есть все необходимое для мощных баз. Для web-сайтов применяют чаще 3.23 и 4.0 - они легки, быстры для выборки и, что самое главное, их лицензии не накладывают ограничений на использование.

Встроенная MySQL (embedded) может все тоже самое, что и традиционный вариант.
Про ембедед:
http://www.mysql.ru/docs/man/libmysqld_overview.html
http://www.mysql.ru/docs/man/libmysqld_restrictions.html

MySQL идет с двойной лицензией: GPL и коммерческой. Т.е. можно выбрать под ситуацию.

Что касается родного API, то оно очень простое и каких-либо затруднений в его использовании я неиразу не испытытвал.

Администрировать MySQL достаточно легко. Поддерживаются репликации master-slave (никогда не пробовал, но в документации описано).


Что касается Oracle, то я отмету его безобразно тяжелую клиентскую часть - порядка 260МБ в установке под винду. Есть более легкий клиент, но применить его совместно с BC++ не получилось - не работает. Базы его тоже очень быстро и непропорционально растут - места кушает хорошо. Скажу, грубо и примерно, на две базы с  дампом в 1.5ГБ каждая (expdp) табличного пространства потребовалось более 20ГБ. С другой стороны шевелится он не плохо, но если долго не делать анализа таблиц, то скорость падает значительно. Был случай, когда анализ таблицы сократил время выполнения сложного запроса в несколько десятков раз (точных замеров не делалось - примерно в 30-100 раз).
Администрирование базы довольно сложное (если требуется оптимизация).
Лицензия только коммерческая, но есть сильно полезанный и бесплатный  Express Edition.
На мой взгляд для небольших проектов Oracle слишком тяжелый.

Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines