Как стать автором
Обновить
  • по релевантности
  • по времени
  • по рейтингу

Обзор NoSQL систем

NoSQL
Беспрецедентные объемы данных заставляют разработчиков и бизнес приглядываться к альтернативам реляционных баз данных, используемым вот уже более тридцати лет. В совокупности все эти технологии известны как «NoSQL базы данных».


Основной проблемой является то, что реляционные базы данных не могут справляться с нагрузками актуальными в наше время (мы говорим о high-load проектах). Есть три конкретные проблемных области:
  • горизонтальное масштабирование при больших объемах данных, например как в случае Digg (3 терабайта для зеленых значков, отображаемых, если ваш друг сделал dugg на статье) или Facebook (50 терабайт для поиска по входящим сообщениям) или eBay (2 петабайта в целом)
  • производительность каждого отдельного сервера
  • не гибкий дизайн логической структуры.
Читать дальше →
Всего голосов 101: ↑98 и ↓3 +95
Просмотры49.8K
Комментарии 67

Графовая база данных Neo4j в PHP

PHPNoSQLMongoDB
Из песочницы
В последнее время я все чаще слышу о NoSQL и о графовых базах данных в частности. Но воспользовавшись хабропоиском с удивлением обнаружил, что статей на эту тему не так и много, а по запросу «Neo4j», так вообще 4 результата, где косвенно упоминается это название в тексте статей.

Что такое Neo4j?


image
Neo4j — это высокопроизводительная, NoSQL база данных основанная на принципе графов. В ней нет такого понятия как таблицы со строго заданными полями, она оперирует гибкой структурой в виде нод и связей между ними.

Как я докатился до этого?


Уже более года я не использовал в своих проектах SQL, с того времени, как попробовал документо-ориентированную СУБД "MongoDB". После MySQL моей радости не было предела, как все просто и удобно можно делать в MongoDB. За год, в нашей студии создания сайтов, переписали тройку CMS, использующих основные фишки Mongo c её документами, и с десяток сайтов работающих на их основе. Всё было хорошо, и я уже начал забывать, что такое писать запросы в полсотни строк на каждое действие с БД и все бы ничего пока на мою голову не свалился проект с кучей отношений, которые ну никак не укладывались в документы. Возвращаться к SQL очень не хотелось, и пару дней я потратил чисто на поиск NoSQL решения, позволяющего делать гибкие связи — на графовые СУБД. И по ряду причин мой выбор остановился на Neo4j, одна из главных причин — это то, что мой движок был написан на PHP, а для неё был написан хороший драйвер "Neo4jPHP", который охватывает почти 100% REST-интерфейса, предоставляющегося сервером Noe4j.
Читать дальше →
Всего голосов 64: ↑63 и ↓1 +62
Просмотры55K
Комментарии 45

Начинаем работать с графовой базой данных Neo4j

PHP
Из песочницы
В нашем проекте возникла следующая задача — есть база с большим количеством товаров, на уровне сотен тысяч. У каждого товара есть сотни динамически создаваемых характеристик. Необходимо обеспечить быструю фильтрацию по товарам по набору различных характеристик. Время формирования ответа должно быть не более 0.3 секунды, нужно поддерживать сложную логику в стиле.

(характеристика1 = true AND (характеристика2 < 100)) OR (характеристика1 = false AND (характеристика3 > 17)) ... далее обычно мешанина из AND\OR


Типичный пример подобного функционала — hotline.ua/computer/myshi-klaviatury

Пример функционала

У нас все реализовано в рамках MySQL + Symfony2/Doctrine, скорость неудовлетворительная — ответы формируются в течении 1-10 секунд. Мои попытки оптимизировать все это хозяйство — под катом.
Читать дальше →
Всего голосов 36: ↑30 и ↓6 +24
Просмотры73.4K
Комментарии 45

Как мы дружили Neo4j и Meteor

JavaScriptNoSQLNode.JSMeteor.JS
Из песочницы

Пишем драйвер поддержки графовой базы данных Neo4j для Meteor


