Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Сравнение СУБД Новый топик    Ответить
 Выбор СУБД для работы с таблицами в миллионы записей  [new]
Ashotovich
Member

Откуда:
Сообщений: 67
Всем доброго времени суток.
Возникла проблема миграции с Оракла на что-нибудь бесплатное - прижали-таки. =(
Ну так вот, в БД основная таблица за год набирает порядка 1 500 000 записей. Остальные таблицы - на порядки меньше. Встроенных функций и триггеров не требуется. Главное - скорость работы плюс надежность, чтобы база не падала каждую неделю.

Какую из СУБД посоветуете, уважаемые? Заранее спасибо за помощь.

С уважением, Ashotovich
13 окт 03, 14:45    [374229]     Ответить | Цитировать Сообщить модератору
 Re: Выбор СУБД для работы с таблицами в миллионы записей  [new]
Gold
Member

Откуда: Харьков
Сообщений: 2947
Ну тут выбор то не очень большой - BerklreyDB, MySQL, FireBird и Postgres.
Полтора миллиона записей - это любая БД потянет.
Есть мнение, что самый быстрый из них MySQL, но также есть мнение, что он самый быстрый только на простых запросах и определённо самый "неумелый".
я б с ним вобще не связывался, т.к. после оракла там одни удивления и огорчения будут.
С Беркли я никогда не сталкивался - ничего не могу сказать.
PostgreSQL и FireBird вас вполне устроят, я думаю - они где-то одного класса. следует заметить, что у FireBird гораздо более крупное сообщество русскоязычных программистов, его главный разработчик тоже из росии, т.к. при возникновении проблем её решение удастся найти быстрее, чем у других, а возможно даже что ваша токовая новая идея будет воплощена в сервере, если она всем понравится.
В общем, если ну уж очень простые операции с базой, не нужны ХП - тогда я бы выбрал МySQL, а иначе FireBird.
13 окт 03, 15:07    [374300]     Ответить | Цитировать Сообщить модератору
 Re: Выбор СУБД для работы с таблицами в миллионы записей  [new]
Ashotovich
Member

Откуда:
Сообщений: 67
Операции простые. Дальше селекта из нескольких таблиц с одноуровневым вложением дело не идет. Самый "сложный" запрос покамест аж вот такой:

SELECT ORGANIZATION_ID, ORGANIZATION_NAME FROM ORGANIZATIONS WHERE TYPE_CODE IN (SELECT TYPE_CODE FROM LINK_PROFESSION_ORGTYPES WHERE PROFESSION_CODE='$profession_code') AND TYPE_CODE IN (SELECT TYPE_CODE FROM LINK_CATEGORY_ORGTYPES WHERE CATEGORY_CODE='$category_code') AND SECTOR_CODE='$sector_code' ORDER BY ORGANIZATION_NAME ;)

А по надежности есть какие-нибудь данные? Какая из них считается надежней? Вопрос правомерен - я вот, например, знаю, что Novell NetWare - самая надежная система для файл-сервера... ;)
13 окт 03, 15:43    [374410]     Ответить | Цитировать Сообщить модератору
 Re: Выбор СУБД для работы с таблицами в миллионы записей  [new]
Senin Viktor
Member

Откуда: Подмосковье
Сообщений: 5006
Можно и MSDE. При наличии лицензионного Офиса - бесплатна. Ограничение: размер БД до 2 Гб, пользователей до 5 (и еще парочка не существенных ограничений). По надежности: это ядро MS SQL сервера.
13 окт 03, 16:03    [374476]     Ответить | Цитировать Сообщить модератору
 Re: Выбор СУБД для работы с таблицами в миллионы записей  [new]
Я
Guest
При переходе с Oracle наверное лучше FireBird, они, типа, оба версионники, хотя и разные...
13 окт 03, 16:07    [374488]     Ответить | Цитировать Сообщить модератору
 Re: Выбор СУБД для работы с таблицами в миллионы записей  [new]
Gold
Member

Откуда: Харьков
Сообщений: 2947
Скажу про FB. Завалить его, конечно, можно, ноесли всё сделано правильно - будет работать годами. У нас под FreeBSD пол года уже точно никаких проблем небыло с ним.

PS А запросы с IN лучше преределать на JOIN, т.к. не все оптимизаторы такие умные, как Оракловский.
13 окт 03, 16:49    [374609]     Ответить | Цитировать Сообщить модератору
 Re: Выбор СУБД для работы с таблицами в миллионы записей  [new]
Gt_
Guest
посмотри внимательно на posgres, они вроде специально брали идеологию оракла (версионность) и главное многое из сиснтаксиса. например у них есть нормальные сиквенсы и т.д. короче посмотри синтаксис у него ближе чем у ИБ должен быть.

