powered by simpleCommunicator - 2.0.50     © 2025 Programmizd 02
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как отсортировать 1 миллиард записей?
11 сообщений из 336, страница 14 из 14
Как отсортировать 1 миллиард записей?
    #40038203
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miltorg мою задачувсе и решают твою задачу
и решили.

Почему бы тебе не обработать битовое решение в виде как требует твой заказчик?
Т.е. осталось из 11,12 совпадений добавить по 11, 12 строк с 10-ю совпадениями

кто сказал что БД не нужно?
БД нужно,
1. потому что данные ежедневные, необходимо хранить предыдущие комбинации, чтобы не генерить каждый день вчерашнее.
2. потому что там держим и вид "заказчика" и битовый и используем ф-ю для сравнения
...
Рейтинг: 0 / 0
Как отсортировать 1 миллиард записей?
    #40038205
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вид в котором можно делать комбинаторику в SQL - явно не "строка" а ...таблица
По-моему где-то выше предлагали что-то похожее
таблицаddt n5 01.08.19667 01.08.19668 01.08.196615 01.08.196622 01.08.196623 01.08.196627 01.08.196634 01.08.196637 01.08.196639 01.08.196640 01.08.196641 01.08.196643 01.08.196644 01.08.196650 01.08.196655 01.08.196657 01.08.196658 01.08.196662 01.08.196670 01.08.1966

и дал бы ты данные в виде SQL сразу - неделю бы не копались
SQL кодище набора циферек на 1966-08-01)
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
USE test;
CREATE TABLE loto10 (
  n int DEFAULT NULL,
  ddt date DEFAULT NULL);

INSERT INTO loto10 (n, ddt) VALUES
(5, '1966-08-01'),
(7, '1966-08-01'),
(8, '1966-08-01'),
(15, '1966-08-01'),
(22, '1966-08-01'),
(23, '1966-08-01'),
(27, '1966-08-01'),
(34, '1966-08-01'),
(37, '1966-08-01'),
(39, '1966-08-01'),
(40, '1966-08-01'),
(41, '1966-08-01'),
(43, '1966-08-01'),
(44, '1966-08-01'),
(50, '1966-08-01'),
(55, '1966-08-01'),
(57, '1966-08-01'),
(58, '1966-08-01'),
(62, '1966-08-01'),
(70, '1966-08-01');

и именно так "1966-08-01" а для заказчика в "ответе" показывай как хочешь.
...
Рейтинг: 0 / 0
Как отсортировать 1 миллиард записей?
    #40038209
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
теперь самое главное - генерация комбинаций 10 из 20
должно получиться 20!/((20-10)!*10!)=184 756 вариантов (выше уже упоминали)


на SQL, все "влоб", ИЗЫСКИ не для нас
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
SELECT  * FROM 
(SELECT l.n AS id1 FROM loto10 l WHERE l.ddt='1966-08-01') AS t1 
JOIN 
(SELECT l.n AS id2 FROM loto10 l WHERE l.ddt='1966-08-01') AS t2 
JOIN 
(SELECT l.n AS id3 FROM loto10 l WHERE l.ddt='1966-08-01') AS t3 
JOIN 
(SELECT l.n AS id4 FROM loto10 l WHERE l.ddt='1966-08-01') AS t4 
JOIN 
(SELECT l.n AS id5 FROM loto10 l WHERE l.ddt='1966-08-01') AS t5 
JOIN
(SELECT l.n AS id6 FROM loto10 l WHERE l.ddt='1966-08-01') AS t6 
JOIN 
(SELECT l.n AS id7 FROM loto10 l WHERE l.ddt='1966-08-01') AS t7 
JOIN 
(SELECT l.n AS id8 FROM loto10 l WHERE l.ddt='1966-08-01') AS t8
JOIN 
(SELECT l.n AS id9 FROM loto10 l WHERE l.ddt='1966-08-01') AS t9
JOIN 
(SELECT l.n AS id10 FROM loto10 l WHERE l.ddt='1966-08-01') AS t10

WHERE t1.id1<t2.id2 AND id2<id3 AND id3<id4 AND id4<id5 AND t5.id5<t6.id6
AND id6<id7 AND id7<id8 
 AND id8<id9 AND id9<id10
;

тут уж верь не верь - получилось...184756
кстати innodb_buffer_pool_size лучше поставить >1G

это лишь пример для строки 1. но я так вижу что первая строка в комбинациях нам не нужна
теперь надо отработать "механику телодвижений" - что и зачем (в какой последовательности) делаем.
...
Рейтинг: 0 / 0
Как отсортировать 1 миллиард записей?
    #40038212
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinov,

