Каждая строка число от 1 млрд до 4 млрд. И при добавлении новой надо проверять нету ли уже в БД его.
Как это делается правильно?
например сперва есть 10 разделов, в первое числа по маске 30*********, во втором 31******* и тд.
Потом в первом разделе еще 10 разделов, где первый 300*****, второй 301******* и тд
и так далее что бы было куча "папок" - тогда будет "летать"?
SQL
Принцип БД для поиска из 3 млрд строк.
Правильно это делается хранением данных в документоориентированной БД, или другой NoSQL. Они заточены под большие/гигантские объемы записей и производительность.
SQL-решение так или иначе доставит проблем когда данных станет слишком много. Просто у разных систем разные пороговые значения, за которыми эти траблы начинают проявляться.
// Возможно лучше подойдет CO DBMS, чем DO DBMS - в зависимости от данных, и набора операций (которые определят и тип хранилища, и структуру, и набор индексов). Желательно со спецами по этим самым нереляционкам проконсультироваться, так как общих ответов на такие вопросы не бывает: надо учитывать индивидуальные факторы.
SQL-решение так или иначе доставит проблем когда данных станет слишком много. Просто у разных систем разные пороговые значения, за которыми эти траблы начинают проявляться.
// Возможно лучше подойдет CO DBMS, чем DO DBMS - в зависимости от данных, и набора операций (которые определят и тип хранилища, и структуру, и набор индексов). Желательно со спецами по этим самым нереляционкам проконсультироваться, так как общих ответов на такие вопросы не бывает: надо учитывать индивидуальные факторы.
>Каждая строка число от 1 млрд до 4 млрд. И при добавлении новой надо проверять нету ли уже в БД его.
Делаешь на это поле уникальный индекс и адью.
>например сперва есть 10 разделов, в первое числа по маске 30
А это уже несколько другая задача. Для таких данных используются partitioned tables, и ты их тоже используй, юный падаван.
Делаешь на это поле уникальный индекс и адью.
>например сперва есть 10 разделов, в первое числа по маске 30
А это уже несколько другая задача. Для таких данных используются partitioned tables, и ты их тоже используй, юный падаван.
1. Если у тебя числа, то и хранить их надо как числа - в базе данных.
2. Нет, noSQL (если это не ключ=>значение) использовать для этой задачи не имеет смысла. Банальная реляционная СУБД, где твои числа являются первичным ключом таблицы.
3. А для ускорения выборки таблицу можно секционировать: например, используя частное от деления твоих чисел на 10 млн или остаток от деления на 300: получишь 300 секций по, максимум, 10 млн записей каждая - такое даже в MySQL будет работать очень быстро.
2. Нет, noSQL (если это не ключ=>значение) использовать для этой задачи не имеет смысла. Банальная реляционная СУБД, где твои числа являются первичным ключом таблицы.
3. А для ускорения выборки таблицу можно секционировать: например, используя частное от деления твоих чисел на 10 млн или остаток от деления на 300: получишь 300 секций по, максимум, 10 млн записей каждая - такое даже в MySQL будет работать очень быстро.
Если нужно проверять только факт принадлежности числа множеству, то для 4 миллиардов это можно сделать битовым массивом на ~500 мегабайт. Операция проверки наличия одного числа и добавления/удаления числа будет иметь гарантированную сложность О (1). Но вывести на экран все элементы этого множества будет сложно, придётся перебирать весь битовый массив.
В базах данных есть такая штука: индекс. Индексы сильно ускоряют поиск. В данном случае хорошо подойдёт индекс-ориентированная таблица. Ещё многие СУБД позволяют разбить таблицу на разделы (partitions).
Похожие вопросы
- Выполнение вложенного запроса в БД. Скалярные запросы.
- Как реализовать архитектуру БД?
- Инфологическая модель БД
- Помогите Зелёному! Как наладить проверку БД на полноту новых записей
- Блин что то не могу найти способ произвести эффективную выборку данных из таблицы БД?
- Вывод данных из бд в dataview?
- Как в бд сверять прошло ли определённое время (К примеру 24ч.) после указаной даты в базе?
- Как хостинг с бд взять? с удобным дизайном?
- Вопрос по БД
- Нестандартное извлечение данных из БД
Если у него кроме этих чисел больше ничего не хранится, то в использовании вообще любой СУБД маловато смысла - в таком случае, банальное файловое хранилище на апи ОС будет более адекватно задаче.
Но если помимо этой таблички у него в БД есть и другие, тоже с ~3 млрд. записей каждая, то SQL будет сосо.