Недостаточно памяти RAM - PullRequest
1 голос
/ 01 мая 2011

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

Ответы [ 2 ]

2 голосов
/ 01 мая 2011

Каждый раз, когда у вас есть данные, которые не могут быть легко воссозданы на лету, вам необходимо принять меры для их извлечения из ОЗУ и на диск. Любое хранилище данных сделает это. Вы можете использовать плоский или текстовый файл или файл YAML.

Если вам нужен быстрый доступ, то вы будете искать какую-то базу данных, потому что чтение простого / текстового файла не позволяет произвольный доступ. SQLLite может сделать это, или база данных без SQL.

Если вам нужно разрешить нескольким процессам доступ к данным и иметь хорошее ограничение доступа, и / или хранить данные на одном компьютере и получать доступ к ним с другого, то вы будете искать какую-то базу данных. В этот момент я бы заглянул в MySQL или Postgres. Я предпочитаю позже, но они оба будут работать.

1 голос
/ 01 мая 2011

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

Я не знаю вашей ситуации, но я действительно сомневаюсь, что описанная вами хеш-таблица приведет к тому, что разумному компьютеру не хватит памяти.Если вы действительно так думаете, возможно, вам следует использовать базу данных хранения значений ключей (Redis довольно прост в изучении http://redis.io/) или другой вид базы данных NoSQL.

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