@Galaxy773

База данных на 32 гигабайта, как сделать?

У меня есть 2^32 (4 миллиарда) записей, общим размером ~32 гигабайта, мне нужно как то быстро поместить их в какую нибудь базу данных, чтобы потом проверять на наличие в ней значения из программы. Как можно такое быстро реализовать? Если бы размер был < 16 гигабайт, я бы просто загружал в озу из файла.
  • Вопрос задан
  • 135 просмотров
Пригласить эксперта
Ответы на вопрос 5
@alexalexes
Если цель хранения данных - логирование состояния приложения, и это нужно делать только локально, то подойдет SQLite. Если нужно общее хранилище данных для нескольких экземпляров приложения, или нужно иметь общий доступ к данным по сети, то нужно брать СУБД по-функциональнее, например, PostgreSQL или MySQL (желательно 8 версии).
Для решения данной задачи нужно изучить следующие моменты:
1. Какими средствами администрировать СУБД: чтобы создать пользователя, создать базу данных, создать необходимые таблицы, просматривать данные.
2. Как подключиться к СУБД из программной среды.
3. Как выполнять запросы вставки, выборки по условию, с параметрами запроса средствами SQL с использованием библиотеки работы с СУБД из программной среды.
Ответ написан
AlexNest
@AlexNest
Работаю с Python/Django
Читать файл построчно и заносить данные постепенно.
Ответ написан
firedragon
@firedragon
Senior .NET developer
32 гигабайта это ни о чем.
Посмотрите мой проект fias основные фишки это пакетная вставка. Причём это именно вставка с довольно сложной логикой. Едем дальше, быстрый поиск тут важны правильные индексы и некоторая денормализация данных, тут уж думайте сами. И кстати у datasventistov есть инструменты именно для вашей задачи быстрые срезы по файлам когда датасет не помещается в память
Ответ написан
Комментировать
@mayton2019
Bigdata Engineer
Между ОЗУ и БД есть еще промежуточный вариант. Это различные key-value библиотеки для работы с хранением и поиском больших объемов данных. Из таковых я помню



На самом деле их гораздо больше. Но автору и этих хватит. LevelDb создавался гуглом и под него есть разные API (C++, Java, C#). Почти все эти key-value библиотеки поддерживают 2 базовые структуры данных на диске (это HashTable, B+Tree).

Для твоей задачи прекрасно подходит дисковая хеш-таблица.

А если разумно партицировать твой объем - то можно и просто в CSV файлы разложить с гарантийным временем доступа.
Ответ написан
Комментировать
dimonchik2013
@dimonchik2013
non progredi est regredi
manticoresearch проще , быстрее, и нетребователен к ресурсам

туториалы посмотри, если SQL знаешь то достаточно
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы