Про ArangoDB было уже несколько статей на Хабре, так что подробно расписывать, что это такое тут не буду. Скажу только, что это мультимодельная база данных (графовая и документная). Может возникнуть вопрос - "зачем" и для "каких задач" надо использовать ArangoDB по сравнению с популярными и хорошо известными реляционными или документными базами данных. И сегодня мы посмотрим, как с использованием его графовых возможностей можно решать практические задачи. ArangoDB часто используется в Финтехе - наверное, в первую очередь потому, что модель транзакций хорошо ложится на графы - ноды - это счета, транзакции - это ребра. Одна из задач, в которой используется эта база - это AntiFraud - отслеживание мошеннических действий. Для быстрого освоения ArangoDB можно использовать сервис Arango Oasis - это SaaS решение с развернутой версией ArangoDB. Первые две недели этого сервиса даются бесплатно - этого достаточно чтобы понять базовые возможности базы и принять решение - надо вам это или нет, и если надо - то развертывать бесплатную Community версию самотоятельно (благо это достаточно легко) или дальше использовать сервис ArangoDB Oasis. В рамках ArangoDB Oasis есть руководство с примерами - в частности как раз по поиску "каруселей". На самом деле, используя функции импорта-экспорта, базу этого руководства можно забрать к себе локально для дальнейшего изучения и тестирования. Что я в свое время и сделал. Итак - что такое "карусель"? Это термин, обозначающий перевод денег "по кругу". Клиент банка переводит деньгу другому клиенту, тот третьему, этот четвертому, а тот в итоге обрантно первому. Зачем? Много причин, в основном это один из механизмов "отмывания денег" - например если потом к первому клиенту придут и спросят - "а откуда у вас данная сумма" она скажет "дэдушка подарил" "клиент 4 перевел - вот и запись о транзакции" (очень утрировано, на самом деле все сложнее). С точки зрения графовов - это циклы.  Запускаем базу ArangoDB (например используя docker), ну или логинимся в базу, запущенную на ArangoDB Oasis. Открываем базу Fraud. В интерфейсе сразу видим, что у нас есть несколько вариантов работы с данными - через коллекции, через view и в виде графов. Нам конечно интересней последний вариант - открываем базу как граф. При первом открытии нам откроется какая-то часть графа (потому что база может быть очень большой, и построение графа может занять много времени) но справа-сверху есть пункт меню  который позволяет открыть всю базу. Еще один удобный момент - права же есть меню управления отображения графа - там можно указать, например, текст, который выводится для ребер (в нашем случае это transaction_amt - размер денежного перевода) Вот, теперь мы видим счета и переводы между ними.  Как видно, из коробки ArangoDB сразу дает достаточно удобный интерфейс для работы с графами, но, понятно, что "глазками" мы сможем увидеть циклы только в небольших графах. Ну и, нам все-таки надо иметь возможность делать это в автоматическим режиме. Тут на помощь к нам приходит язык запросов - AQL. Итак, следующий запрос позволяет найти все циклы в графе WITH transaction, account FOR suspicous_account IN account FOR acct, tx, path IN 5..10 OUTBOUND suspicous_account._id  GRAPH 'fraud-detection' PRUNE tx._to == suspicous_account._id FILTER tx._to == suspicous_account._id RETURN  path Данный запрос перебирает все ноды (account) и ребра между ними (transaction) и находит все пути, где мы возвращаемся к исходному account-у (suspicous_account._id), причем в нашем случае мы рассматриваем только циклы с длиной от 5 до 10 ребер. Как видно, одним, достаточно простым запросом, мы можем решить задачу, которая в обычных реляционных базах решалась бы значительно сложнее. При этом ArangoDB дает достаточно удобный интерфейс администратора для работы и с графами, и с запросами. Тот же запрос можно легко выполнить в админке, причем просмотреть результат и в виде графа так и в виде JSON Чем мне понравилась база, это в первую очередь удобством и наглядностью именно работы с графами. Конечно ArangoDB позиционирует себя как multi-model база,  но мне кажется ее возможности в основном сконцентрированы вокруг именно графов. Надеюсь, для всех, кто еще не был знаком с ArangoDB станет чуть понятней, где ее можно использовать.  Внедряю Incomand