в теории есть еше SAPDB, он типа по синтакису вообще совместим с оракле7, но не популярен и щас они там что-то с mysql мутят, короче экзотика на наших широтах.
13 окт 03, 17:33    [374741]     Ответить | Цитировать Сообщить модератору
 Re: Выбор СУБД для работы с таблицами в миллионы записей  [new]
Ashotovich
Member

Откуда:
Сообщений: 67
Угу. Про PostgreSQL мне много чего говорили. Якобы - одна из самых продвинутых СУБД из бесплатных. Но есть одно "но" - я не знаю как насчет производительности. Потому как на простых запросах MySQL, насколько я знаю, ничем не уступает по быстродействию Oracle, а вот как себя ведет Postgre - неизвестно. Есть какие-нибудь данные?
13 окт 03, 17:42    [374761]     Ответить | Цитировать Сообщить модератору
 Re: Выбор СУБД для работы с таблицами в миллионы записей  [new]
Gt_
Guest
ну на сложных запросах у него говорят бывают чудеса, но в принципе нагрузку вроде держит нормально. короче линуксоиды больше любят его :)

ИМХО 2 млн в наши дни = смалл бизнес и поэтому я бы более за синтаксис и сопровождение волновался, а скорость - мне дешевле апгрейд сделать чем код весь перелапатить.

p.s. а mysql на глупых запросах делает оракл как нефиг делать :)
p.p.s. а чо за проблема с ораклом, деволопмент же фри или заказщик бедный ?
13 окт 03, 18:49    [374883]     Ответить | Цитировать Сообщить модератору
 Re: Выбор СУБД для работы с таблицами в миллионы записей  [new]
Gold
Member

Откуда: Харьков
Сообщений: 2947
к стати говоря, Оракл - не версионник и саму версионность придумал Джим Старки (так его кажись), который InterBase делал. Так вот, Оракл - это смесь версионной и блокировочной архитектуры и его нельзя однозначно отнести ни к тем ни к другим. И вобще, версионность как бы более продвинутая технология, но у неё куча недостатков своих.
13 окт 03, 19:50    [374965]     Ответить | Цитировать Сообщить модератору
 Re: Выбор СУБД для работы с таблицами в миллионы записей  [new]
ASCRUS
Member

Откуда: МО Электросталь
Сообщений: 5994
Можно и MSDE. При наличии лицензионного Офиса - бесплатна. Ограничение: размер БД до 2 Гб, пользователей до 5 (и еще парочка не существенных ограничений).
Немного не в тему - но вот недавно столкнулся - подсунули мне бакуп БД размером 5 гигов для MSSQL, на машине стоит только MSDE, рестрорил, посмотрел что там и как, данных еще подлил, потом забакупил, отдал и детачил базу. И только потом вспомнил про ограничение у MSDE в 2 гига. Стало мне интересно - попытался аттачить, ругнулась, что БД превышает 2 гига. Тогда восстановил из бэкупа - все восстановилось и работает. Чудеса однако у MS в области ограничений да и только.
13 окт 03, 23:21    [375150]     Ответить | Цитировать Сообщить модератору
 Re: Выбор СУБД для работы с таблицами в миллионы записей  [new]
Ashotovich
Member

Откуда:
Сообщений: 67
Оракл, заказчик... Я работаю в представительстве буржуйской конторы. И проект реализую "под нас". Проблема в том, что нелицензионное ПО использовать у нас запрещено (политика компании), а для того, чтобы выбить для проекта искомые 40 000 долларов на Оракл, мне бюджет придется утверждать года два, знаю, проходил. Так что дешевле все на бесплатную SQL-платформу перевести, чем столько геморроя заработать, выбивая деньги из жадных итальяшек-немцев.

Запросы, как я и говорил, глупые. Связи между таблицами, триггеры можно обойти, запретив пользователям удалять записи из таблиц - только UPDATE (DELETE разрешу только из таблиц, не имеющих дочерних связей). Так что MySQL вплоне подойдет, главное, чтобы работала стабильно.
14 окт 03, 09:34    [375352]     Ответить | Цитировать Сообщить модератору
 Re: Выбор СУБД для работы с таблицами в миллионы записей  [new]
Хрен
Member

Откуда: Brisbane
Сообщений: 1455
mysql начиная с версии (если не подводит память) 3.23.44 понимает каскадное удаление/изменеие для innodb таблиц
14 окт 03, 11:06    [375551]     Ответить | Цитировать Сообщить модератору
 Re: Выбор СУБД для работы с таблицами в миллионы записей  [new]
Sad Spirit
Member