В Meteor любая работа с даными связана с двусторонней реактивностью. На данный момент 100% реактивностью обладают встроенная в Meteor MongoDB и Redis (оба драйвера разработаны в стенах Meteor), частично реактивность реализована для MySQL и MSSQL (сторонними разработчиками).

Для вышеуказанных баз данных реактивность реализована посредством observer'ов, которые сообщают где, как, когда и какие данные изменились, для того чтобы драйвер, обслуживающий связь [данные <-> представление], знал какие данные и у каких Клиентов обновить. Neo4j лишен каких-либо watcher'ов и observer'ов, но это нас не остановило. Как мы вышли из данной ситуации и зачем нам нужен Neo4j читайте под катом.
Вперед за реактивностью!
Всего голосов 11: ↑10 и ↓1 +9
Просмотры7K
Комментарии 1

Neo4j VS MySQL

MySQLNoSQL
Из песочницы

Предисловие


Будучи студентом третьего курса, я выбрал тему для курсовой роботы: «Графовые базы данных на примере Neo4j». Так как до того времени я изучал и использовал исключительно реляционные БД, мне было интересно, зачем вообще графовая БД и когда ее способности лучше применять? После просмотра множества сайтов в интернете я обнаружил только теорию и не больше. Так как теория не всегда убедительная и хотелось бы увидеть какую либо статистику, у меня разыгралось любопытство и я решил, что в своей курсовой я этим займусь, а в качестве противника Neo4j я выбрал MySQL.

Итак, кто же выиграет это противостояние?
Читать дальше →
Всего голосов 21: ↑13 и ↓8 +5
Просмотры24.2K
Комментарии 35

Красноярская конференция разработчиков Dev2Dev 2.0

MicrosoftРазработка веб-сайтовПрограммирование
Это «гостевой пост» от команды энтузиастов сообщества Dev2Dev. Я очень рад, что подобная инициатива продолжает существовать и очень хочу их поддержать, по крайней мере информационно.



Красноярск — далекий сибирский город и глухая it-провинция. Но 30 мая 2015 года нашей активности позавидуют соседи. В этот день состоится вторая конференция разработчиков программного обеспечения Dev2Dev, версия 2.0. Конференцию организует молодое одноименное it-сообщество, объединяющее спецов отрасли из компаний города. Нам менее года, но мы растем. С самого начала мы работали для того, чтобы в Красноярске наконец появилась круто сваренное местное событие с большой активной аудиторией и заезжими докладами.

Концепция событий сообщества Dev2Dev проста: свободный вход, качественный контент и много общения для участников и спикеров. Событие — это в первую очередь фан, знакомства и накачка энергией. Сильные доклады и интересные спикеры делают это возможным, но само событие создают участники. 30 мая мы ждем 200-250 человек. Новая конференция соберет доклады по enterprise разработке, функциональному программированию, проектированию, тестированию приложений, управлению проектами и командой. Докладчики едут со всей Сибири — Новосибирск, Омск, Кемерово. Специальный гость прилетит из Чикаго.
Программа события насыщенная
Всего голосов 18: ↑15 и ↓3 +12
Просмотры3.5K
Комментарии 1

Изучаем граф-ориентированную СУБД Neo4j на примере лексической базы Wordnet

PythonПрограммированиеSQLData MiningNoSQL
Tutorial
СУБД Neo4j — это NoSQL база данных, ориентированная на хранение графов. Изюминкой продукта является декларативный язык запросов Cypher.

Cypher позаимствовал ключевые слова типа WHERE, ORDER BY из SQL; синтаксис из таких разных языков как Python, Haskell, SPARQL; и в результате появился язык, позволяющий делать запросы к графам в визуальной форме наподобие ASCII art. Например, заголовок данной статьи я бы представил в виде графа (Neo4j) — [изучаем] -> (Wordnet). И это почти готовый запрос к базе данных!


Читать дальше →
Всего голосов 9: ↑8 и ↓1 +7
Просмотры20.6K
Комментарии 0

Агрегат для node.js

Разработка веб-сайтовJavaScriptПрограммированиеNode.JS
GitHub и NPM библиотеки.


какой-то неведомый агрегат, никак не связанный с node.js. Но на хабре считается хорошим тоном приложить картинку

