Сведения о вопросе

nikolya

04:37, 4th August, 2020

Теги

MySQL    

Отсеивание дублей строк с Mysql?

Просмотров: 322   Ответов: 4

Здравствуйте,

Встала задача раздублить около 60гб строковых данных. Уникальных среди них около 25-30%

Решили использовать mysql с уникальным индексом для этого.


Вопросы:
1. Уникальным лучше делать поле с самой строкой (1-5 слов) или же оптимальней считать сначала crc32 от этой строки, и уже на хеш вешать уникальный индекс?

2. Можно ли применить некое курстарное подобие партиционирования, но не на уровне таблиц, а на уровне БД?

Например, делить данные по первой букве строки (получим 28 физических баз), и одновременно заполнять только одну из них, тем самым уменьшая потребление RAM?



  Сведения об ответе

baggs

13:53, 10th August, 2020

обязательно в mysql?
если данные в текстовом файле то можно на авк:

awk '!t[$0]++' data.txt
работает быстрее чем всё остальное, возвращает первую уникальную строку, но потребует оперативной или виртуальной памяти на весь массив, а это прямо пропорционально кол-ву уникальных строк.

партиционирование — супер идея. но побъется порядок, и к тому же нужно руками перечислить все варианты, например начальные буквы строки.
awk '/^[A-F]/ {print $0 >> file1_AF.txt }

/^[G-M]/ {print $0 >> file2_GM.txt }

...'
обработка каждого из таких файлов, тем -же awk-фильтром, потребует меньше памяти.


  Сведения об ответе

lats

05:34, 3rd August, 2020

Исходные данные в текстовых файлах лежат. Подлежать заполнению.
А вообще индекс на неочищенную можно добавить так:
ALTER IGNORE TABLE `test` ADD UNIQUE (`text`)


  Сведения об ответе

padenie

21:06, 1st October, 2020

а, т.е. вы хотите создать БД с уникальным ключом и попытаться на неё импортнуть все строки?
насчёт партиционирования не знаю, я таких фич не встречал
считать хеш не рекомендую, тем более что 1-5 слов это весьма короткий фрагмент текста,MySQL сам справится с задачей


  Сведения об ответе

SKY

18:22, 21st August, 2020

К сожалению только (no)mysql, там кроме раздублирования еще доп функионал нужен. Остановился на mysql т.к. только с ней работал плотно и опыта на порядок больше чем с другими субд.


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться