В принципе можно решать как общую задачу создания уникальных идентификаторов:
- использовать данные генератора случайных чисел (не удобно так как не возможно четко контролировать результат);
- использовать псевдослучайные значения, например время, процесс/поток с последующим преобразованием в символьное имя;
- символьное имя очень полезно - так как позволяет лучше при отладке отличать идентификаторы (числа в любом виде хуже отображают отличия);
- имена должны поддерживаться файловой системой(запрет на использование спец символов);
- максимально короткие эффективные имена(снижение затрат памяти), использование всего пространства допустимых символов,
- близкие по времени создания и исходному значению имена должны быть максимально случайны по результату - то есть использовать максимально эффективный хеш-функцию - обычно достигается использованием хеш значений от псевдослучайных факторов времени создания, процесса/потока и идентификатора хранилища;
- решение противоречивой в общем-то задачи:
- максимального разброса имени контента для сохранения;
- и возможности по имени определить максимально быстро наиболее вероятное хранилище в распределенной системе можно использовать 2 имени - внутреннее и внешнее;
- внутреннее должно быть максимально эффективно дробить множество доступных вариантов размещения в локальной системе с разбиением на подкатологи с минимальной вероятностью превышения пределов на одновременное количество вложенных каталогов. Это ограничение возникает как из-за временных затрат при работе с большими каталогами, вытекающее иногда в невозможность добавления данных в каталог, и удобства конечного владельца системы, хоть и редко, но удобнее ходить по маленьким каталогам. Также при максимальном разбросе можно разместить часть каталогов на другом разделе и реализовать дешёвое подобие RAID.
- внешнее - не противоречить правилам для протокола доступа, например не содержать спец символов специфичных для http и html разметки. Позволять легко определить максимально вероятное место расположения в распределенной системе для быстрого выявления не корректно отвечающей части, также при дублировании на другие ресурсы - можно легко удалить данные не специфичные узлу при окончании ресурсов.
- максимального разброса имени контента для сохранения;
No comments:
Post a Comment