Некоторое время назад я задумался, почему же в node.js работа с реляционными БД, такими как *SQL, и некоторыми noSQL типа Mongo, сложна, и сделал альтернативное решение, заточенное под скорость работы программиста (в сравнении с классическими решениями, заточенных под скорость работы с БД) и прямолинейность и компактность API для минимального порога вхождения. Первым источником вдохновления стал доклад "минимальная поверхность API", вторым — знаменитая цитата Дональда Крута:

Программисты тратят ненормальное количество времени, волнуясь о скорости некритичных частей приложений, и эти попытки повысить эффективность серьезно отрицательно влияют на отладку и поддержку этих приложений.  Преждевременная оптимизация есть корень всех зол.
Читать дальше →
Всего голосов 10: ↑8 и ↓2 +6
Просмотры10K
Комментарии 15

Вспомнить всё: Java-конференция JET. 25 апреля 2016. Отчёт №2

JavaKotlin
Всем привет! Не так давно мы закончили загружать видео прошедшей весной конференции, поэтому настало время поделиться очередным отчётом. В этот раз, помимо уже опробованного формата в 6 часовых сессий и 3-х потоков, площадка позволила добавить ещё один. И мы решили посвятить весь этот поток новому и на тот момент уже окрепшему языку Kotlin. Получилось очень много выступлений, все стоит посмотреть, но в повествовании остановлюсь детально лишь на нескольких.

Открытие


Как всегда, слова благодарности тем, кто нам помогал — друзьям и компаниям. Друзьям за то, что продолжают приходить и поддерживать нас. А компаниям за то, что доверяют умы своих разработчиков, не боясь получить на следующий день неожиданно большую коммит историю. И, конечно же, напутственные слова на предстоящий день. Главным посылом которых было то, что конференция, безусловно, это труд, большое вложение, но нужно не забывать об удовольствии новых встреч, новых идей и новых целей!



Читать дальше →
Всего голосов 13: ↑11 и ↓2 +9
Просмотры5.4K
Комментарии 2

Где и как врубиться в эмбеддинги графов

Open Data ScienceМашинное обучениеУправление проектамиУправление продуктомОбразование за рубежом

Привет, Хабр!


Три года назад на сайте Леонида Жукова я ткнул ссылку на курс Юре Лесковека cs224w Analysis of Networks и теперь мы будем его проходить вместе со всеми желающими в нашем уютном чате в канале #class_cs224w. Cразу же после разминки с открытым курсом машинного обучения, который начнётся через несколько дней.


image


Вопрос: Что там начитывают?
Ответ: Современную математику. Покажем на примере улучшения процесса IT-рекрутинга.


Под катом читателя ждёт история о том, как руководителя проектов дискретная математика до нейросетей довела, почему внедряющим ERP и управляющим продуктами стоит почитывать журнал Биоинформатика, как появилась и решается задача рекомендации связей, кому нужны графовые эмбеддинги и откуда взялись, а также мнение о том, как перестать бояться вопросов про деревья на собеседованиях, и чего всё это может стоить. Погнали!

Читать дальше →
Всего голосов 48: ↑42 и ↓6 +36
Просмотры24.9K
Комментарии 10

Как соединить Java, Js и графы с искусством, или история о том, как создавался интерактивный театр

ПрограммированиеJavaАнализ и проектирование системVueJSКиберпанк
В этом году в Эстонии проходит целая серия театральных представлений, объединенных в серию «История Столетия». В течение года 22 театра страны представили публике в своих спектаклях столетнюю историю Эстонии. Русскому театру Эстонии в ходе жеребьевки досталась тема будущего Эстонии.


Под катом — о том, как совместить технологию и искусство.
Читать дальше →
Всего голосов 16: ↑16 и ↓0 +16
Просмотры5.2K
Комментарии 5

Создание кастомного генератора запросов в Spring Data Neo4j (Часть 1)

Java

Начну с того, что появилась задача генерировать cypher-запросы по дата-классам на основе аннотаций @NodeEntity, @RelationshipEntity и @Relationship и дополнительных параметров. Был написан генератор запросов, однако строка запроса вычислялась в рантайме и мы не могли использовать ее в качестве параметра существующей аннотации @Query, поэтому была добавлена новая аннотация @CustomQuery, обработчик которой использовал написанный генератор запросов.

