|
|
|
Выбор БД для таблицы с 300 млн. записей и более
|
|||
|---|---|---|---|
|
#18+
Таблица состоит из: - 1 поле первичный ключ с автоинкрементом - 5 полей VARCHAR(255) с индексами для быстрой выборки - 1 поле TEXT (в среднем длина текста 1500 байт) Сейчас в таблице уже 8 млн записей, через месяц будет 30 млн, а за год до 300 млн, через три года 1 млрд. Для начала попробовал PostgreSQL 8.3, работа с БД ведется из веб-приложения на Java. Сервер Phenom X4 c 4GB RAM и одним жестким диском на 500GB. Платить деньги за коммерческие БД смысла не вижу(если есть - поясните). Какие потенциально могут быть у меня проблемы c БД? Сейчас, например, подсчет количества записей в таблице уже ведется с помощью триггеров(триггер на добавление-удаление ячеек), т.к. запрос SELECT COUNT(*) FROM table занимает много времени. Выборка по VARCHAR полям тоже уже происходит не так быстро, как хотелось бы. Нужно улучшать сервер? Ставить второй жесткий диск и в RAID? Может попытаться использовать систему как Apache Hadoop? Кроме этой таблицы, в БД будут таблицы с максимум 10 тыс. записей/ Подскажите, я новичок в СУБД. И вижу, что среди реляционных бесплатных БД выбор очень небольшой: MySQL, PostgreSQL, Firebird, Apache Derby... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2009, 20:33 |
|
||
|
Выбор БД для таблицы с 300 млн. записей и более
|
|||
|---|---|---|---|
|
#18+
все нормально, кроме AJetmanСтавить второй жесткий диск и в RAID? второй жесткий диск это будет RAID 1. А чтобы ускорить это надо RAID 10, т.е. 4 диска, или "еще три". Проверить с миллиардом записей не так сложно. Мне тут надо было, и я потратил 4 дня на проверку Firebird с терабайтной БД (в наибольшей таблице было чуть меньше 4-х миллиардов записей). Так что заливай тестовые данные, и тестируй. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2009, 21:20 |
|
||
|
Выбор БД для таблицы с 300 млн. записей и более
|
|||
|---|---|---|---|
|
#18+
kdvвсе нормально, кроме AJetmanСтавить второй жесткий диск и в RAID? второй жесткий диск это будет RAID 1. А чтобы ускорить это надо RAID 10, т.е. 4 диска, или "еще три". Проверить с миллиардом записей не так сложно. Мне тут надо было, и я потратил 4 дня на проверку Firebird с терабайтной БД (в наибольшей таблице было чуть меньше 4-х миллиардов записей). Так что заливай тестовые данные, и тестируй. Да... Для этого тогда придется смоделировать систему с изначальными данными в хотя бы 100 млн записей и нагрузку в виде добавления 10 зап/сек. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2009, 21:57 |
|
||
|
Выбор БД для таблицы с 300 млн. записей и более
|
|||
|---|---|---|---|
|
#18+
AJetman, ну так проведите сайзинг. вообще, хватит ли этого сервера на 1млрд записей? сколько будет занимать база? сколько памяти понадобится для оперативной работы. запросы будут только на запись? на чтение? на запись/чтение, в какой пропорции? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2009, 22:47 |
|
||
|
Выбор БД для таблицы с 300 млн. записей и более
|
|||
|---|---|---|---|
|
#18+
смотри планы запросов, вычисляй куда упрется система. 90% в i/o. один диск конечно не серьезно, диск то небойсь SATA, SCSI/SAS туда воткнуть можно ? из опенсоурса постгрес самый серьезный, из пропретарных но бесплатных есть смысл только ibm db2 express посмотреть, но там ограничение в 2 процессорных ядра, т.е. половинку твоего процессора, поэтому нужно смотреть насколько хватает CPU ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2009, 23:25 |
|
||
|
Выбор БД для таблицы с 300 млн. записей и более
|
|||
|---|---|---|---|
|
#18+
AJetmanКакие потенциально могут быть у меня проблемы c БД? Судя по всему у вас проблемы с дизайном базы. Сходите в соседний форум , а еще лучше найдите архитектора, расскажите все о вашей базе, о данных и т.д. и получите ответ. Сильно подозреваю, что вашей таблице не помешает нормализация. AJetmanНужно улучшать сервер? Ставить второй жесткий диск и в RAID?Пока не будут решены вопросы дизайна, улучшения сервера только оттянут появление проблемы. Другой вопрос, если базу менять нельзя и тогда железо - ЕДИНСТВЕННЫЙ выход. AJetmanПлатить деньги за коммерческие БД смысла не вижу(если есть - поясните). В каждой из баз (коммерческих или нет) есть способы решения ваших проблем. Но без должного умения платить деньги действительно смысла мало. То бишь само собой оно не полетит если вы поставите Оракл или еще что-нибудь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2009, 23:28 |
|
||
|
Выбор БД для таблицы с 300 млн. записей и более
|
|||
|---|---|---|---|
|
#18+
авторвторой жесткий диск это будет RAID 1. А чтобы ускорить это надо RAID 10, т.е. 4 диска, или "еще три". Либо я чего-то не понимаю, либо на двух винтах таки можно создаётся райд массив на скорость. RAID 0 "Striping". Конечно будет страдать надёжность. Но суть не в том, лучше работать не железом, а таки согласен с SERG1257, нужно работать над структурой БД, если есть возможность. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2009, 00:11 |
|
||
|
Выбор БД для таблицы с 300 млн. записей и более
|
|||
|---|---|---|---|
|
#18+
AJetman Для этого тогда придется смоделировать систему с изначальными данными в хотя бы 100 млн записей и нагрузку в виде добавления 10 зап/сек. Не мелочитесь и сделайте нагрузку в 1000 записей в секунду. Тогда "изначальные данные" сами натикают за пару часов. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2009, 01:08 |
|
||
|
Выбор БД для таблицы с 300 млн. записей и более
|
|||
|---|---|---|---|
|
#18+
SERG1257AJetmanКакие потенциально могут быть у меня проблемы c БД? Судя по всему у вас проблемы с дизайном базы. Сходите в соседний форум , а еще лучше найдите архитектора, расскажите все о вашей базе, о данных и т.д. и получите ответ. Сильно подозреваю, что вашей таблице не помешает нормализация. Поискал информацию о "нормализации" и понял, что мои знания о БД на нуле. Только и хватает на простые веб-приложения. Спасибо за совет сходить на соседний форум, думаю воспользуюсь, но хочу упрямо разместить сразу здесь SQL код схемы таблицы. И переименовал все поля, чтобы их названия вас не смутили: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. Сервер арендуется, поэтому изменить конфигурацию для накопителей можно, а также создать RAID-массив. Жесткий диск сейчас SATA, не SCSI. Подтяну свою знания и проведу тесты на домашнем ноутбуке(конфигурация практически идентична, но процессор 2 ядра) и выложу изыскания на общее обозрение. А сервер на Phenom, к сожалению, уже в работе. Поэтому, пока записей в таблице не много, подумал, что необходимо выбрать правильную базу и раз и навсегда, тем более, что "соскочить" на нее будет еще просто. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2009, 02:12 |
|
||
|
Выбор БД для таблицы с 300 млн. записей и более
|
|||
|---|---|---|---|
|
#18+
AAronAJetman, ну так проведите сайзинг. вообще, хватит ли этого сервера на 1млрд записей? сколько будет занимать база? сколько памяти понадобится для оперативной работы. запросы будут только на запись? на чтение? на запись/чтение, в какой пропорции? Уже запись идет 10 зап/сек, чтение редко, но большими блоками, до 100 тыс. записей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2009, 02:17 |
|
||
|
Выбор БД для таблицы с 300 млн. записей и более
|
|||
|---|---|---|---|
|
#18+
AJetman мои знания о БД на нулеЭто нормально. Найдите людей у которых это выше нуля. AJetman но хочу упрямо разместить сразу здесь SQL код схемы таблицыУпрямость конечно не порок, но я спрашивал немного не то. Мне как и другому архитектору неинтересно, как вы это реализовали. Гораздо интереснее условия задачи. Что за данные Как данные добавляются/изменяются (чохом, по одной). Как важна доступность данных - немедленно после вставки, или можно через определенный промежуток времени. Как данные запрашиваются - примеры запросов Где необходима оптимизация - например пофиг сколько будет занимать вставка, но чтение должно быть максимально быстро Хрустальный шар подсказывает что это что-то типа DWH . Если так, тогда все упрощается (не вы первый не вы последний) стало быть можно пользоваться готовыми шаблонами и best practice. Выбранная база (редакция) накладывает свои ограничения, то бишь возможно придется вручную реализовывать секционирование, материализованые представления и т.д. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2009, 02:53 |
|
||
|
Выбор БД для таблицы с 300 млн. записей и более
|
|||
|---|---|---|---|
|
#18+
SERG1257AJetman мои знания о БД на нулеЭто нормально. Найдите людей у которых это выше нуля. AJetman но хочу упрямо разместить сразу здесь SQL код схемы таблицыУпрямость конечно не порок, но я спрашивал немного не то. Мне как и другому архитектору неинтересно, как вы это реализовали. Гораздо интереснее условия задачи. Что за данные Как данные добавляются/изменяются (чохом, по одной). Как важна доступность данных - немедленно после вставки, или можно через определенный промежуток времени. Как данные запрашиваются - примеры запросов Где необходима оптимизация - например пофиг сколько будет занимать вставка, но чтение должно быть максимально быстро Хрустальный шар подсказывает что это что-то типа DWH . Если так, тогда все упрощается (не вы первый не вы последний) стало быть можно пользоваться готовыми шаблонами и best practice. Выбранная база (редакция) накладывает свои ограничения, то бишь возможно придется вручную реализовывать секционирование, материализованые представления и т.д. Благодарен за наводку на DWH, вы просто открыли мне другой мир. Введя запрос Open Source Data warehouse нашел несколько очень интересных продуктов. Пока, в принципе, дискуссию можно закрыть - за дополнительной помощью буду обращаться позже. Благодарю всех за внимание! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2009, 21:13 |
|
||
|
|

start [/forum/topic.php?fid=35&msg=36148904&tid=1552897]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
4ms |
track hit: |
42ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
46ms |
get tp. blocked users: |
1ms |
| others: | 14ms |
| total: | 144ms |

| 0 / 0 |
