Встала задача раздублить около 60гб строковых данных. Уникальных среди них около 25-30%
Решили использовать mysql с уникальным индексом для этого.
Вопросы: 1. Уникальным лучше делать поле с самой строкой (1-5 слов) или же оптимальней считать сначала crc32 от этой строки, и уже на хеш вешать уникальный индекс?
2. Можно ли применить некое курстарное подобие партиционирования, но не на уровне таблиц, а на уровне БД?
Например, делить данные по первой букве строки (получим 28 физических баз), и одновременно заполнять только одну из них, тем самым уменьшая потребление RAM?
а, т.е. вы хотите создать БД с уникальным ключом и попытаться на неё импортнуть все строки?
насчёт партиционирования не знаю, я таких фич не встречал
считать хеш не рекомендую, тем более что 1-5 слов это весьма короткий фрагмент текста,MySQL сам справится с задачей
Да, именно импортнуть
1-5 слов будет длиннее чем crc32(4 байта), следовательно существенно уменьшится размер индекса. Время импорта не так критично как расход оперативы
не забудьте о том что CRC32 это высокая вероятность коллизий (а значит повторный поиск сравнением) плюс расходы на взятие суммы
стройте B-TREE, не так уж много он пямяти и съест
К сожалению только (no)mysql, там кроме раздублирования еще доп функионал нужен. Остановился на mysql т.к. только с ней работал плотно и опыта на порядок больше чем с другими субд.