2015-03-11 2 views
0

Предположим, что кортеж из четырех строк (дата, имя, тип, цена) генерируется каждые 10 секунд. Я пишу программу на Python, чтобы хранить эти кортежи на диске для дальнейшего использования (только чтение). Будут миллионы кортежей, поэтому здесь важна операция «вставки». Какое лучшее решение этой проблемы? SQLite, Postgres, MongoDB или плоский файл?База данных или плоский файл для миллионов записей?

Я прочитаю почти все данные в памяти, от начала до конца. Мне не нужны сложные реляционные чтения. Например, «SELECT price FROM table» - это то, что мне нужно. Я вообще не буду использовать какие-либо индексы.

+1

«только чтение» немного расплывчато ... *** как *** данные прочитаны? Если вам нужны случайные чтения, плоские файлы не будут забавными. Если вам нужны сложные реляционные чтения, используйте СУРБД. Если нет, монго может быть лучшим выбором ... Какие типы индексов вам понадобятся и т. Д. - это очень широкий вопрос и слишком мало информации. Кроме того, в одной вставке каждые 10 секунд, 100M займет более 31 года ... – mnemosyn

+0

Я прочитаю почти все данные в памяти, от начала и до конца. Мне не нужны сложные реляционные чтения. Например, «SELECT price FROM table» - это то, что мне нужно. Я вообще не буду использовать какие-либо индексы. –

+0

Тогда спросите себя о нефункциональных требованиях (репликация, что происходит при сбое и т. Д.). Плоские файлы будут делать это, и они всегда бывают самыми быстрыми, но я лично выбрал mongodb. С WiredTiger вы также получаете сжатие, которое, вероятно, полезно для этого случая ... Во всяком случае, я бы сказал, что это вопрос предпочтения, любая база данных может справиться с этим, так же как и плоские файлы ... – mnemosyn

ответ

0

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

Смежные вопросы