50 миллионов + рядов данных - CSV или MySQL - PullRequest
2 голосов
/ 22 декабря 2010

У меня есть файл CSV, размер которого составляет около 1 ГБ и который содержит около 50 миллионов строк данных. Мне интересно, лучше ли хранить его в виде файла CSV или хранить в виде какой-либо базы данных.Я не знаю много о MySQL, чтобы спорить о том, почему я должен использовать его или другую базу данных, а не хранить его как файл CSV.Я в основном выполняю поиск в ширину с этим набором данных, поэтому, как только я получу начальное «начальное значение», установите 50 миллионов, я использую это в качестве первых значений в своей очереди.

Спасибо,

Ответы [ 5 ]

3 голосов
/ 22 декабря 2010

Я бы сказал, что использование базы данных по сравнению с CSV для таких больших структурированных данных дает множество преимуществ, поэтому я бы посоветовал вам научиться этому достаточно. Однако, основываясь на вашем описании, вы можете проверить не серверные / легкие базы данных. Например, SQLite или что-то похожее на JavaDB / Derby ... или, в зависимости от структуры ваших данных, нереляционную (Nosql) базу данных - очевидно, вам понадобится такая, которая поддерживает некоторый тип python.

2 голосов
/ 22 декабря 2010

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

1 голос
/ 22 декабря 2010

Судя по вашим предыдущим вопросам, вы выполняете поиск в социальных сетях по данным друзей в Facebook;поэтому я предполагаю, что ваши данные представляют собой набор утверждений «А является другом Б», и вы ищете кратчайшую связь между двумя людьми?

Если у вас достаточно памяти, я бы предложил проанализировать ваш CSVфайл в словарь списков.См. Можно ли сделать этот поиск в ширину быстрее?

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

Есть также некоторые модули Python, которые могут помочь:

1 голос
/ 22 декабря 2010

Собираетесь ли вы бить все сразу? Если это так, то CSV, вероятно, путь. Все просто и работает.

Если вам нужно выполнить поиск, то что-то, что позволяет индексировать данные, например MySQL, будет лучше.

0 голосов
/ 22 декабря 2010

Как насчет некоторых хранилищ ключей-значений, таких как MongoDB

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