Социальная сеть ВКонтакте выложила на Github часть своих разработок, которые могут быть использованы в других проектах. Особенно - в стартапах.
Их краткое описание выложено в блоге ВКонтакте на "Хабрахабре", любому разработчику и человеку отвечающему за создание веб-сервисов Roem.ru рекомендует походить по ссылкам и вдумчиво почитать описание предлагаемых движков. Например, там есть не только поиск, но и прекрасные библиотеки для рекомендаций, хранения данных и так далее.
Гуманитариям будет тяжело понять о чём речь: "Поскольку гиперболический тангенс биективно отображает все вещественные числа на открытый интервал (-1,1), это доказывает ассоциативность и коммутативность операции #, а также показывает, каким образом можно быстро вычислять многократное применение такой операции с одним и тем же "инкрементом" y"
Объём выкладки ранее недоступного кода уже породил интересные предположения о будущем ВКонтакте:
Публикация работ программистов в open source теоретически позволяет бывшим сотрудникам ВКонтакте использовать код в других проектах. Впрочем, компетентные источники считают, что объём выложенных разработок невелик, предлагаемые движки неспецифичны для ВКонтакте, а бОльшая часть кода ВКонтакте едва ли когда-нибудь будет опубликована.
Андрей Мима, бывший сотрудник ВКонтакте, назвал выложенное "технологиями будущего":
Олег Илларионов, подготовивший публикацию на "Хабрахабре", отметил, что это "большой вклад в Open Source"
а Андрей Рогозов - "уникальными серверными технологиями ВКонтакте":
В заключении Олег Илларионов сравнил закоммиченный код с технологиями MySQL, nginx, memcached и PHP:
Добавить 11 комментариев
Я, всё-таки, положу сюда описание выложенного: PMemcached (“Persistent Memcached”) Надежное key-value хранилище, позволяющее хранить данные без ограничения по времени. По протоколу MC движок работает идентично Memcache, за исключением того, что после перезагрузки все данные остаются. Помимо своих основных функций, при включении соответствующей опции в конфигурации pmemcached позволяет получать сразу группы записей, у которых префикс ключа соответствует заданному в запросе. Lists Данный движок позволяет хранить и получать различные списки данных. Одна копия движка может хранить набор списков. Каждый список должен иметь идентификатор (int), по которому с этим списком можно работать. В каждом списке может быть неограниченное количество элементов. Каждый элемент также должен иметь идентификатор (int), значение (int), флаг (int) и может хранить произвольные 256 символов текста. Кроме получения списков есть возможность получать подсписки, фильтруя по флагам и сортируя по значениям. Документация: github.com/vk-com/kphp-kdb/blob/master/docs/ru/KittenDB_Lists.wiki Lists-X Модификация движка Lists, позволяющая использовать ключи и идентификаторы записей, состоящие не из одного числа (int), a из заранее заданного в конфигурации движка количества чисел (int). Например, это позволяет создавать списки, ключ которых формируется из идентификатора пользователя и идентификатора записи на его стене. Документация: github.com/vk-com/kphp-kdb/blob/master/docs/ru/KittenDB_Lists-X.wiki Search Предназначен для поиска данных на сайте. Любая текстовая информация может быть проиндексирована в движке с определенным идентификатором, и впоследствии найдена по словам в тексте. В результатах поиска будут возвращены идентификаторы, указанные при индексировании. Search поддерживает произвольные параметры для поиска по критериям, и специальные параметры для различных сортировок. Также движок позволяет осуществлять сложные группировки и пересечения. Документация: github.com/vk-com/kphp-kdb/blob/master/docs/ru/KittenDB_Search.wiki Storage Движок создан для хранения пользовательских данных — фото, видео, аудио, документы. Благодаря хранению различного контента в одном файле и индексированию в памяти смещений, Storage справляется с этой задачей лучше, чем при использовании классического подхода с хранением отдельных файлов в файловой системе. Документация: github.com/vk-com/kphp-kdb/blob/master/docs/ru/KittenDB_Storage.wiki Texts Движок Texts позволяет хранить различные текстовые массивы данных. Изначально он был разработан для системы личных сообщений ВКонтакте, но позднее был переиспользован для стен и для комментариев. Помимо хранения текстов движок поддерживает различные группировки списков с текстами и поиск по текстам. Благодаря нему доступен моментальный поиск по всей личной переписке пользователя, сколь большой бы она не была. Также в этот движок встроен HTTP сервер, реализующий long poll для получения обновлений с клиентской стороны. Однако позже для этой цели был создан отдельный движок queue, о котором написано ниже. Документация: github.com/vk-com/kphp-kdb/blob/master/docs/ru/KittenDB_Texts.wiki Hints Hints решает две важные задачи: 1) Предназначен для поиска объектов пользователя по префиксам слов, используется при быстром поиске на сайте. 2) Позволяет формировать рейтинги объектов, с помощью которых можно упорядочивать списки объектов по степени интереса к ним у пользователя. Например, таким образом работает список друзей ВКонтакте. Документация: github.com/vk-com/kphp-kdb/blob/master/docs/ru/KittenDB_Hints.wiki Queue Queue позволяет организовывать общение клиентской и серверной сторон в реальном времени. Клиент подключается к назначенном ему Queue серверу и получает от него обновления, а сервер может в любой момент передать клиенту соответствующее событие. Благодаря использованию каналов, на которые клиент может подписаться при подключении к Queue, движок может использоваться для передачи данных один ко многим, например, когда у пользователя открыта страница новостей, он подписывается в queue на события всех своих друзей, групп и подписок. Когда кто-либо из этого списка публикует запись, он также записывает ее в соответствующую queue-подписку, и каждый подписанный пользователь получает информацию об этом на клиенте, после чего последний может отобразить полученные данные. Документация: github.com/vk-com/kphp-kdb/blob/master/docs/ru/KittenDB_Queue.wiki Кроме перечисленных, Вы можете найти в репозитории ряд других, не столь универсальных, но не менее интересных инструментов, документацию к которым вы найдете здесь.
Ждём конкурса «собрать несложную соцсеть из Open Source компонент»!
Извините ребята, но без активного сообщества весь этот код — мёртвый груз.
Что было раньше: сообщество или технология?
олимпиадники вобщем и машина времени
Ждем комментарий от UCP в духе: «С подачи директора организация выложила в сеть исходные тексты алгоритмов, которые составляют конкурентное преимущество VK»?
Читаю про Сторадж, а вспоминаю рассказы про упаковку данных поисковика Рамблера…
«любому разработчику и человеку отвечающему за создание веб-сервисов Roem.ru» Пардон, но пары бы запятушек не помешало. Спросонья не вник и подумал, что роем сам себе советует
Бегло пробежался глазами по базе кода. По слову test всего 77 вхождений. По началу комментария «/*» — около 700, но на вид вроде заголовки файлов, в основном. По «//» — нет вообще. Так что это может быть и тонким намеком: хрен вы что без нас тут поймете.
@Андрей Test? А почему не assert, или, скажем, expect или should?
Если будете пользовать движок Storage, то знайте что там есть косяк. Метод storage.get возвращает пустую строку если поместить в нее символ 0 (ноль) То есть если поместить в переменную строку ‘0’, то storage.get возвратит пустую строку буд-то переменной не существует. Будьте осторожны при хранении индексов массива особенно.