Читать дальше →
Всего голосов 5: ↑2 и ↓3 -1
Просмотры1.5K
Комментарии 0

How to Painlessly Unite Art with Java, JavaScript, and Graphs or The Story Behind Creating an Interactive Theatre Produc

ПрограммированиеJavaАнализ и проектирование системVueJSКиберпанк
Last year 2018, a theatre production series called Tale of the Century was launched in Estonia. Throughout the year, 22 local theatres presented their interpretations of the past hundred years of Estonian history to the audiences. In the draw, the Russian Theatre was assigned the topic of the future of Estonia.

Читать дальше →
Всего голосов 18: ↑17 и ↓1 +16
Просмотры992
Комментарии 2

Основы работы с Neo4j в браузере

NoSQLАдминистрирование баз данных
Tutorial

В статье рассматривается как начать работать с графовой СУБД Neo4j, используя Neo4j Browser. Это руководство может быть полезным как дополнение к книге Редмонда и Уилсона "Семь баз данных за семь недель", так как рассматриваемый веб-интерфейс был полностью переработан, а также к книге "Графовые базы данных" (Робинсон, Вебер, Эифрем), так как в ней этот вопрос вообще не рассматривается. Статья рассчитана на приступающих к изучению Neo4j. Те, кто уже знаком с этой СУБД, могут смело её пропустить.


Neo4j Browser: home screen

Читать дальше →
Всего голосов 12: ↑11 и ↓1 +10
Просмотры7.8K
Комментарии 3

Распределенное логирование и трассировка для микросервисов

Конференции Олега Бунина (Онтико)Высокая производительностьСистемное администрированиеАдминистрирование баз данныхХранение данных
Логирование — важная часть любого приложения. Любая система логирования проходит три основных шага эволюции. Первый — вывод на консоль, второй — запись логов в файл и появление фреймворка для структурированного логирования, и третий — распределенное логирование или сбор логов различных сервисов в единый центр.

Если логирование хорошо организовано, то позволяет понимать, что, когда и как идет не так, как задумано, и передавать нужную информацию людям, которым предстоит эти ошибки исправлять. Для системы, в которой каждую секунду отправляется 100 тысяч сообщений в 10 дата-центрах на 190 стран, а 350 инженеров каждый день что-то деплоят, система логирования особенно важна.



Иван Летенко — тимлид и разработчик в Infobip. Чтобы решить проблему централизованной обработки и трассировки логов в микросервисной архитектуре при таких огромных нагрузках, в компании пробовали различные комбинации стека ELK, Graylog, Neo4j и MongoDB. В итоге, спустя много грабель, написали свой лог-сервис на Elasticsearch, а как БД для дополнительной информации взяли PostgreSQL.

Под катом подробно, с примерами и графиками: архитектура и эволюция системы, грабли, логирование и трассировка, метрики и мониторинг, практика работы с кластерами Elasticsearch и их администрирования в условиях ограниченных ресурсов.
Читать дальше →
Всего голосов 38: ↑37 и ↓1 +36
Просмотры12.4K
Комментарии 3

Введение в язык запросов Cypher

NoSQL
Tutorial

Язык запросов Cypher изначально разработан специально для графовой СУБД Neo4j. Целью Cypher является предоставить человеко-читаемый язык запросов к графовым базам данных похожий на SQL. На сегодня Cypher поддерживается несколькими графовыми СУБД. Для стандартизации Cypher была создана организация openCypher.


Основы работы с СУБД Neo4j описаны в статье Основы работы с Neo4j в браузере.


Для знакомства с Cypher рассмотрим пример генеалогического дерева заимствованный из классического учебника по Прологу за авторством И. Братко. На этом примере будет показано как добавлять узлы и связи в граф, как им назначать метки и атрибуты и как задавать вопросы.


Генеалогическое дерево в Neo4j, отредактированный вид

Читать дальше →
Всего голосов 13: ↑12 и ↓1 +11
Просмотры6.1K
Комментарии 16

Как визуализировать граф Spring Integration с помощью Neo4j?

