2013-11-29 2 views
2

Я хотел бы совет относительно того, как хранить примерно 200 гб до 1 тб данных - это не изменится.Как обеспечить быстрый доступ к большим данным только для чтения?

Данные никогда не должны обновляться, но будут часто запрашиваться и будут ожидать получения данных < 100ms.

Данные управляются хэшем sha256 и будут запрашиваться только этим ключом.

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

Мои первоначальные идеи: -

  1. Бросьте все это в ключ/значение дб
  2. Partition данные в файлы, основанные на ключ, так что файловая система существует в формате/A/B/c/d/e/f/g/h/i/j.dat, который содержит небольшое количество хэшей, чтобы читать

Я никогда раньше не работал в этом масштабе, поэтому было бы тривиально и очевидно другие, как справиться с этим.

ответ

1

Если вы просто загрузите элементы один раз, просто загрузите их в любые РСУБД и поместите кластеризованный индекс в хэш-файл sha256. Это даст вам примерно один доступ к диску для доступа, поскольку доступ осуществляется в случайных местах, а 1 ТБ данных не вписывается в память. Верхние уровни индекса вписываются в память, поэтому у вас есть только один физический IO.

Ожидайте около 10 мс времени доступа.

Очень простое и надежное решение.

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

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