Adamos, давай английское пари. Спорим на бутылку Виски что я загружу туда 150 млн поисковых ответов. И мне не нужен будет вычислительный кластер. Достаточно моего AMD/Ryzen с 16Гб памяти.
Dp00qer, нужно эмулировать действия браузера. Тоесть если сервер вернул redirect - то отработать его. Если сервер вернул html с JavaScript - то выполнить все скрипты.
Я еще не встречал ни одного экземпляра софта который бы на 100% воспроизводил-бы поведение браузера. Тоесть твою задачу можно решить в каких-то частных случаях (допустим что нет капчи).
Тогда вот такой алгоритм.
1) Строим справочнк доменов (domains_dict). Нумеруем их от 1 до 10 000 000.
2) Строим квадратную матрицу 10 на 10 миллионов счетчиков. Каждый счетчик означает - количество встреч двух доменов в одном поиске. Изначально матрица инициализирована нулями.
3) Процессим исходную таблицу (назовем ее domains_search). Ну и на каждую строку соотв - наращиваем счетчики на +1 на пересечениях. Симметрично. К примеру для (38, 9) ячейки тоже будет увеличена (9, 38).
Матрица выглядит толстой. Но это не страшно. Она - разрежённая. В основном состоит из пустоты. Домены обычно группируются по предметной области. Для таких дырявых матриц есть алгоритмы сжатого хранения. Compressed sparse row (CSR). Библиотек - полно. Любая математическая либа всегда тащит в себе такую матричку.
Ну и для количества встреч - просто берем нужную строку и вуаля. Ответ готов.
Альтернативный алгоритм - на графовой БД. Просто так мне хотелось. Чистая эстетика. Хотя оба варианта рабочие. В графах вершинами будут домены. А на рёбрах будут счетчики встреч. Граф удобен тем что его можно визуализировать и нарисовать скопления доменов.
EVGENIJ NEFEDOV, мне кажется что вашу бизнес-задачу нужно еще грумить. Что-то в ней... сырое. Ну тоесть вы ее поставили с точки зрения user story. Но нужен хороший техно-писатель который задаст вам больше вопросов и перепишет ее более техничным языком. Без этих уродских таблиц на 50 колонок. Которые по сути - денормализация.
По сути есть датасет. Учитывая объемы - это бигдата. И надо сделать какой-то глубокий анализ.
EVGENIJ NEFEDOV, кидайте ссылку. Но она будет адресована не лично мне а всему сообществу qna.habr. Не обещаю что я буду что-то там скачивать и изучать.
RabbitMQ/Kafka - это асинхронный вызов методов без обратной связи. Не для всякого бизнеса он подходит. И его надо обсуждать не в данном топике. По крайней мере где VPN и сети - никто не обсуждает следующие два уровня где надо уже говорить о транзакциях, кодах ошибок и о различного уровня гарантиях.
Кирилл Гусарев, Amazon и Microsoft дают 1 или 2 месяца бесплатно для облачного акаунта. Подними себе 1 EC2 instance и запускай на нем свой волшебный API.
С точки зрения управления конечно надо запускать там где идет команда. Но мне кажется rsync - чуть более хитрая утилита чем кажется. У меня вот были сильные деградации скорости копирования архивов когда я копировал на USB 3.0 и на eSATA(карман). И мне кажется что дело тут было в проверке контрольных сумм. Как-то во 2 случае они шли быстрее.
Искренне хохотал. В целом батя прав вобщем-то. Открытие портов - больше потенциальных возможностей. Возможно сценарий такой. Злобный Анонимос или Неткиллер рутает твой дырявый Манйкрафт-сервер и уже зайдя туда начинает осматриваться внутри сети - и оттуда видит соседние хосты в том числе и драгоценные батины карточки, и прочие логины-пароли к порно-сайтам. :)
У них будет два разных сетевых адреса. И никакого load-balancing не будет. С точки зрения внешнего наблюдателя - это два разных хоста (компьютера или домена). С внутренней точки зрения - надо наверное смотреть таблицу маршрутизации. Там явно прописано куда пойдет трафик.
Олег Андреев, ты знаешь, есть люди которые убедили себя в том что Земля - плоская. Вот так они и живут. Ты тоже можешь жить с убеждением что компиллятор сломал каким-то образом фундаментальный тип данных, который стандартизирован до последнего битика и до последней операции. Я дал тебе онлайн калькулятор чтобы ты убедился что дефект присвоения работает при конверсии из десятичной системы в двоичную. И с этим надо смириться и жить дальше. Double/Float так работает. Ему нельзя присвоить произвольное десятичное число. А дальнейшие твои вопросы про вычитание - это уже просто следствие. И говорить о нем уже поздно. Это случилось. Поэтому оставь в покое компиллятор. Читай стандарт который регулирует работу с научными типами данных. Ты - кстати не первый новичек который погорел на вещественных вычислениях.