JavaNoSQL
Tutorial


Фреймворк Spring Integration умеет отдавать текущее состояние всех EIP-компонентов и их связей в виде JSON-графа. Это кажется очень удобным для изучения и отладки, но увы, ни один из нагугливаемых инструментов (коих всего-то раз /два) не даёт достаточной гибкости для визуализации и анализа такого графа. В этой статье я покажу, как решить эту проблему путем импорта графа в графовую СУБД Neo4j, где такая гибкость стоит на первом месте.

Читать дальше →
Всего голосов 12: ↑11 и ↓1 +10
Просмотры2.7K
Комментарии 0

Трассировка сервисов в мобильной транспортной сети. Как мы пришли к графовой БД Neo4j

АлгоритмыNoSQLСотовая связь
Из песочницы

Часть 1. Начало


1.1 Введение и постановка задачи


В компании МТС мы централизованно занимаемся контролем качества сетей передачи данных или, проще – транспортной сети (не путать с логистической транспортной сетью), далее по тексту – ТС. И, в рамках нашей деятельности, нам постоянно приходиться решать две основные задачи:

  1. Обнаружена деградация клиентских (по отношению к ТС) сервисов – нужно определить путь их проключения через ТС, и выяснить, является ли причиной деградации сервисов какой-либо участок ТС. Далее, будем называть это Прямой задачей.
  2. Обнаружена деградация качества транспортного канала или последовательности каналов – нужно определить, какие сервисы зависят от данного канала/каналов, чтобы определить влияние. Далее, будем называть это Обратной задачей.

Под сервисами ТС понимается любое проключение клиентского оборудования. Это могут базовые станции (БС), В2В клиенты (использующие ТС МТС для организации доступа в сеть Интернет и/или наложенных сетей VPN), клиенты фиксированного доступа (т.н. ШПД), и т.д. и т.п.

В нашем распоряжении – две централизованные информационные системы:
Система Performance Monitoring Данные о параметрах и топологии сети
Метрики, КПЭ ТС Параметры конфигурации, L2/L3 каналы

Любая транспортная сеть по своей сути является ориентированным графом $G=(V,E)$, в котором каждое ребро $(u,v) in E$ имеет неотрицательную пропускную способность. Потому с самого начала поиск решения указанных задач выполнялся в рамках теории графов.

Сначала вопрос сопоставления показателей качества ТС и сервисов – с топологией ТС решался путем буквального объединения и представления данных топологии и качества в виде сетевого графа.
Читать дальше →
Всего голосов 7: ↑6 и ↓1 +5
Просмотры1.8K
Комментарии 13

Рунета роста пост

Сетевые технологииИсследования и прогнозы в IT
Из песочницы

Так вышло, что у меня и у Рунета 7 апреля – День рождения. Ему в этом году 27, мне... чуть больше. На дне рождения часто можно услышать от "о, как вырос!!!" и "уже отца перерос" до "а ты совсем не изменился" или "каши надо больше есть".

Рунет и Интернет измерять можно по-разному. Геймеры и трейдеры измеряют в миллисекундах, стримеры – в битах/с, маркетологи – в уникальных посетителях.

Сегодня я предлагаю вашему вниманию свою оценку – в интернет-провайдерах и их связях.

Читать далее
Всего голосов 19: ↑19 и ↓0 +19
Просмотры2.1K
Комментарии 2

Анализ сети YELP с Neo4j, python

PythonData MiningАлгоритмыСоциальные сети и сообществаData Engineering
Tutorial


YELP — зарубежная сеть, которая помогает людям находить местные предприятия и услуги, основываясь на отзывах, предпочтениях и рекомендациях. В текущей статей будет проведен определенный ее анализ с использованием платформы Neo4j, относящаяся к графовым СУБД, а также язык python.

Что посмотрим:

  • как работать с Neo4j и объемными датасетами на примере YELP;
  • чем может быть полезен YELP dataset;
  • частично: какие особенности в новых версиях Neo4j и почему книга «Графовые алгоритмы» 2019 года от O'REILLY уже устарела.
Читать дальше →
Рейтинг 0
Просмотры1.1K
Комментарии 0
1