Цепочка общих друзей в ВК

Discussion in 'Социальные сети' started by alarm, 19 Mar 2013.

  1. alarm

    alarm New Member

    Joined:
    4 Nov 2011
    Messages:
    20
    Likes Received:
    4
    Reputations:
    0
    Предположим, необходимо выяснить цепочку общих на друзей от idxxxxxxx до idyyyyyyy. Учитывая, что ВК содержит ~ 140 млн. учетных записей и приблизительно по 100 друзей на каждом аккаунте, то выйдет порядка 14 млрд связей. Такая база займет с учетом сохранения параметров user_id/friend_id порядка 200 Гб дискового пространства, не считая времени затраченного на сбор самой базы.
    Дальше, когда база получена можно приступить к поиску взаимосвязей. Но тут нам потребуется строить матрицу 140.000.000х140.000.000 пользователей (связи всех со всеми). Для такой базы потребуется примерно 10к жестких дисков, по 2 Тб. Такое вообще не годится.
    Какой вариант будет более-менее подходить для пользовательских мощностей, не прибегая к технике с приставкой "супер"?
     
  2. SwordMaster

    SwordMaster Banned

    Joined:
    12 Aug 2009
    Messages:
    98
    Likes Received:
    9
    Reputations:
    0

    Я в шоке,это или не чего делать,или жить стало скучно,дядьки я бы хотел на это посмотреть !

    Тут по 109 друзьям узнаешь кто с их друзей в чс добавил уже затраты,а там будет не что .
     
    #2 SwordMaster, 19 Mar 2013
    Last edited: 19 Mar 2013
  3. alarm

    alarm New Member

    Joined:
    4 Nov 2011
    Messages:
    20
    Likes Received:
    4
    Reputations:
    0
    Ну почему? Буль такой сервис можно было бы из него много чего выжать, и не только в денежном отношении. Для социальных исследований, например.
     
  4. Jingo Bo

    Jingo Bo Member

    Joined:
    25 Oct 2009
    Messages:
    368
    Likes Received:
    51
    Reputations:
    7
    Ну по крайней мере, если парсить будет по два юзера в секунду, то выходит около двух лет будет идти загрузка.
     
  5. VKtraf

    VKtraf Member

    Joined:
    3 Feb 2012
    Messages:
    55
    Likes Received:
    10
    Reputations:
    5
    Может облако?
    На распределенном кластере с общим виртуальным местом и вычислительной мощностью.
     
  6. Shogo

    Shogo New Member

    Joined:
    20 May 2010
    Messages:
    4
    Likes Received:
    1
    Reputations:
    0
    А смысл всех парсить? Брать просто два профиля, парсятся только их друзья, и проверяются на общие, потом друзья тех друзей, и так далее. Думаю таких промежутков не будет более 3-4х можно даже ради прикола заказать такую софтину, думаю за пару штук её напишут.
     
  7. Дедушка

    Дедушка Active Member

    Joined:
    3 Sep 2009
    Messages:
    0
    Likes Received:
    120
    Reputations:
    11
    ТС, не усложняйте жизнь.
    Организуйте онлайн парсинг друзей, определенных ID и будет Вам счастье.
     
  8. trolex

    trolex Well-Known Member

    Joined:
    6 Dec 2009
    Messages:
    592
    Likes Received:
    1,392
    Reputations:
    6
    как собираешься монитизировать? какие социальные исследования?

    была у меня идея сделать такое приложение, но потом увидел что такое уже существует
    http://vk.com/fchain
    правда сейчас почему то не работает, возможно сервер они отключили, за неуплату к примеру, но работало когда то, пробовал

    для поиска все варианты перебирать необязательно, оптимизаций можно придумать множество, первое что на ум приходит
    большинство людей в вк будут связаны через людей у которых по 1000-10000 друзей, так что нужно создать базу таких людей, необязательно всех даже брать, можно часть, найти у каждой пары общих друзей, возможно и друзей друзей, а дальше когда нужно выполнить поиск чтобы найти цепочку между 2 ид, искать путь от первого до одного из этих много тысячников, и от второго до много тысячников, скорее всего там путь через одного друга, то есть в друзьях друзей есть такой многотысячник, искать тоже можно на первом шаге у всех друзей, а на втором брать у друзей друзей к примеру по 5 друзей имеющих максимальное количество друзей, так быстрей,

    можно использовать то что у людей из одного города чаще всего в друзьях люди из этого города, в рамках города связи довольно короткие, в качестве едра из первого примера использовать не многотысячников, а людей у которых много друзей и в городе А и в городе Б, так бывает когда человек переезжает из одного города в другой, для каждой пары город-город найти таких людей, и уже для 2 искомых ид искать для каждого выход внутри города на одного из них

    и ещё если нужно найти общих друзей у 2 человек у которых по 10 000 друзей, то необязательно перебирать все варианты 10 000 х 10 000 = 100 000 000 то есть 100 лямов, можно каждый список разбить на 10 списков в зависимости от последней цифры ид, ид кончающиеся на 1 в первом списке, на 2 во втором и тд. для этого нужен 1 проход списка, сделать его для обоих, и искать общих сравнивая ид кончающиеся на 0 у первого с таким же списком у второго, получается 1000*1000*10=10 000 000 уже 10 лямов, а если разбить на списки в зависимости от двух последних цифр ид, то получится 100 списков, количество вариантов перебора 100*100*100= 1 000 000 уже 1 лям, и так можно перебор сокращать ещё сильно

    много оптимизаций можно придумать, писал по ходу мыслей, так что наверное всё путано получилось, но если думал над этой проблемой то скорее всего поймеш о чём я
     
  9. trolex

    trolex Well-Known Member

    Joined:
    6 Dec 2009
    Messages:
    592
    Likes Received:
    1,392
    Reputations:
    6
    да с парсингом ещё не такие огромные проблемы, вот найти все варианты вот это нереальная задача
    можно накупить серверов по 5$, там 100мб канал,
    или взять 1 гигабит, видел по 100-200 баксов, даже по 50 баксов видел,
    чтобы за месяц спарсить нужно парсить по 200млн/30/24/60/60=70 страниц в секунду, незнаю какие там скоростя на гигабитном канале, но если запустить 1000 потоков и каждый будет парсить 1 анкету за 14 сек, то получим 70 анкет в секунду,
    по трафику ограничение там в 100 тб, засёк страница со 100 друзьями без картинок весит 50кб, умножаем на 200 млн = 10 тб, тоже влезаем,
    будет бан ип скорее всего при таком парсинге, видел некоторые вдс продают по баксу ип до 256 ип, на 1 ип приходится 18 запросов в минуту, вполне нормально,
    альтернатива покупка безлимитных авм проксей за 200 баксов (если за них вк не банит), 30000 онлайн (иностранные, поэтому акки брать в виде тел номера), там вообще с запасом нагрузка,
    наверное самое трудное найти поставщика акков которые будут нормально жить, если все запросы разделить на 1000 акков, то получится по 4 запроса с акка в минуту, в течении месяца непрерывно, не думаю что за это должны банить, если чередовать активность с акков, просмотр видеороликов с акка больше канал грузит чем это,
    но скорее всего такого селлера не найти, вариант активировать самому через сервис активации, но это 10000 руб. можно попробовать сократить количество акков в несколько раз,
    есть ещё варинт брать много мелких впс по 100 мбит, по 5 баксов (или бесплатно) и пробовать без прокси,
    итого в самом оптимистичном варианте
    100$ сервер + 250$ прокси/ип + 200$ акки (авторег)=550$
    но сумма может и увеличится в пару раз,
    а может и наоборот, если на 100 мбит серве поставить парсинг, и использовать до 350 потоков авм за 100 баксов в месяц, то цена уже падает на 200 баксов, вообщем я не в курсе какой канал сколько подобных потоков может держать,
    в любом случае это уже не 10к жестких дисков
    базу в таком виде хранить смысла нет, если у тебя 1 или 0 - друг или не друг, у тебя в строчке будет 100 единиц, и 199 999 900 нулей, то есть архивации никакой, все жёсткие диски нулями забьешь :D
    проще для каждого ид хранить список друзей, притом не в виде символов, из 256 значений будешь использовать только 10, а в виде числа, тогда 260 млн помещается в 3.5 байта, а 100 друзей, в 350 байтов, умножаем на 200 млн, итого 70 гигов, это и на ссд влезет,
    а вот если найти цепочки от каждого к каждому то действительно места не хватит для хранения, цепочка из 6 друзей весит 6*3.5~20 байтов, 200 млн на 200 млн на 20 байтов 800 000 терабайтов, 400 000 двухтерабайтных дисков, по 100 баксов за штуку 40 млн баксов :D
    я уж не буду считать сколько займет вычисление, мне кажется оно будет на порядки дороже хранения,
    возможно что и неосуществимо силами всего человечества,
    так что выход только один считать на ходу
     
    #9 trolex, 19 Mar 2013
    Last edited: 19 Mar 2013
  10. imreadyourmind

    imreadyourmind New Member

    Joined:
    23 Feb 2010
    Messages:
    38
    Likes Received:
    4
    Reputations:
    5
    на хабре была статья про сайт-сервис, который составляет цепочки людей от одного юзера до другого, целые карты создает.
     
  11. alarm

    alarm New Member

    Joined:
    4 Nov 2011
    Messages:
    20
    Likes Received:
    4
    Reputations:
    0
    Если возможно, дай ссылку на статью.
     
  12. trolex

    trolex Well-Known Member

    Joined:
    6 Dec 2009
    Messages:
    592
    Likes Received:
    1,392
    Reputations:
    6
    http://habrahabr.ru/post/132558/
     
  13. kokoulin

    kokoulin Member

    Joined:
    8 Jan 2011
    Messages:
    65
    Likes Received:
    5
    Reputations:
    5
    человек, иди в институт, там тебе расскажут как это сделать незатратно, быстро, и оптимизировано, курсу к 3-4ому, только в нормльный ВУЗ
    в москве:
    (МИФИ (КиБ факультет), МГУ (ВМК), МФТИ (непомню кафедру), Синергия если бобла много (кафедра интернета))
    В спб СПбГУ
    Потом будешь просить пощадить :)
     
  14. trolex

    trolex Well-Known Member

    Joined:
    6 Dec 2009
    Messages:
    592
    Likes Received:
    1,392
    Reputations:
    6
    а баумана уже не котируется?
    а не здесь немного про другое
     
  15. fle4va26

    fle4va26 New Member

    Joined:
    13 Mar 2013
    Messages:
    2
    Likes Received:
    0
    Reputations:
    0
    Записная книжка полезных связей ваших друзей
    http://vk.com/takepin
    http://takepin.com/
     
Loading...