|
Как отсортировать 1 миллиард записей?
|
|||
---|---|---|---|
#18+
Akina, Нужны наиболее повторяемые записи. Ну пусть 10 записей или 20. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2021, 14:02 |
|
Как отсортировать 1 миллиард записей?
|
|||
---|---|---|---|
#18+
вероятно что вы хотите найти другой алгоритм решения - это очень интересно. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2021, 14:04 |
|
Как отсортировать 1 миллиард записей?
|
|||
---|---|---|---|
#18+
http://it-pearls.ru/top-10-sistem-upravlenija-bazami-dannyh/ авторЭта система управления базами данных использует стандартную форму SQL. Утилиты для проектирования таблиц имеют интуитивно понятный интерфейс. MySQL поддерживает до 50 миллионов строк в таблице. Предельный размер файла для таблицы по умолчанию 4 ГБ , но его можно увеличить. Поддерживает секционирование и репликацию, а также Xpath и хранимые процедуры, триггеры и представления. Это как это???!!! ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2021, 14:11 |
|
Как отсортировать 1 миллиард записей?
|
|||
---|---|---|---|
#18+
miltorg Вот и весь мой рассказ. Это всё было на хостинге. Теперь клиент выделяет под это дело отдельный комп - который"может работат хоть неделю - лишь бы был результат" Что и как делать? Выделенный комп - под Виндос Спасибо. Коробочное решение - найти любую dbms которая поддерживает до 1 000 000 000 rows на табличку. Загрузить туда эту колбасу из хромосом. Проиндексировать второе поле. И сделать что-то вроде Код: sql 1.
Коробочное решение - не спортивное. Если исходить из пятницы и большого числа машинного и людского времени то можно предложить другие алгоритмы. Но основная оптимизация должна базироваться на минимизации пробегов по файлу. Желательно от 1 до 3. Поскольку файл большой и вся нагрузка упадет 80% на ожидание чтения диска. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2021, 14:27 |
|
Как отсортировать 1 миллиард записей?
|
|||
---|---|---|---|
#18+
miltorg Нужны наиболее повторяемые записи. Ну пусть 10 записей или 20. Кстати, какое количество различных значений может встретиться среди тех "20 разных на одну дату" по всему массиву? miltorg вероятно что вы хотите найти другой алгоритм решения - это очень интересно. Однозначно. И первое, что следует сделать - забыть про намерение обойтись одним запросом. Хранимая процедура. Это позволит сбрасывать промежуточные данные в статические таблицы и изрядно компенсировать недостаточный объём оперативной памяти. miltorg Это как это???!!! Ну ты на сайт посмотри! АйТи-перлы... ну или ежели по-нашему - откровенная глупость там написана. Не обращай внимания - от британских учёных и не такое читали... ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2021, 14:58 |
|
Как отсортировать 1 миллиард записей?
|
|||
---|---|---|---|
#18+
mayton, В связи с отстутствием подобных объемов на MySQL, попробовал отсортировать миллиард записей на PostgreSQL. Меньше, чем за 7 минут получилось. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2021, 15:03 |
|
Как отсортировать 1 миллиард записей?
|
|||
---|---|---|---|
#18+
ptr128 В связи с отстутствием подобных объемов на MySQL ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2021, 15:18 |
|
Как отсортировать 1 миллиард записей?
|
|||
---|---|---|---|
#18+
Akina, Вы неверно меня поняли. У меня просто на MySQL нет таблиц с миллиардом записей и даже нет места такую таблицу создать (тестировал на таблице размеров в 200ГБ). А на PostgreSQL такие таблицы уже имеются в наличии. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2021, 15:23 |
|
Как отсортировать 1 миллиард записей?
|
|||
---|---|---|---|
#18+
Давайте теперь спортивное решение. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2021, 15:38 |
|
Как отсортировать 1 миллиард записей?
|
|||
---|---|---|---|
#18+
ptr128, если это правда - то спасибо вам огромное. Вы вселили в меня надежду что я наконец то справлюсь с этой задачей. В чём же была моя ошибка? В том что я пытался сортировать в phpmyAdmin? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2021, 16:18 |
|
Как отсортировать 1 миллиард записей?
|
|||
---|---|---|---|
#18+
miltorg, все возможно. Я для общения с БД не часто пользуюсь GUI, предпочитая писать запросы руками. P.S. Попробуйте DBEaver. Может понравится. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2021, 16:25 |
|
Как отсортировать 1 миллиард записей?
|
|||
---|---|---|---|
#18+
Для всех. Помогите пожалуйста: 1. На Убунту Ставлю сейчас mySQL, Апач, phpmyAdmin 2. Создаю таблицу в базе: id mydata и iz2010 3. Я с Индексом - не совсем понимаю - нужно сразу на поле iz2010 задать индекс? 4. Наполняю до миллиона - говорю вам результат. Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2021, 16:46 |
|
Как отсортировать 1 миллиард записей?
|
|||
---|---|---|---|
#18+
miltorg [b]3. Я с Индексом - не совсем понимаю - нужно сразу на поле iz2010 задать индекс? Индекс можно построить потом. Есть даже рекомендации от Oracle, что для быстрой загрузки данных из CSV в бд - сначала грузят просто данные. Потом включают на таблицах триггеры и индексы. В сумме выходит быстрее. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2021, 17:04 |
|
Как отсортировать 1 миллиард записей?
|
|||
---|---|---|---|
#18+
mayton Давайте теперь спортивное решение. По поводу спорта. Предусловия. Для современного ПК объем доступной оперативной памяти в среднем составляет 8Г. И на этот объем мы можем расчитывать в реализации алгоритмов. Объем диска - неограничен. И характер доступа к файлу - последовательный. Объем файла - 1 000 000 000 * длину строки = = длина даты + длина хромосомы + пробелы и переводы строк = 1 + 1 + 8 + 60 символов (байт) = 70 000 000 000 байт = = 70 Гигабайт. Можно создавать дополнительные служебные файлы для решения данной задачи. Гипотеза 1. Если данных - много (миллиард) а ключ такой длинный (5 6 8 11 16 18 19 22 25 34 37 40 42 51 55 59 61 64 65 69) то велика вероятность что 99.9% данных в таблице - будут уникальны. Далее. Если так много уникальных - то они не интересны как исходные данные. Тоесть гистограмма где-то такая. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9.
В этой задаче - можно сделать сильную оптимизацию если сделать 2 прохода по текстовому файлу и отбросить те ключи которые были по 1 разу. 1) За 1 проход отфильтровываем (отбрасываем) эти 99.9% уникальных ключей. Используем in-memory структуры данных с экономной формой представления ключей. Сохраняем те что остались как кандидаты с (candidates.csv). Здесь я опираюсь на доступные мне 8Гб. 2) На 2 проходе их кандидатов - формируем хеш-табличку и в ней ведем подсчет количества. Здесь я тоже предполгагаю что оставшиеся 0.1 % ключей лягут как хеш-табличка в 8Гб. 3) Публикуем top 20 результатов из этой таблички с сортировкой по count. Весь этот алгоритм потребует 2 пробега по файлу. И он будет работать только на условиях тех гипотез что я описал. Если баланс уникальных - неуникальных ключей в гистограмме будет не 99 к 1 а более другой то памяти не хватит для 1 фазы алгортма и мы упадем по out of memory. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2021, 17:29 |
|
Как отсортировать 1 миллиард записей?
|
|||
---|---|---|---|
#18+
mayton miltorg [b]3. Я с Индексом - не совсем понимаю - нужно сразу на поле iz2010 задать индекс? Индекс можно построить потом. Есть даже рекомендации от Oracle, что для быстрой загрузки данных из CSV в бд - сначала грузят просто данные. Потом включают на таблицах триггеры и индексы. В сумме выходит быстрее. Я это видел воочию. Стоит только поставить на поле Индекс - время загрузки очень существенно увеличивается. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2021, 17:30 |
|
Как отсортировать 1 миллиард записей?
|
|||
---|---|---|---|
#18+
mayton, Я ничего не понял. На 3 миллионах записей - совпадений примерно 5 - одна штука, 4 совпадения - 2 штуки, 3 совпадения - не очень то и нужны. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2021, 17:35 |
|
Как отсортировать 1 миллиард записей?
|
|||
---|---|---|---|
#18+
Хорошо. Тоесть тройки и двойки и единички - в сад. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2021, 17:38 |
|
Как отсортировать 1 миллиард записей?
|
|||
---|---|---|---|
#18+
miltorg Я ничего не понял. Сорян. Я иногда излагаю сумбурно потому что мысль опережает пальцы. Впрочем я могу написать макет кода на Java а участники попробуют сами что-то там поковырять и понять лучше. Один финский парень сказал что код лучше слов. Я с ним согласен но читатели тоже должны быть в контексте того что происходит. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2021, 17:40 |
|
Как отсортировать 1 миллиард записей?
|
|||
---|---|---|---|
#18+
mayton, хотел вам ссылку на исходный файл послать - но что-то не нашёл как. Как? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2021, 17:49 |
|
Как отсортировать 1 миллиард записей?
|
|||
---|---|---|---|
#18+
miltorg, а не проще ли выявлять совпадения сразу же при попадании их в таблицу? То есть, в триггере, при обнаружении совпадения просто записывать ссылку на него в другую таблицу. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2021, 17:52 |
|
Как отсортировать 1 миллиард записей?
|
|||
---|---|---|---|
#18+
miltorg Пока не надо. Тем более что если 50Гигов качать. Это... нудно как-то. Лучше-бы был генератор шума который формировал бы файл с аналогичной гистограммой хромосом. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2021, 17:52 |
|
Как отсортировать 1 миллиард записей?
|
|||
---|---|---|---|
#18+
miltorg хотел вам ссылку на исходный файл послать - но что-то не нашёл как. Как? ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2021, 18:04 |
|
Как отсортировать 1 миллиард записей?
|
|||
---|---|---|---|
#18+
Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2021, 18:07 |
|
Как отсортировать 1 миллиард записей?
|
|||
---|---|---|---|
#18+
Не знаю. Сейчас попытаюсь всё сделать как раньше. А там дальше буду-будем думать. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.01.2021, 18:09 |
|
|
start [/forum/topic.php?fid=47&msg=40034422&tid=1828220]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
48ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
52ms |
get tp. blocked users: |
1ms |
others: | 15ms |
total: | 158ms |
0 / 0 |