SQLite для больших наборов данных? - PullRequest
19 голосов
/ 23 июня 2009

У меня достаточно большой набор данных, и я хотел бы сохранить его в файле, а не в СУБД.

Основная таблица в наборе данных имеет размер чуть более 1М строк, 30 столбцов и около 600 МБ в виде CSV.

Я рассматриваю SQLite. Стоит ли исследовать SQLite для наборов данных такого размера?

Ответы [ 5 ]

17 голосов
/ 23 июня 2009

SQLite прекрасно справится с этим файлом; Обязательно импортируйте записи в транзакции, чтобы не тратить много времени на создание индексов, пока все не будет импортировано.

9 голосов
/ 23 июня 2009

Я недавно исследовал SQLite для аналогичного приложения. В документации по SQLite говорится, что базы данных SQLite могут иметь размер в терабайтах и ​​что основным ограничением SQLite является параллелизм (много пользователей одновременно). Хотя мы не пошли в этом направлении (у нас есть собственный двоичный формат хранения), я был вполне уверен, что SQLite сможет обрабатывать файлы такого размера.

6 голосов
/ 24 июня 2009

sqlite работает быстро, когда вы используете транзакции и не делаете коммит слишком часто. Использование готовых операторов с параметрами также ускоряет работу. Sqlite не нужно повторять каждый SQL-оператор при использовании параметризованных запросов. Пример: Как мне обойти проблему "" "в sqlite и c #?

Я храню 2 гигабайта в БД sqlite, это работает очень хорошо. Большим преимуществом sqlite над плоским файлом является возможность индексировать ваши данные.

5 голосов
/ 24 декабря 2014

У вас уже есть свой ответ, но я хотел бы поделиться своим текущим экспериментом: я поместил миллиарды записей объемом 793 ГБ данных в одну базу данных SQLite, и запросы на чтение все еще удивительно быстрые (менее 1 м). *

Время создания заняло чуть более 22 часов, а пост-индексное создание занимает около 4 часов на столбец.

3 голосов
/ 23 июня 2009

sqlite должен работать просто отлично для вас. Я запустил набор данных такого размера даже во встроенном устройстве, и производительность sqlite была вполне разумной.

Как уже говорилось, основным узким местом является параллелизм. Постарайтесь спроектировать свою систему так, чтобы на каждый файл базы данных было открыто не более одного дескриптора базы данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...