
MongoDB *
Документо-ориентированная система управления БД
NoSQL – коротко о главном

Сергей Туленцев (TextMaster)
Меня зовут Сергей Туленцев, я уже несколько лет интересуюсь NoSQL базами данных и сегодня попытаюсь поделиться с вами знаниями и опытом.
Кому будет полезен этот доклад? Это обзорный доклад с претензией на структурированность. Если вы что-то где-то когда-то слышали про NoSQL, то через 40 минут вы будете знать гораздо больше, вы будете легче ориентироваться в терминах и более уверенно выбирать базы данных для своего проекта.
Поговорим также про типичные примеры применения и как не надо применять NoSQL базы данных.
Symfony — комбинируем GridFS файлы с ORM сущностями
Прямую связь между сущностью и документом установить нельзя, и я подумал, что не плохо было бы сделать собственный тип поля. С помощью определения собственного типа поля мы сможем контролировать способ хранения ссылки на документ и в то же время возвращать эту ссылку с помощью вызова свойства сущности.
Делаем проект на Node.js с использованием Mongoose, Express, Cluster. Часть 2.1
Введение
Здраствуйте, дорогие хабровчане! Сегодня у нас в основном будут маленькие изменения, но изменений много. В этой части мы будем:
- Создавать свой логгер
- Записывать в лог запросы и время их обработки
- Исправлять ошибки, которые мы допустили в первой части.
- Разбираться с авторизациеей
- Разбираться с некоторыми классами
- Конфиги!
Symfony — загрузка файлов в MongoDB GridFS
Как использовать Mongoose-схему для генерации graphQL-типов
Все начал с того что я решил написать изоморфный CMS для одного из моих проектов с использованием следующих технологий:
- React — для постройки UI
- Express — в качестве сервера
- MongoDb + Mongoose — noSQL база данных
- graphQL — основной API для взаимодействия с базой данных
- Apollo-Client — коннектор для удобного вызова запросов и мутаций через graphQL
- webpack — для сборки проекта и разделения клиентского и серверного кода
Упрощенная архитектура выглядит следующим образом:
__root
1 |__client
2 |__public
3 |__middleware
4 |__server
- React-компоненты
- Бандл клиентского кода и остальные публичные файлы
- Mongoose: схемы, дополнительные методы и graphQL: типы, класс с запросами, класс с мутациями, схема
- Бандл серверного кода вместе с express сервером
Как мы делали мониторинг запросов mongodb

Использование монги в production — достаточно спорная тема.
С одной стороны все просто и удобно: положили данные, настроили репликацию, понимаем как шардировать базу при росте объема данных. С другой стороны существует достаточно много страшилок, Aphyr в своем последнем jepsen тесте сделал не очень позитивные выводы.
По факту оказывается, что есть достаточно много проектов, где mongo является основным хранилищем данных, и нас часто спрашивали про поддержку mongodb в окметр. Мы долго тянули с этой задачей, потому что сделать "осмысленный" мониторинг на порядок сложнее, чем просто собрать какие-то метрики и настроить какие-нибудь алерты. Нужно сначала разобраться в особенностях поведения софта, чтобы понять, какие именно показатели отслеживать.
Как раз про сложности и проблемы я и хочу рассказать на примере реализации мониторинга запросов к mongodb.
Как я изобретал велосипед, или мой первый MEAN-проект

Сегодня, в период стремительного развития веб-технологий, опытному фронтэнд-разработчику нужно всегда оставаться в тренде, каждый день углубляя свои познания. А что делать, если Вы только начинаете свой путь в мире веб? Вы уже переболели вёрсткой и на этом не хотите останавливаться. Вас тянет в загадочный мир JavaScript! Если это про Вас, надеюсь данная статья придётся к стати.
Разработка облачного сервиса Scorocode: часть 1