Откуда:
Сообщений: 569
Ashotovich писал:
Угу. Про PostgreSQL мне много чего говорили. Якобы - одна из самых продвинутых СУБД из бесплатных. Но есть одно "но" - я не знаю как насчет производительности.

А как насчёт засунуть свои данные в Postgres и прогнать тесты? Только не с установками по умолчанию, они у Postgres'а очень консервативные и отсюда идут легенды о том, что он медленный. Вот свеженькая статья про настройку производительности.

Ashotovich писал:
Потому как на простых запросах MySQL, насколько я знаю, ничем не уступает по быстродействию Oracle

На очень простых запросах и если бенчмарки устраивают представители MySQL. :)

А приведённый тобой запрос в Мыскле просто не пойдёт. Впрочем и в Постгресе, если речь о стабильной версии, а не о бете 7.4, его лучше переписать через JOIN или через EXISTS --- тормозить будет.
14 окт 03, 11:08    [375559]     Ответить | Цитировать Сообщить модератору
 Re: Выбор СУБД для работы с таблицами в миллионы записей  [new]
Ashotovich
Member

Откуда:
Сообщений: 67
А можно пример, как его переписать через JOIN? Заранее благодарю.
14 окт 03, 11:51    [375658]     Ответить | Цитировать Сообщить модератору
 Re: Выбор СУБД для работы с таблицами в миллионы записей  [new]
Sad Spirit
Member

Откуда:
Сообщений: 569
Ashotovich писал:
А можно пример, как его переписать через JOIN? Заранее благодарю.

Через JOIN это я несколько погорячился, вот вариант через EXISTS:

SELECT ORGANIZATION_ID, ORGANIZATION_NAME
FROM ORGANIZATIONS O
WHERE
EXISTS (
SELECT P.TYPE_CODE
FROM LINK_PROFESSION_ORGTYPES P
WHERE P.PROFESSION_CODE='$profession_code' AND
P.TYPE_CODE = O.TYPE_CODE
) AND
EXISTS (
SELECT C.TYPE_CODE
FROM LINK_CATEGORY_ORGTYPES C
WHERE C.CATEGORY_CODE='$category_code' AND
C.TYPE_CODE = O.TYPE_CODE
) AND
SECTOR_CODE='$sector_code'
ORDER BY ORGANIZATION_NAME;
14 окт 03, 13:11    [375824]     Ответить | Цитировать Сообщить модератору
 Re: Выбор СУБД для работы с таблицами в миллионы записей  [new]
Gold
Member

Откуда: Харьков
Сообщений: 2947
Ну можно и джоннами, если TYPE_CODE - это уникальный ключ в таблицах что ы подзапросах. Это как нить так будет:
SELECT O.ORGANIZATION_ID,O.ORGANIZATION_NAME

FROM ORGANIZATIONS O
LEFT JOIN LINK_PROFESSION_ORGTYPES LP ON
LP.PROFESSION_CODE='$profession_code' AND LP.TYPE_CODE=O.TYPE_CODE)
LEFT JOIN LINK_CATEGORY_ORGTYPES LC ON
CATEGORY_CODE='$category_code' AND LC.TYPE_CODE=O.TYPE_CODE)
WHERE O.SECTOR_CODE='$sector_code' AND LP.TYPE_CODE IS NOT NULL AND LC.TYPECODE IS NOT NULL
ORDER BY O.ORGANIZATION_NAME

Тут надо будет смотреть, что быстрее, соединения или экзистс, но в любом случае не IN. Индексы нужно построить будет грамотно.
14 окт 03, 13:35    [375874]     Ответить | Цитировать Сообщить модератору
 Re: Выбор СУБД для работы с таблицами в миллионы записей  [new]
Ashotovich
Member

Откуда:
Сообщений: 67
Ок. Буду шибко думать. Кстати, во всех LINK_* уникальных полей нет вообще - это просто связи много-много.
14 окт 03, 16:43    [376330]     Ответить | Цитировать Сообщить модератору
 Re: Выбор СУБД для работы с таблицами в миллионы записей  [new]
m-dance
Member

Откуда:
Сообщений: 94
Лично я выбрал бы именно PostgreSQL. Достаточно стабилен, нормальный SQL-92, идеологически очень близок к Ораклу.
15 окт 03, 11:29    [377326]     Ответить | Цитировать Сообщить модератору
 Re: Выбор СУБД для работы с таблицами в миллионы записей  [new]
Roman Ignatiev
Member

Откуда: Москва
Сообщений: 680
2m-dance Ты можешь смеяться, но то же самое я могу сказать про IB/FB
15 окт 03, 12:53    [377542]     Ответить | Цитировать Сообщить модератору
Все форумы / Сравнение СУБД Ответить