powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Поветуйте БД + структуру таблиц для большого индекса
3 сообщений из 3, страница 1 из 1
Поветуйте БД + структуру таблиц для большого индекса
    #35593545
Посоветуйте, какую базу данных+ движок таблиц (бесплатную + unix) лучше выбрать для этого всего?
Есть поле 'a' и его свойства b,c,d – которые сами между собой не связываются.
Нужно выбрать структуру данных для хранения примерно 700 млн. (лучше 1-2 млрд) записей. Практически все запросы будут SELECT. То есть это что то вроде индексной базы, которую можно обновлять апдейтами отдельно, а потом подменять старые данные новыми на уровне rename table, то есть актуальность и целостность базы не критична. Предусмотреть возможность масштабирования при большой нагрузке.

Обычный первый вариант:

CREATE TABLE `very_big_table` (
`a` varchar(255) NOT NULL,
`b` varchar(50) default NULL,
`c` varchar(50) default NULL,
`d` varchar(50) default NULL,
`created` datetime NOT NULL,
`updated` datetime default NULL,
PRIMARY KEY (`a`),
KEY `b` (`b`),
KEY `c` (`c`),
KEY `d` (`d`),
KEY `updated` (`updated`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

Запросы, которые будут производиться:
SELECT a FROM very_big_table WHERE b = 'some_string';
SELECT a FROM very_big_table WHERE c = 'some_string';
SELECT a FROM very_big_table WHERE d = 'some_string';
SELECT a FROM very_big_table ORDER BY updated LIMIT n;

Второй вариант — вертикально разбиваем на 5 таблиц

CREATE TABLE `big_table_a` (
`a` varchar(255) NOT NULL,
`created` datetime NOT NULL,
`updated` datetime NOT NULL,
PRIMARY KEY (`a`),
KEY `updated` (`updated`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

CREATE TABLE `big_table_b` (
`b` varchar(50) NOT NULL,
`a` varchar(255) NOT NULL,
`created` datetime NOT NULL,
`updated` datetime default NULL,
PRIMARY KEY (`b`,`a`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

CREATE TABLE `big_table_c` (
`c` varchar(50) NOT NULL,
`a` varchar(255) NOT NULL,
`created` datetime NOT NULL,
`updated` datetime default NULL,
PRIMARY KEY (`c`,`a`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

CREATE TABLE `big_table_d` (
`d` varchar(50) NOT NULL,
`a` varchar(255) NOT NULL,
`created` datetime NOT NULL,
`updated` datetime default NULL,
PRIMARY KEY (`d`,`a`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

Запросы:
SELECT a FROM big_table_b WHERE b = 'some_string';
SELECT a FROM big_table_c WHERE c = 'some_string';
SELECT a FROM big_table_d WHERE d = 'some_string';
SELECT a FROM big_table_a ORDER BY updated LIMIT n;

В этом случае можно разнести данные на разные физические сервера.
Может есть какие то более выгодные варианты?
Спасибо заранее всем откликнувшимся.

P.S. Вопрос масштабирования особо актуален.
...
Рейтинг: 0 / 0
Поветуйте БД + структуру таблиц для большого индекса
    #35593782
Bely
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Илья ЛуценкоВ этом случае можно разнести данные на разные физические сервера.
Может есть какие то более выгодные варианты?
P.S. Вопрос масштабирования особо актуален.Есть более промышленные - КЛАСТЕР.
Именно это вы и пытаетесь изобразить своими доморощенными предложениями.
...
Рейтинг: 0 / 0
Поветуйте БД + структуру таблиц для большого индекса
    #35644623
Фотография Dogen
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Илья Луценко
Может есть какие то более выгодные варианты?

Есть, конечно - VARCHAR на BIGINT заменить, тем более что есть подозрение такое, что в столбцах b,c,d будет масса повторяющихся значений. Или не будет?

Зачем вообще это рассматривать в отрыве от проблемной области и предполагаемых алгоримов обработки?
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Поветуйте БД + структуру таблиц для большого индекса
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]