У меня есть ~ 200K именованных свойств и ~ 25K файлов. Я извлекаю, сохраняются ли свойства или нет для каждого файла, используя Python, как набор свойств, которые хранятся, по одному для каждого файла.Hash + mapping или index + mapping для конденсирования использования строк
Чтобы сделать это извлечение, я могу запустить сотни отдельных сценариев извлечения python на вычислительной ферме параллельно. Каждый из них оставляет за собой некоторое представление набора извлечения из каждого из файлов.
Дополнительная обработка включает в себя чтение этих наборов 20K и работу с накопленными данными. для создания отчета об этом наборе файлов/свойств.
Одна из проблем, которые есть у меня, заключается в том, что если я сохраню извлеченный набор как текст, то длинные строки имен свойств и строки имен файлов будут повторяться, теряя пространство на диске и увеличивая время синтаксического анализа.
Я думал создать центральный индекс отсортированных имен свойств и просто сохранить индекс - то же самое для имен файлов, как, вероятно, файлы .py для импорта.
Альтернативой использованию индекса в отсортированном списке имен является использование str. hash() значение как индекс, который будет означать, вероятно, более быструю обработку, но меня беспокоит возможность двух неравных строк, заканчивающихся тем же hash() значение. Может ли это случиться?
Я бы использовал ту же исполняемую версию Python и версию ОС на всех машинах.
Вся точка хэша что вы вычисляете его из значения, и хэш для заданного значения никогда не изменяется. Вы не можете просто изменять хэш, пока он не столкнется. –
Вы можете продолжать изменять хэш-функцию до тех пор, пока значения, которые вы хешируете, никогда не сталкиваются, и только затем попросите все распределенные процессы использовать эту конкретную хэш-функцию. Это называется совершенным хэшированием; Я думаю, что это (или, по крайней мере, было) использовано в некоторых компиляторах для разумного компиляции огромных «case» заявлений. – ondra
Итак, дело доходит до идеального хэширования или использования индекса? Думаю, я закодирую их обоих и посмотрю, что лучше выглядит. – Paddy3118