|
|
|
Помогите определиться с выбором СУБД.
|
|||
|---|---|---|---|
|
#18+
Изучаю Java, хочу сделать сайтик (jsp). Для него нужна БД. Поскольку в дальнейшем хотелось бы иметь возможность как-то его развивать, а сейчас нет никакого желания платить, эта СУБД должна быть бесплатная и кроссплатформенная (писать мне пока проще под виндой, а вот хостинг возможно буит линуксовый). Посему первый вопрос: какие критерии я упустил? Какие еще подводные камни встретятся? И второй собственно основной. На данный момент я колеблюсь между DB2 express-c (MSSQL Express отсеял из-за некросплатформености, а по сравнению с Ораклом в DB2 не ограничен объем БД, да и вроде интеграция с java выглядит заманчиво) и MySQL (главным образом из-за его распространенности, в т.ч. у хостеров). Какую выбрать? Не упустил ли я чего? Какие где минусы, плюсы? PS. На данный момент опыт работы с БД небольшой и ограничен MSSQL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2009, 15:30 |
|
||
|
Помогите определиться с выбором СУБД.
|
|||
|---|---|---|---|
|
#18+
Привет всем! Ситуация: У меня работает MySQL. Структура таблицы: --------------------------------------------------------------------- DROP TABLE IF EXISTS `pd_pt_documents`.`_index_a`; CREATE TABLE `pd_pt_documents`.`_index_a` ( `doc_id` int(10) unsigned NOT NULL, `hash` int(10) NOT NULL DEFAULT '0', `fp_offset` int(10) unsigned NOT NULL, KEY `hash_idx` (`hash`) USING BTREE ) ENGINE=MyISAM DEFAULT CHARSET=utf8 PACK_KEYS=0 ROW_FORMAT=FIXED; --------------------------------------------------------------------- итого - 3 поля. Кол-во записей - 200.000.000 Всё что мне нужно это высокоскоростной поиск: SELECT doc_id, fp_offset, hash FROM _index_a WHERE hash = 0000123 OR hash = 0000123 OR hash = 0000124 OR hash = 0000125 [...] OR hash = 000999 Особенность: В секунду на БД посылаеться 10 таких запросов. Т.е. база просто засыпается сотнями тысяч запросов. Вопрос: какая СУБД лучше всего справиться с такой задачей? -- Заранее всем спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2009, 16:07 |
|
||
|
Помогите определиться с выбором СУБД.
|
|||
|---|---|---|---|
|
#18+
Может быть, лучше подправить запросы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2009, 16:14 |
|
||
|
Помогите определиться с выбором СУБД.
|
|||
|---|---|---|---|
|
#18+
перепишите запрос либо через UNION ALL, либо через IN. искомые значения hash действительно всегда идут подряд или это только пример? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2009, 16:15 |
|
||
|
Помогите определиться с выбором СУБД.
|
|||
|---|---|---|---|
|
#18+
Саабразим Аль-каши Бухани, а со слоном как? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2009, 16:20 |
|
||
|
Помогите определиться с выбором СУБД.
|
|||
|---|---|---|---|
|
#18+
ОКТОГЕН, postgresql? Не видел не разу. А чем он лучше мускуля в контексте обсуждения? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2009, 16:27 |
|
||
|
Помогите определиться с выбором СУБД.
|
|||
|---|---|---|---|
|
#18+
Саабразим Аль-каши Бухани, 1) Функциональность 2) Продуманность. 3) Можно использовать весь функционал в одном месте и сразу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2009, 16:38 |
|
||
|
Помогите определиться с выбором СУБД.
|
|||
|---|---|---|---|
|
#18+
2 miksoft: У меня немного опыта с SQL - уточните пожалуйста как именно и зачем "UNION ALL, либо через IN."? Это повысит быстродействие? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2009, 17:22 |
|
||
|
Помогите определиться с выбором СУБД.
|
|||
|---|---|---|---|
|
#18+
2 Саабразим Аль-каши Бухани: Скажу спасибо за пинок в нужном направлениии! Что именно оптимизировать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2009, 17:24 |
|
||
|
Помогите определиться с выбором СУБД.
|
|||
|---|---|---|---|
|
#18+
vb-expert2 miksoft: У меня немного опыта с SQL - уточните пожалуйста как именно и зачем "UNION ALL, либо через IN."? Это повысит быстродействие?Скорее всего - да. Чтобы сказать точно, нужно видеть план текущего запроса и план переписанного запроса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2009, 17:28 |
|
||
|
Помогите определиться с выбором СУБД.
|
|||
|---|---|---|---|
|
#18+
vb-expert2 Саабразим Аль-каши Бухани: Скажу спасибо за пинок в нужном направлениии! Что именно оптимизировать? Больше чем miksoft не скажу по имеющемуся куску. Мне вообще не очень ясно как могла возникнуть ситуация с таким количеством "..OR..". Опишите проблему более развернуто, а если это сделаете на форуме MySQL то шанс решить проблему будет еще выше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2009, 17:49 |
|
||
|
Помогите определиться с выбором СУБД.
|
|||
|---|---|---|---|
|
#18+
имхо быстрее чем MyIsam только база с Index Organized Table может получится (на таком запросе). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2009, 18:10 |
|
||
|
Помогите определиться с выбором СУБД.
|
|||
|---|---|---|---|
|
#18+
2 Yo.! : Спасибо за идею с IOT! Я немного рогуглил - IOT. Это только Oracle? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.05.2009, 00:37 |
|
||
|
Помогите определиться с выбором СУБД.
|
|||
|---|---|---|---|
|
#18+
2 miksoft : Замечания - хеши идут НЕ подряд (я подправил примеры) Структура запроса (старого) была такая: ----------------------------------------- SELECT doc_id, fp_offset, hash FROM _index_a WHERE hash = 204777 OR hash = -66780123 OR hash = 067831124 OR hash = -345125 [...много других хешей - размер кол-ва хешей регулирую переменной...] OR hash = 000999 ----------------------------------------- Я почитал про IN и согласно Вашему совету переделал так: ----------------------------------------- SELECT doc_id, fp_offset, hash FROM _index_a WHERE hash IN (234777, -36780123, 067831124, -345125, [...много других хешей - размер кол-ва хешей регулирую переменной...] 000999) ----------------------------------------- Быстродействие заметно увеличилось! Статистика: В БД - 52.000.000 записей. Поиск (т.е. вышеописаный SELECT с IN вместо OR) 10000 хешей (размазаны по всем 52 миллионам - т.е. почти всегда) худший вариант составляет 15-30 секунд. Насколько я понимаю логику работы БД, наиболее оптимальным вариантом будет именно максимально большего кол-ва хешей при SELECT-е чтобы "проход по диску" был только один. Я обязательно протестирую всё вышеописанное на Orace Index-Organized Tables. Я стремлюсь к идеалу :-) но Как ещё можно ускорить процесс? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.05.2009, 00:54 |
|
||
|
Помогите определиться с выбором СУБД.
|
|||
|---|---|---|---|
|
#18+
vb-expertСтатистика: В БД - 52.000.000 записей. Поиск (т.е. вышеописаный SELECT с IN вместо OR) 10000 хешей (размазаны по всем 52 миллионам - т.е. почти всегда) худший вариант составляет 15-30 секунд. Насколько я понимаю логику работы БД, наиболее оптимальным вариантом будет именно максимально большего кол-ва хешей при SELECT-е чтобы "проход по диску" был только один. Я обязательно протестирую всё вышеописанное на Orace Index-Organized Tables. Я стремлюсь к идеалу :-) но Как ещё можно ускорить процесс?Требуется только чтение из этой таблицы? Тогда есть смысл попробовать в MySQL тип таблиц MEMORY. 10000 из 52.000.000 записей - это, скорее всего, не "проход по диску", а 10 тысяч INDEX RANGE SCAN-ов. Планы, чтобы можно было точно судить об этом, вы так и не показали. Orace Index-Organized Tables требует наличия первичного ключа. И, имхо, вряд ли будет быстрее, чем чтение из покрывающего индекса в той же MySQL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.05.2009, 10:13 |
|
||
|
Помогите определиться с выбором СУБД.
|
|||
|---|---|---|---|
|
#18+
В праздники посмотрел (очень бегло) все 3 (pg,mysql,db2), все встали на убунте, заработали, но толком потестить ниасилил. У постгриса смущает отсутствие выбора визуальной тулзы толковой и бесплатной, нашел тока dgadmin. Симпатичен же "похожестью" на Оракл, маячит перспектива перехода на него, что вроде котируется у работодателей. У db2 не нравится практически полное отсутствие у хостеров, нравится схожестью диалектов с MSSQL, который я немного знаю. Может, кто-то из тех, кто имел опыт работы хотябы с 2 из 3х из из упомянутых СУБД поделится впечатлениями? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2009, 14:44 |
|
||
|
Помогите определиться с выбором СУБД.
|
|||
|---|---|---|---|
|
#18+
Саабразим Аль-каши Бухани, из клиентов стоит посмотреть ems manager LITE for postgreSQL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2009, 14:47 |
|
||
|
Помогите определиться с выбором СУБД.
|
|||
|---|---|---|---|
|
#18+
Саабразим Аль-каши Бухани, по возможностям, у постгре более совершенный мультиверсионный механизм, более совершенный язык хранимых процедур, есть возможности подключить разные языки хранимых процедур,система индексов и более мощный планировщик. В транзакциях можно делать почти всё: создавать таблицы, схемы, пользователей. Есть точки сохранения. В отличие от мелко-мягкоко сиквеля есть нормальные последовательности, и временные объекты(таблицы, представления, последовательности). В 8.4 плюс к этому есть табличные выражения, не как в 2005, а с более вменяемым синтаксисом. Рекурсивные запросы тоже есть. Более богатый выбор аналитических функций. Есть массивы и куча разных типов на все случаи жизни+ возможность реализации собственных. У Сиквеля более легко организована репликация, 1С с ней работает быстрее(за счёт убогой реализации блокировок и запросов для постгре). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2009, 15:09 |
|
||
|
Помогите определиться с выбором СУБД.
|
|||
|---|---|---|---|
|
#18+
ОКТОГЕНВ отличие от мелко-мягкоко сиквеля есть ... временные объекты(таблицы, представления, последовательности).Ну уж убавлять-то не надо. Тут рядом топик чуть ли не до 10 страниц разросся как раз про использование времянок в MSSQL.ОКТОГЕНРекурсивные запросы тоже есть.Правильнее сказать: вот только-только появились.ОКТОГЕНВ 8.4 плюс к этому есть табличные выражения, не как в 2005, а с более вменяемым синтаксисом.А чем Вам синтаксис table-valued функций не угодил? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2009, 15:51 |
|
||
|
Помогите определиться с выбором СУБД.
|
|||
|---|---|---|---|
|
#18+
Senya_L, временных вьюх в MSSQL я не нашёл, как и последовательностей. Контриб connectby был задолго до WITH RECURSIVE. С ним можно многое. Я имел в виду не табличные функции(которые в постгри тоже есть давно), а WITH(CTE). Они там разве был? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2009, 17:19 |
|
||
|
Помогите определиться с выбором СУБД.
|
|||
|---|---|---|---|
|
#18+
ОКТОГЕНЯ имел в виду не табличные функции(которые в постгри тоже есть давно), а WITH(CTE). Они там разве был? В MS SQL поддержка CTE введена с 2005 версии. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2009, 17:40 |
|
||
|
Помогите определиться с выбором СУБД.
|
|||
|---|---|---|---|
|
#18+
ОКТОГЕНSenya_L, временных вьюх в MSSQL я не нашёл, как и последовательностей.SEQUENCES действительно нет. :( А вот про временные вьюхи... Я бы не сказал, что это насущная необходимость. ОКТОГЕНSenya_L, временных вьюх в MSSQL я не нашёл, как и последовательностей. Контриб connectby был задолго до WITH RECURSIVE. С ним можно многое. Я имел в виду не табличные функции(которые в постгри тоже есть давно), а WITH(CTE). Они там разве был?"Они" - это CTE в MSSQL что ли? С 2005 есть и будет есть :). И от стандарта в MSSQL отличие, насколько я знаю, разве что не требуется RECURSIVE указывать. Так чем же синтаксис не нравится - тем более непонятно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2009, 17:43 |
|
||
|
Помогите определиться с выбором СУБД.
|
|||
|---|---|---|---|
|
#18+
Senya_L, а можно пример(ссылочку) пользования with без рекурсий? Как отличаются СТЕ от рекурсивных запросов в MSSQL? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2009, 17:47 |
|
||
|
Помогите определиться с выбором СУБД.
|
|||
|---|---|---|---|
|
#18+
ОКТОГЕНSenya_L, а можно пример(ссылочку) пользования with без рекурсий? Как отличаются СТЕ от рекурсивных запросов в MSSQL?Можно, тынц . Кстати, нерекурсивные CTE-выражения можно приравнять к временным просмотрам, с некоторыми ограничениями, конечно. ЗЫ. Что же Вы критикуете не видев в глаза фичу? ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2009, 17:54 |
|
||
|
Помогите определиться с выбором СУБД.
|
|||
|---|---|---|---|
|
#18+
Senya_L, блин, точно не до конца разобрался.((( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.05.2009, 18:12 |
|
||
|
Помогите определиться с выбором СУБД.
|
|||
|---|---|---|---|
|
#18+
vb-expert2 Yo.! : Спасибо за идею с IOT! Я немного рогуглил - IOT. Это только Oracle? в мсскл это IOT кластерной таблицой завется. наверника в дб2 есть. я бы в первую очередь oracle XE попробывал 200М с тремя полями думаю в 4гб влезет легко. большой SQL с тучей IN долго парсится, во всяком случае я такое замечал в оракле. думаю тут оптимальней создать массив на клиенте и его передать в SQL как переменную. на паре сотен IN я видел значительный прирост скорости, на тысячах быстрей получалось скинуть во временную таблицу, т.к. частенько съезжал план сложного запроса. 2miksoft а что такое "покрывающего индекса" ? ЗЫ. у первой тройки еще одно огромное преимущество - scattered read ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2009, 01:16 |
|
||
|
Помогите определиться с выбором СУБД.
|
|||
|---|---|---|---|
|
#18+
база хэшей MD5 для подбора паролей? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2009, 01:46 |
|
||
|
Помогите определиться с выбором СУБД.
|
|||
|---|---|---|---|
|
#18+
Yo.!2miksoft а что такое "покрывающего индекса" ?Индекс, в который входят все используемые в запросе поля. Многие СУБД (в т.ч. и MySQL) умеют в таких случаях читать все данные из индекса, вообще не обращаясь к таблице. Ес-сно, порядок полей в индексе должен быть правильным, чтобы он мог эффективно использоваться в запросе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2009, 11:19 |
|
||
|
Помогите определиться с выбором СУБД.
|
|||
|---|---|---|---|
|
#18+
vb-expertОсобенность: В секунду на БД посылаеться 10 таких запросов. Т.е. база просто засыпается сотнями тысяч запросов. Вопрос: какая СУБД лучше всего справиться с такой задачей? Посмотрите Oracle11g. Там есть весьма полезные в данной ситуации: 1. Query Result Cache 2. Client-Side Query Cache ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2009, 15:06 |
|
||
|
Помогите определиться с выбором СУБД.
|
|||
|---|---|---|---|
|
#18+
miksoftИндекс, в который входят все используемые в запросе поля. Многие СУБД (в т.ч. и MySQL) умеют в таких случаях читать все данные из индекса, вообще не обращаясь к таблице. Ес-сно, порядок полей в индексе должен быть правильным, чтобы он мог эффективно использоваться в запросе. как-то не догнал, а как он поможет достать что-либо по конкретному хешу ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2009, 19:39 |
|
||
|
Помогите определиться с выбором СУБД.
|
|||
|---|---|---|---|
|
#18+
Yo.!miksoftИндекс, в который входят все используемые в запросе поля. Многие СУБД (в т.ч. и MySQL) умеют в таких случаях читать все данные из индекса, вообще не обращаясь к таблице. Ес-сно, порядок полей в индексе должен быть правильным, чтобы он мог эффективно использоваться в запросе.как-то не догнал, а как он поможет достать что-либо по конкретному хешу ?Делаем индекс (`hash`,`doc_id`,`fp_offset`) и из него достаем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2009, 19:58 |
|
||
|
Помогите определиться с выбором СУБД.
|
|||
|---|---|---|---|
|
#18+
vb-expert, 1) Поставьте несколько машин. Настройте репликацию. Все изменения посылкайте на master, а эту тучу запросов на select - можно размазать но всем машинам. 2) Можно попробовать распилить таблицу с помощью partitioning на 20-30 кусков, чтобы быстрее доступ был. Не уверен что поможет, но поиграться и замерить можно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2009, 23:16 |
|
||
|
Помогите определиться с выбором СУБД.
|
|||
|---|---|---|---|
|
#18+
3)Можете попробовать load index into cache `_index_a` чтобы закинуть индекс полностью в кэш. Конечно, нужно выделить достаточно места для key_buffer_size ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2009, 23:39 |
|
||
|
Помогите определиться с выбором СУБД.
|
|||
|---|---|---|---|
|
#18+
4) Вместо запроса с тучей чисел в in (), может быть выгоднее использовать низкоуровневый handler и каждое число отдельно.. документация - надо пробовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2009, 23:45 |
|
||
|
Помогите определиться с выбором СУБД.
|
|||
|---|---|---|---|
|
#18+
Yo.!, от неумения делать IOT складывают все в один индекс. оверхед заметный. к счастью SQL Server 2005/2008 научились в индекс складывать не только сами индексируемые поля, но и те, которые раньше в индекс приходилось запихивать. например, для курсов валют покрывающий индекс Код: plaintext в новом варианте 2005/2008 Код: plaintext ну это все off. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.05.2009, 01:16 |
|
||
|
|

start [/forum/topic.php?all=1&fid=35&tid=1552941]: |
0ms |
get settings: |
11ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
41ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
| others: | 236ms |
| total: | 376ms |

| 0 / 0 |
