Является ли SQLite хорошим выбором для большой базы данных только для чтения для исследований? - PullRequest
2 голосов
/ 20 января 2011

У меня есть большое количество записей (скажем, от 10 до 100 миллионов), которые я хочу запросить.

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

Является ли SQLite разумным выбором для этой цели?

Ответы [ 3 ]

2 голосов
/ 22 января 2011

Мой опыт работы с SQLite заключается в том, что он может работать довольно медленно на больших наборах записей, в зависимости от того, как вы структурируете свои запросы.Если ваши данные нормализованы, и вы можете получить, запросив одну таблицу к ее первичному ключу, то это приемлемо быстро, но если ваши данные полностью нормализованы и ваши запросы включают несколько объединений, то это может быть намного медленнее, чем база данных клиент-сервер,

Основным преимуществом SQLite является его небольшой размер и характер отдельных файлов, которые облегчают распространение встроенных в приложение.Поскольку это, кажется, не является обязательным требованием для вас, я думаю, вам лучше пойти с чем-то другим.SQL Server Express хорош, если вы используете Windows, MySQL или Postgres, в противном случае будет хорошим выбором.

2 голосов
/ 25 января 2011

Как указывалось в предыдущих статьях, SQLite - это отличная библиотека SQL, но она может закончиться, когда набор данных становится очень большим. Berkeley DB недавно представила SQL API, полностью совместимый с SQLite. Он был добавлен в Berkeley DB для того, чтобы предоставить лучшее из обоих миров пользователям SQLite - повсеместность, простота и удобство использования SQLite с параллелизмом, масштабируемостью и надежностью Berkeley DB.

API-интерфейс Berkeley DB SQL был разработан для быстрой замены приложений SQLite, особенно тех, которым особенно нужны функции и масштабируемость Berkeley DB, которых нет в собственном SQLite. Подробнее об этом вы можете прочитать в документации Berkeley DB SQL API .

Отказ от ответственности: я один из менеджеров по продукту в Berkeley DB, поэтому я немного предвзят. Но ваш вариант использования - одна из причин, по которой мы работали с доктором Хиппом и разработчиками SQLite, чтобы объединить API SQLite с менеджером хранилища Berkeley DB. Это позволяет разработчикам приложений SQLite переносить свои приложения в новые области с дополнительными возможностями, оставаясь совместимым с их существующей реализацией.

Пожалуйста, дайте нам знать, если у вас есть какие-либо вопросы или мы можем чем-нибудь помочь. Активное сообщество разработчиков Berkeley DB можно найти на форумах OTN .

Желаем удачи в вашем проекте.

С уважением,

Dave

1 голос
/ 21 января 2011

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

Преимущество (особенно в вашем случае) SQLite заключается в том, что он настолько легок, что попытка его использования с некоторыми данными, вероятно, стоила бы времени и усилий. Это очень просто и идеально подходит для однопользовательского доступа.

Я бы сказал, попробуйте собрать его с представительным количеством данных (вы можете выполнить импорт из CSV-файла из командной строки или использовать одну из множества доступных оболочек). Если скорость неудовлетворительная, вам, возможно, придется переключиться на что-то с большей мощностью, но, по общему признанию, немного более сложной настройкой, например, MySQL.

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