И откуда только 200 тысяч? Вы ведь говорили что всё просто.
...
Рейтинг: 0 / 0
Как отсортировать 1 миллиард записей?
    #40038214
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miltorg,
это не решение, это вариант построения комбинаций 10 чисел из 20
я говорил что все просто в вашем методе? запямотовал...
как сделать просто - выше все показано.

это по вашему пути идем (циклы, "массивы")
да, и что здесь сложного?
184756 - наука комбинаторика 10 из 20, заметьте - это только для одной "строки 20 чисел", т.е. для 1-го дня
для каждой новой "строки чисел" будем строить всевозможные 10-ки и сравнивать с уже имеющимися "строками 20-ти чисел " на вхождение.
1. Вариант держать 184тыщ для каждого дня я думаю не подходит, хотя решение "влоб" - самое простое - именно такое. накопленную вариационную таблицу за 5000 тыс дней (х184тыщ=) джойним с таблицей нового 5001 дня 184тыщ на совпадения и кладем машину в вечный сон
2. поэтому второй вариант -итерационный - первый день записали строку 1
второй день - построили 184тыщ комбинаций и проверили на вхождение в 1-ю строку, результат скинули в накопительную табличку
3 день - построили 184тыщ комбинаций и проверили на вхождение в 1-ю и 2 строку , результат скинули в накопительную табличку, обработали варианты вхождений
......
5001 день - построили 184тыщ комбинаций нового дня и проверили вхождение в 5000 "строк из 20 чисел" (Ура! вот он МИЛЛИАРД! 5тыщ Х 184тыщ) результат скинули в накопительную табличку, обработали варианты вхождений

какой выберем способ?)
мне кажется все просто,
хотя у меня бессоница, я мог напутать насчет простоты и в циферках
...
Рейтинг: 0 / 0
Как отсортировать 1 миллиард записей?
    #40038216
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_Ustinov,

Прошло полмесяца, а он всё никак не выберет способ решения для "простенькой задачи"
...
Рейтинг: 0 / 0
Как отсортировать 1 миллиард записей?
    #40038219
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miltorg,

прошла неделя, или вы уже по чесноку полмесяца решаете-проверяете?
Прискорбно...
...
Рейтинг: 0 / 0
Как отсортировать 1 миллиард записей?
    #40038304
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arhat109
Я с вас фигею господа. Вам реально больше не чем заняться?

Дело было в пятницу. Что бы и не решить ПТУшную лабу. Он две недели уже пыжится, давит из себя, сервак насилует своим говнокодом. Жалко смотреть.

Arhat109
Вы тогда и нам на фирму пару запросов пооптимизируете, а то отчетик как-то долго готовиться начал .. минут 10.

Так скидывай, может что кто и подскажет дельного.
...
Рейтинг: 0 / 0
Как отсортировать 1 миллиард записей?
    #40038335
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miltorg,

Вот так, легко и не принужденно, делается нормализированный словарь вместо выхлопа говна, который хочет твой заказчик. Из размера набор дат сам посчитаешь своё cnt, я понятие не имею, какое тебе надо.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
var numSort = (a,b)=>a-b;
var hash = {}
res.forEach(v=>{
    combine(v.join).forEach(c=>{
        c.sort(numSort);
        var seq = c.join(" ");
        var rec = hash[seq];
        if (!rec) rec = hash[seq] = { seq : c, dates : new Set() }
        rec.dates.add(v.set1.date);
        rec.dates.add(v.set2.date);
    });
});



Но суть не в этом.
Я сгенерил эти твои 5к записей и сей, не слишком хороший, код отработал за 18 секунд на затычке
Код: sql
1.
Celeron(R) Dual-Core CPU       T3500  @ 2.10GHz


сожрав всего 70 мб памяти.
...
Рейтинг: 0 / 0
Как отсортировать 1 миллиард записей?
    #40038337
Фотография miltorg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster,

Где то на 4 странице я написал что задача полностью решена - но человек никак не может успокоиться.

Код ваш не смотрел. Потому что начиная с 4 страницы я прошу только решения-ответ в виде который требует заказчик.
...
Рейтинг: 0 / 0
Как отсортировать 1 миллиард записей?
    #40038839
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Модератор: Мне кажется, что топик себя исчерпал. Чищу и закрываю.

crutchmaster и miltorg получают предупреждения.

Если что-то или кого-то пропустил - сообщайте мне, пожалуйста.
...
Рейтинг: 0 / 0
11 сообщений из 336, страница 14 из 14
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Как отсортировать 1 миллиард записей?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]