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

Откуда:
Сообщений: 22
Таблица состоит из:
- 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 авг 09, 20:33    [7548539]     Ответить | Цитировать Сообщить модератору
 Re: Выбор БД для таблицы с 300 млн. записей и более  [new]
kdv
Member

Откуда: iBase.ru
Сообщений: 30232
все нормально, кроме
AJetman
Ставить второй жесткий диск и в RAID?

второй жесткий диск это будет RAID 1. А чтобы ускорить это надо RAID 10, т.е. 4 диска, или "еще три".

Проверить с миллиардом записей не так сложно. Мне тут надо было, и я потратил 4 дня на проверку Firebird с терабайтной БД (в наибольшей таблице было чуть меньше 4-х миллиардов записей).

Так что заливай тестовые данные, и тестируй.
17 авг 09, 21:20    [7548640]     Ответить | Цитировать Сообщить модератору
 Re: Выбор БД для таблицы с 300 млн. записей и более  [new]
AJetman
Member

Откуда:
Сообщений: 22
kdv
все нормально, кроме
AJetman
Ставить второй жесткий диск и в RAID?

второй жесткий диск это будет RAID 1. А чтобы ускорить это надо RAID 10, т.е. 4 диска, или "еще три".

Проверить с миллиардом записей не так сложно. Мне тут надо было, и я потратил 4 дня на проверку Firebird с терабайтной БД (в наибольшей таблице было чуть меньше 4-х миллиардов записей).

Так что заливай тестовые данные, и тестируй.
Да... Для этого тогда придется смоделировать систему с изначальными данными в хотя бы 100 млн записей и нагрузку в виде добавления 10 зап/сек.
17 авг 09, 21:57    [7548739]     Ответить | Цитировать Сообщить модератору
 Re: Выбор БД для таблицы с 300 млн. записей и более  [new]
AAron
Member

Откуда: Москва
Сообщений: 4324
AJetman,

ну так проведите сайзинг. вообще, хватит ли этого сервера на 1млрд записей? сколько будет занимать база? сколько памяти понадобится для оперативной работы. запросы будут только на запись? на чтение? на запись/чтение, в какой пропорции?
17 авг 09, 22:47    [7548876]     Ответить | Цитировать Сообщить модератору
 Re: Выбор БД для таблицы с 300 млн. записей и более  [new]
Yo.!
Guest
смотри планы запросов, вычисляй куда упрется система. 90% в i/o. один диск конечно не серьезно, диск то небойсь SATA, SCSI/SAS туда воткнуть можно ?
из опенсоурса постгрес самый серьезный, из пропретарных но бесплатных есть смысл только ibm db2 express посмотреть, но там ограничение в 2 процессорных ядра, т.е. половинку твоего процессора, поэтому нужно смотреть насколько хватает CPU ...
17 авг 09, 23:25    [7548936]     Ответить | Цитировать Сообщить модератору
 Re: Выбор БД для таблицы с 300 млн. записей и более  [new]
SERG1257
Member

Откуда:
Сообщений: 2931
AJetman
Какие потенциально могут быть у меня проблемы c БД?
Судя по всему у вас проблемы с дизайном базы. Сходите в соседний форум, а еще лучше найдите архитектора, расскажите все о вашей базе, о данных и т.д. и получите ответ. Сильно подозреваю, что вашей таблице не помешает нормализация.
AJetman
Нужно улучшать сервер? Ставить второй жесткий диск и в RAID?
Пока не будут решены вопросы дизайна, улучшения сервера только оттянут появление проблемы. Другой вопрос, если базу менять нельзя и тогда железо - ЕДИНСТВЕННЫЙ выход.
AJetman
Платить деньги за коммерческие БД смысла не вижу(если есть - поясните).
В каждой из баз (коммерческих или нет) есть способы решения ваших проблем. Но без должного умения платить деньги действительно смысла мало. То бишь само собой оно не полетит если вы поставите Оракл или еще что-нибудь
17 авг 09, 23:28    [7548941]     Ответить | Цитировать Сообщить модератору
 Re: Выбор БД для таблицы с 300 млн. записей и более  [new]
