#mysql #sql #merge #bigdata
#mysql #sql #слияние #bigdata
Вопрос:
Мне нужно обработать 25 миллионов строк данных, которые я собрал и преобразовал примерно из 50 разных источников. Каждый источник приводит примерно к 500.000 — 600.000 строкам. Каждая запись имеет одинаковую структуру, независимо от источника (скажем: id, title, author, release_date)
Для гибкости я бы предпочел создать выделенную таблицу для каждого источника (тогда я могу очистить / удалить данные из источника и перезагрузить / загрузить данные очень быстро (используя LOAD INFILE)). Таким образом, кажется, что очень легко обрезать таблицу без риска удаления строк из других источников.
Но тогда я не знаю, как выбирать записи с одним и тем же автором в разных таблицах и вишенкой на торте, с нумерацией страниц (ключевое слово LIMIT).
Это единственное решение для хранения всего в одной огромной таблице и решения проблем с индексацией / резервным копированием базы данных объемом 25 миллионов или есть какой-то абстрактный уровень для виртуального объединения 50 таблиц в виртуальную.
Вероятно, это обычный вопрос для администратора базы данных, но я пока не смог найти ответа… Любая помощь / идея приветствуется. Спасибо
Комментарии:
1. Похоже, вы описываете разделение
2. То, что вы описываете, — это разделение. Я недостаточно разбираюсь в MySQL, чтобы знать, подходит ли это для вас.
Ответ №1:
Это может быть хорошим местом для разделения MySQL.
Это позволяет вам обрабатывать большой объем данных, одновременно предоставляя вам возможность выполнять операции DML для определенного раздела, когда это необходимо (например truncate
, или событие drop
), очень эффективно и не влияя на остальные ваши данные. Выбор разделов также поддерживается в LOAD DATA
операторах.
Вы можете запускать запросы по разделам, как с обычной таблицей, или нацеливаться на определенный раздел, когда вам нужно (что может быть сделано очень эффективно).
В вашем конкретном случае использования разделение списка кажется подходящим выбором: у вас есть заранее определенный список источников, поэтому у вас обычно будет один раздел на источник.