В этой статье я расскажу, как мы разрабатывали облачный сервис Scorocode, с какими проблемами столкнулись, и, что самое важное, поделюсь планами развития.
Небольшой опрос в конце статьи позволит читателям отдать голоса за планируемые в будущем функции, тем самым повлияв на стратегию развития сервиса.
MongoDB Replica Set и OpLog на одном сервере
Пример настройки MongoDB с закрытым доступом через сеть Интернет. В данной статье приведен пример разворачивания трех Replica Set и активацией OpLog на одном сервере. OpLog необходим "реактивным" приложениям, которые следят (слушают) за изменениями в MongoDB, например для приложений на основе Meteor (для отключения long-polling'а).
Deform: simple database as a service
Представьте себе базу данных, способную валидировать JSON данные по схеме JSON Schema, отрабатывать события и обрабатывать данные. А если идея реализованна как сервис, использующий mongodb?
Мы разработали именно такой сервис. Им пользуются наши сайд проекты:
- docast.me — любые источники данных можно слушать/смотреть в любимом подкастинговом приложении
- watchlater — решение проблемы watch later youtube
- warhealth — мобильное приложение
Под катом краткое описание основных особенностей сервиса с примерами.
NeDB: аналог SQLite для NodeJS

NeDB (Node.js Embedded Database) — встраиваемая база данных для NodeJS, реализующая подмножество MongoDB API. Эта легкая NoSQL СУБД написана на чистом JavaScript, не имеет бинарных зависимостей и, помимо NodeJS, может использоваться в NW.js, Electron или прямо в браузере.
Как найти ближайшее кафе, достопримечательность, свободное такси глазами программиста
Ближайшие события
Развертывание стека MEAN (MongoDB, Express, AngularJS, Node.js) в Microsoft Azure

Разработчики, которые создают решения в стеке MEAN могут легко размещать свои решения в облачной платформе Microsoft Azure. Проще всего это сделать с помощью виртуальных машин.
Для упрощения работы с виртуальными машинами в облаке Azure предлагается площадка Azure Marketplace, в которой находятся сотни заранее настроенных виртуальных машин с разным окружением и установленными инструментами, включая операционные системы, базы данных, среды, фреймворки, CMS и так далее.
Рассмотрим, как любой пользователь Azure может развернуть стек MEAN за несколько минут.
Слежение за обновлениями из MongoDB Oplog в Sharded Cluster используя Scala и Akka Streams
Введение
Эта статья является продолжением предыдущей опубликованной статьи Tailing the MongoDB Replica Set Oplog with Scala and Akka Streams.
Как мы обсуждали прежде, слежение за обновлениями в MongoDB Sharded Cluster Oplog имеет свои подводные камни по сравнению с Replica Set. Данная статья попытается раскрыть некоторые аспекты темы.
В блоге команды MongoDB имеются очень хорошие статьи, полностью покрывающие тему слежения за обновлениями из MongoDB Oplog в Sharded Clusters. Вы можете найти их по следующим ссылкам:
- Tailing the MongoDB Oplog on Sharded Clusters
- Pitfalls and Workarounds for Tailing the Oplog on a MongoDB Sharded Cluster
Так же вы можете найти информацию об MongoDB Sharded Cluster в документации.
Примеры, приведенные в данной статье не следует рассматривать и использовать в продакшн среде. Проект с примерами доступен на github.
MongoDB Sharded Cluster
Из документации MongoDB:
Sharding, или горизонтальное масштабирование, разделение и распределение данных на нескольких серверах или сегментах (shards). Каждый сегмент является независимой базой данных, и в совокупности все сегменты составляют единую локальную базу данных.

В продакшин среде каждый узел является Replica Set:

MongoDB хранение деревьев
Как построить дерево?
Я ответил:
Берём mongodb и документ с деревом из неё
Мне так и не перезвонили, но я не расстраиваюсь за то теперь я изучаю mongoDB и не люблю Mysql(к счастью или к сожалению я не знаю). В общем, разберём как всё это работает? На примере дерева комментариев написанном на php.
Стек MEAN. Пример использования
Сегодня вашему вниманию предлагается статья о стеке MEAN (Mongo, Express, Angular, Node) который кажется нам перспективной (при этом достаточно модной) темой. Просим высказаться, хотите ли вы увидеть на русском языке книгу об этом стеке. Добро пожаловать под кат.
Слежение за обновлениями из MongoDB Replica Set Oplog используя Scala и Akka Streams
Введение
В этой статье я попробую объяснить, как следить за обновлениями в MongoDB Oplog при помощи Scala драйвера MongoDB и Akka Streams.
Примеры, приведенные в данной статье не следует рассматривать и использовать в продакшн среде.
Каждый из нас знает Unix команду
tail -f
, Tailable Cursor
имеет тот же концепт. MongoDB предоставляет возможность использовать эту функцию по умолчанию и не требует дополнительных библиотек и инструментов. Что касается Oplog
— это такая же коллекция, как и все остальные и ничего нового не требуется.Если вы хотите узнать больше об
Oplog
и Tailable Cursor
, то вы можете найти больше информации в документации MongoDB: Проект созданный в данной статье удобно расположился на Github.
Об онлайн университете MongoDB
Полноценный REST API для перфекционистов за 5 минут

Привет, Хабр! Меня зовут Владимир, мне 28 лет и я
Врачи говорят, что это взаимосвязано, мол перфекционизм — это стремление к совершенству, а простота позволяет подобраться к этому мифическому совершенству. Чем проще решение, тем меньше ошибок можно допустить, вот я и подсел. Я не стал с ними спорить и вместо того, что бы искать виновников моей истории, решил с этим жить и постараться повысить качество этой самой жизни.
Мир вокруг не идеален, сложную вещь сделать простой – невероятно сложно, поэтому всё чрезмерно усложнено. Людям нравится чувствовать себя профессионалами, поэтому они оперируют сложными терминами, когда в этом нет необходимости, так они ощущают свою значимость и заполняют пустоту, которая образовалась из-за страха потерянного времени.