serbDB
Member

Откуда:
Сообщений: 10
автор
второй жесткий диск это будет RAID 1. А чтобы ускорить это надо RAID 10, т.е. 4 диска, или "еще три".

Либо я чего-то не понимаю, либо на двух винтах таки можно создаётся райд массив на скорость. RAID 0 "Striping". Конечно будет страдать надёжность.
Но суть не в том, лучше работать не железом, а таки согласен с SERG1257, нужно работать над структурой БД, если есть возможность.
18 авг 09, 00:11    [7549013]     Ответить | Цитировать Сообщить модератору
 Re: Выбор БД для таблицы с 300 млн. записей и более  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 54751

AJetman

Для этого тогда придется смоделировать систему с изначальными данными в
хотя бы 100 млн записей и нагрузку в виде добавления 10 зап/сек.

Не мелочитесь и сделайте нагрузку в 1000 записей в секунду. Тогда
"изначальные данные" сами натикают за пару часов.

Posted via ActualForum NNTP Server 1.4

18 авг 09, 01:08    [7549090]     Ответить | Цитировать Сообщить модератору
 Re: Выбор БД для таблицы с 300 млн. записей и более  [new]
AJetman
Member

Откуда:
Сообщений: 22
SERG1257
AJetman
Какие потенциально могут быть у меня проблемы c БД?
Судя по всему у вас проблемы с дизайном базы. Сходите в соседний форум, а еще лучше найдите архитектора, расскажите все о вашей базе, о данных и т.д. и получите ответ. Сильно подозреваю, что вашей таблице не помешает нормализация.
Поискал информацию о "нормализации" и понял, что мои знания о БД на нуле. Только и хватает на простые веб-приложения.

Спасибо за совет сходить на соседний форум, думаю воспользуюсь, но хочу упрямо разместить сразу здесь SQL код схемы таблицы. И переименовал все поля, чтобы их названия вас не смутили:
CREATE SEQUENCE pk_mytable;

CREATE TABLE mytable (
    id bigint NOT NULL DEFAULT nextval('pk_mytable'),
    field1 smallint NOT NULL,
    field2 varchar(255) NOT NULL,
    field3 varchar(64) NOT NULL,
    field4 varchar(64) NOT NULL,
    field5 bigint NOT NULL,
    field6 timestamp NOT NULL,
    field7 text NOT NULL,
    field8 boolean NOT NULL,
    PRIMARY KEY (id)
);

-- Индексы только на полях, по которым произвожу выборку
CREATE INDEX field2_idx ON mytable (field2);
CREATE INDEX field3_idx ON mytable (field3);
CREATE INDEX field4_idx ON mytable (field4);
CREATE INDEX field6_idx ON mytable (field6);
CREATE INDEX field5_idx ON mytable (field5);
Таблица - хранилище логов дата-майнинга. Обработка этих данных ведется другими сторонними программами, поэтому информация в таблице должна хранится вечно, а выборка будет производится по полям, на которые создан индекс.

Сервер арендуется, поэтому изменить конфигурацию для накопителей можно, а также создать RAID-массив. Жесткий диск сейчас SATA, не SCSI.

Подтяну свою знания и проведу тесты на домашнем ноутбуке(конфигурация практически идентична, но процессор 2 ядра) и выложу изыскания на общее обозрение. А сервер на Phenom, к сожалению, уже в работе.
Поэтому, пока записей в таблице не много, подумал, что необходимо выбрать правильную базу и раз и навсегда, тем более, что "соскочить" на нее будет еще просто.
18 авг 09, 02:12    [7549155]     Ответить | Цитировать Сообщить модератору
 Re: Выбор БД для таблицы с 300 млн. записей и более  [new]
