Краткое резюме
- Вам нужно достаточно памяти (RAM) для эффективного решения вашей проблемы. Я думаю, вы должны обновить память ?? Читая отличный блог High Scalability , вы заметите, что для больших сайтов, чтобы эффективно решить проблему, они хранят полный набор проблем в памяти.
- Вам необходимо решение для центральной базы данных. Я не думаю, что ручная работа с Python-словарем только сделает работу.
- Как решить «вашу проблему», зависит от вашего «запроса». Сначала я бы попытался поместить ваши данные в эластичный поиск (см. Ниже) и выполнить запрос к базе данных (посмотреть, как она работает). Я думаю, что это самый простой способ решить вашу проблему. Но, как вы можете прочитать ниже, есть много способов решить вашу проблему.
Мы знаем:
- Вы использовали Python в качестве языка вашей программы.
- Ваша база данных ~ 900 МБ (я думаю, она довольно большая, но абсолютно управляемая).
- Вы загрузили все данные в словарь Python. Здесь я предполагаю, что проблема лежит. Python пытается сохранить словарь (также словарь Python не самый удобный для памяти) в вашей памяти, но у вас недостаточно памяти ( Сколько у вас памяти ???? ). Когда это произойдет, у вас будет много виртуальной памяти . Когда вы пытаетесь прочитать словарь, вы постоянно меняете данные с диска в память. Этот обмен вызывает " Trashing ". Я предполагаю, что вашему компьютеру не хватает оперативной памяти. Если это правда, то я сначала обновил бы вашу память, по крайней мере, на 2 гигабайта дополнительной оперативной памяти. Когда ваш набор задач сможет поместиться в памяти, решение проблемы будет намного быстрее Я открыл книгу о своей компьютерной архитектуре, где говорится (иерархия памяти), что время доступа к основной памяти составляет около 40-80 нс, а время доступа к дисковой памяти - 5 мс. Это большая разница.
Отсутствует информация
- У вас есть центральный сервер. Вы должны использовать / иметь сервер.
- Какая архитектура у вашего сервера? Linux / Unix / Windows / Mac OSX? По моему мнению, ваш сервер должен иметь архитектуру Linux / Unix / Mac OSX.
- Сколько памяти имеет ваш сервер?
- Не могли бы вы указать свой набор данных (CSV) немного лучше.
- Какой вид добычи данных вы делаете? Вам нужны возможности полнотекстового поиска? Я не предполагаю, что вы делаете какой-либо сложный (SQL) запрос. Выполнение этой задачи с использованием только словарей Python будет сложной задачей. Не могли бы вы формализовать запрос, который вы хотели бы выполнить? Например:
"get all users who work for departement x"
"get all sales from user x"
Требуется база данных
Я компьютерный человек для
все в маленькой компании, и я
был начат новый проект, где
Я думаю, что пришло время попробовать новое
базы данных.
Вы уверены, что вам нужна база данных для решения вашей проблемы. Делать это самостоятельно, используя только словарь Python, сложно. Особенно, когда ваш набор проблем не помещается в памяти.
MySQL
Я думал об использовании mysql, но потом
Мне нужно установить MySQL в каждом
рабочий стол, sqlite проще, но это
очень медленно. Мне не нужен полный
реляционная база данных, просто какой-то способ
играть с большими объемами данных в
приличное время.
Централизованная (клиент-серверная) база данных - это именно то, что вам нужно для решения вашей проблемы. Предоставьте всем пользователям доступ к базе данных с 1 компьютера, которым вы управляете. Вы можете использовать MySQL для решения вашей проблемы .
Токийский тиран
Вы также можете использовать Токийский тиран для хранения всех ваших данных. Токийский тиран работает довольно быстро, и его не нужно хранить в оперативной памяти. Это делает получение данных более эффективным (вместо использования словаря Python). Однако, если ваша проблема может полностью уместиться в памяти, я думаю, вам стоит взглянуть на Redis (ниже).
Redis:
Вы можете, например, использовать Redis (быстрый запуск через 5 минут) (Redis очень быстро), чтобы сохранить все продажи в памяти. Redis чрезвычайно мощный и может делать такие запросы безумно быстро. Единственная проблема с Redis состоит в том, что он должен полностью уместиться в RAM , но я считаю, что он работает над этим (ночная сборка уже поддерживает это). Также, как я уже говорил ранее, решение вашей проблемы полностью из памяти - это то, как большие сайты решают эту проблему своевременно.
Магазины документов
Эта статья пытается оценить kv-хранилища с хранилищами документов, такими как couchdb / riak / mongodb. Эти магазины лучше способны искать (немного медленнее, чем магазины KV), но не полны полнотекстового поиска.
Полный текст-поиск
Если вы хотите выполнять полнотекстовые поисковые запросы, вы можете набрать:
- asticsearch (видео) : Когда я увидел демонстрацию видео эластичного поиска, это выглядело довольно круто. Вы можете попробовать поместить (опубликовать простой json) свои данные вasticsearch и посмотреть, насколько быстро это происходит. Я следую за elastissearch на github, и автор добавляет в него много нового кода.
- solr (учебное пособие) : Многие крупные компании используют solr (github, digg) для поиска. Они получили большой импульс от полнотекстового поиска MySQL до solr.