В основном только для чтения использование DETS - PullRequest
4 голосов
/ 25 января 2011

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

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

Ответы [ 3 ]

4 голосов
/ 25 января 2011

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

Но вы рассматривали возможность использования Mnesia вместо ETS напрямую? С таблицей Mnesia типа disc_copies вы получите скорость ETS и постоянство

2 голосов
/ 25 января 2011

Прямо со страницы руководства Dets :

"Поскольку все операции, выполняемые Dets, являются операциями с дисками, важно понимать, что одна операция поиска включаетпоследовательность операций поиска и чтения диска. По этой причине функции Dets намного медленнее, чем соответствующие функции Ets, хотя Dets экспортирует аналогичный интерфейс. "

То есть для хранилища, предназначенного для чтения, Dets - не оптимальный выборРазработчики оставили эту оптимизацию для пользователей.)

0 голосов
/ 26 января 2011

Для записи редко читайте много данных, которые вы хорошо храните в памяти, посмотрите «Mochiglobal».У Mochiweb есть аккуратный модуль, который использует общую кучу Эрланга для констант модулей через систему управления кодом, чтобы обеспечить сверхбыстрый доступ к терминам путем создания модулей с заданными значениями в качестве констант на лету.

Riak использует Mochiglobal длясостояние кольца, IIRC.

Источник Херса:

https://github.com/mochi/mochiweb/blob/master/src/mochiglobal.erl

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

...