AJetman
Member

Откуда:
Сообщений: 22
AAron
AJetman,

ну так проведите сайзинг. вообще, хватит ли этого сервера на 1млрд записей? сколько будет занимать база? сколько памяти понадобится для оперативной работы. запросы будут только на запись? на чтение? на запись/чтение, в какой пропорции?
Уже запись идет 10 зап/сек, чтение редко, но большими блоками, до 100 тыс. записей.
18 авг 09, 02:17    [7549162]     Ответить | Цитировать Сообщить модератору
 Re: Выбор БД для таблицы с 300 млн. записей и более  [new]
SERG1257
Member

Откуда:
Сообщений: 2931
AJetman
мои знания о БД на нуле
Это нормально. Найдите людей у которых это выше нуля.
AJetman
но хочу упрямо разместить сразу здесь SQL код схемы таблицы
Упрямость конечно не порок, но я спрашивал немного не то. Мне как и другому архитектору неинтересно, как вы это реализовали. Гораздо интереснее условия задачи.
  • Что за данные
  • Как данные добавляются/изменяются (чохом, по одной).
  • Как важна доступность данных - немедленно после вставки, или можно через определенный промежуток времени.
  • Как данные запрашиваются - примеры запросов
  • Где необходима оптимизация - например пофиг сколько будет занимать вставка, но чтение должно быть максимально быстро

    Хрустальный шар подсказывает что это что-то типа DWH. Если так, тогда все упрощается (не вы первый не вы последний) стало быть можно пользоваться готовыми шаблонами и best practice.
    Выбранная база (редакция) накладывает свои ограничения, то бишь возможно придется вручную реализовывать секционирование, материализованые представления и т.д.
  • 18 авг 09, 02:53    [7549191]     Ответить | Цитировать Сообщить модератору
     Re: Выбор БД для таблицы с 300 млн. записей и более  [new]
    AJetman
    Member

    Откуда:
    Сообщений: 22
    SERG1257
    AJetman
    мои знания о БД на нуле
    Это нормально. Найдите людей у которых это выше нуля.
    AJetman
    но хочу упрямо разместить сразу здесь SQL код схемы таблицы
    Упрямость конечно не порок, но я спрашивал немного не то. Мне как и другому архитектору неинтересно, как вы это реализовали. Гораздо интереснее условия задачи.
  • Что за данные
  • Как данные добавляются/изменяются (чохом, по одной).
  • Как важна доступность данных - немедленно после вставки, или можно через определенный промежуток времени.
  • Как данные запрашиваются - примеры запросов
  • Где необходима оптимизация - например пофиг сколько будет занимать вставка, но чтение должно быть максимально быстро

    Хрустальный шар подсказывает что это что-то типа DWH. Если так, тогда все упрощается (не вы первый не вы последний) стало быть можно пользоваться готовыми шаблонами и best practice.
    Выбранная база (редакция) накладывает свои ограничения, то бишь возможно придется вручную реализовывать секционирование, материализованые представления и т.д.
  • Благодарен за наводку на DWH, вы просто открыли мне другой мир. Введя запрос Open Source Data warehouse нашел несколько очень интересных продуктов.

    Пока, в принципе, дискуссию можно закрыть - за дополнительной помощью буду обращаться позже.

    Благодарю всех за внимание!
    18 авг 09, 21:13    [7553771]     Ответить | Цитировать Сообщить модератору
     Re: Выбор БД для таблицы с 300 млн. записей и более  [new]
    AAron
    Member

    Откуда: Москва
    Сообщений: 4324
    AJetman,
    а теперь можете закрыть все, что было найдено по теме open source data warehouse. начните с теории, а дальше уже будет ясно, DWH не делают на open source.
    18 авг 09, 22:45    [7553991]     Ответить | Цитировать Сообщить модератору
    Все форумы / Сравнение СУБД Ответить