LINUX.ORG.RU

Непоследовательный доступ к массиву данных.


0

0

Есть набор измерений X1,X2,...,Xn. Таких измерений много (порядка 700 мб.). Каким образом проще всего обеспечить рандомный доступ к таким данным? Нужно адресоваться по ним, но хранить такое в ОЗУ нет возмодности (ее размер ~256-512). Есть ли готовые решения (либы, алгоритмы, методики).


У меня подобная задача (только объемы данных составляют десятки гигабайт). Решил просто: смещение каждого Nго элемента вместе с временем его регистрации хранится в отдельном файле. Сначала производится поиск по этому файлу для определения начального смещения, затем уже, начиная с полученного смещения, анализируется основной файл с данными.

Вам же, если у вас измерения имеют разную длину, можно хранить отдельно смещение и номер.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

Такое решение первым пришло в голову. Но надеялся, что есть способ проще (считать, что есть готовая реализция. :) ).

lsv
() автор топика
Ответ на: комментарий от lsv

> Но надеялся, что есть способ проще

Berkeley DB, например.

const86 ★★★★★
()

SQL + кэширующая прослойка. Или BerkleyDB, оно само умеет кэшировать записи.

mikki
()

Есть и называется системный swap. Быстрее получить доступ будет сложно, не зря его уже доооолго пилят.

vertexua ★★★★★
()
Ответ на: комментарий от anonymous

Вам же говорят: памяти мало, mmap'ить не получится. Хотя, например, файл кэша, если его размеры будут небольшими, можно и mmap'нуть.

Eddy_Em ☆☆☆☆☆
()
Ответ на: комментарий от Eddy_Em

man mmap: mmap() creates a new mapping in the VIRTUAL!!! address space of the calling process.

anonymous
()

попробуй еще posix_fadvise

xydo ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.