Структура базы данных для проекта

Рейтинг: 2Ответов: 1Опубликовано: 13.01.2015

Всем привет!

Давно не писал, решил вспомнить, как это, и сразу вопрос в лоб, даже не вопрос, а хотелось бы рассуждений на тему структуры и реализации таблиц(ы).

Дано:
1. Есть данные - это по большому счету перечисление символов по порядку, а-ля брутфорс (от 0 до, скажем, ZZZZZZ). 2. Набор включает в себя цифры и буквы ENG алфавита большие и маленькие.

Варианты решения: Т.к. мы не можем с уверенностью сказать, что мы знаем, какая последовательность будет, допустим, у 10000 элемента, поскольку нам нужно будет перебрать все варианты, запишем все эти варианты в таблицу БД (id, var):

id var
 1  0
 2  1
 3  2
 4  3
 .  ...
 n ZZZZZZ

Допустим, получилось около 15 миллионов записей.

У нас есть пользователи, которым мы будем раздавать эти записи, понятное дело, что будет связь uid > id, это понятно.

Вопрос заключается в том, чтобы не заполнять таблицу сразу всеми имеющимися записями, а заполнять её по ходу, но не перебирая все возможные варианты.

Или же наоборот вариант с первичными данными лучший?

Может тут случиться так, что 15 миллионов не хватит, тогда мы увеличиваем длину на 1, было 6 - станет 7, кол-во записей возрастает, но таблицу нужно дополнить новыми, вопрос как если мы не знаем, что за чем идет?

2 эти данные можно разнести на несколько таблиц по 15 миллионов записей, к примеру, а потом на разные сервера.

Есть идеи, как можно реализовать?

//upd можно, конечно, вставлять данные на лету и проверять их на существование в таблице, но опять-таки, на первых порах - это будет быстро, а дальше? Если будет 10 таблиц по 10 миллионов записей?
Индексы - да, но как понять, в какой таблице искать.

//upd и все равно, как узнать следующий элемент из набора символов то? Чтобы не плодить сразу таблицу со значениями? про 256 немного не понял, и ссылка мне не особо помогла.

Ответы

▲ 1

Используйте хеши. Перебирайте данные на лету, в БД храните пару хеш-строка. У вас всегда будет однозначное соответвие сроки и хеша, поиск по хешу при индексе на столбец с хешом будет проходить за log(n), что достаточно быстро.