Как стать автором
Обновить
1.5

MongoDB *

Документо-ориентированная система управления БД

Сначала показывать
Порог рейтинга
Уровень сложности

Квест по синхронизации аналитического и оперативного хранилищ в реальном времени без потерь на сотнях терабайт данных

Уровень сложности Средний
Время на прочтение 12 мин
Количество просмотров 1.7K

Я работаю в компании STM Labs, где мы строим большие высоконагруженные системы класса Big Data. Эта статья написана по мотивам моего выступления на конференции Saint Highload 2023. Хочу рассказать вам увлекательную историю про то, как мы искали лучшее решение по синхронизации аналитического и оперативного хранилищ в реальном времени. Нам важно было сделать это без потерь, потому что на кону стояли сотни и более терабайт данных.

Сразу обозначу, чего в этой статье не будет:

• Я не буду подробно говорить о типах СУБД и их различиях.
• Я не буду делать обзор аналитических СУБД. Тут каждый выбирает сам.
• Я не буду подробно останавливаться на архитектуре, отказоустойчивости и масштабировании СУБД MongoDB.
• Я не буду делать обзор отличий OLAP и OLTP.
• Я не буду делать обзор и сравнение реализаций CDC в различных СУБД.

Читать далее
Всего голосов 6: ↑6 и ↓0 +6
Комментарии 6

Новости

Как мы решали вопрос многоязычности в боте

Уровень сложности Простой
Время на прочтение 5 мин
Количество просмотров 3K

Русский или English? Что для бота хорошо, то разработчику работа :)

Введение

В этой статье я поделюсь своим опытом реализации многоязычности в телеграм-боте, World for Life Bot расскажу о принципах выбора языков, которыми я руководствовался, технических аспектах реализации и принятых решениях.

Постановка Задачи

С самого начала разработки телеграм-бота я ставил перед собой амбициозную задачу создания сервиса, доступного и понятного для пользователей по всему миру. Вопрос о поддержке нескольких языков был ключевым, учитывая международный характер аудитории.

Читать далее
Всего голосов 16: ↑14 и ↓2 +12
Комментарии 27

Как мы запускали серьезный проект в Telegram

Уровень сложности Простой
Время на прочтение 6 мин
Количество просмотров 13K

В этом цикле статей я подробно расскажу о процессе создания моего нетривиального телеграм-бота World for Life Bot. Этот бот представляет собой уникальный инструмент, который предоставляет обширную статистику о стоимости жизни в разных уголках мира, помогая пользователям оценивать и сравнивать уровень жизни в различных городах.

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

Читать далее
Всего голосов 30: ↑24 и ↓6 +18
Комментарии 30

Calypso: Схема данных MongoDB на Scala

Уровень сложности Сложный
Время на прочтение 8 мин
Количество просмотров 4.1K

Чтобы применять Domain-Driven Design, DDD Aggregate и Transactional outbox на MongoDB, наша команда создала open source — библиотеку calypso для работы с BSON.

Публикация для тех, кто стремится к современным практикам разработки и разделяет наше влечение к Scala 3.

Готовы к открытиям? Добро пожаловать в мир функционального программирования и надёжной работы с schema-on-read.

Читать далее
Всего голосов 74: ↑74 и ↓0 +74
Комментарии 7

Истории

Перенести терабайты канбан-досок в облако: опыт команды Yandex Tracker

Уровень сложности Простой
Время на прочтение 7 мин
Количество просмотров 2.7K

Привет, меня зовут Мария Карпенко, я разработчик в команде Yandex Tracker — сервиса для управления процессами и проектами. Внутри Яндекса сервис  используется для постановки задач практически во всех командах, так что общее количество событий по задачам исчисляется уже миллиардами. 

Как внутренний сервис Tracker существует с 2012 года, и старые инстансы исторически использовали базы данных on-premise. Но к 2023 году многие части даже из списка легаси должны были переехать в облако — и нам понадобилось продумать бесшовный переезд для достаточно объёмных БД.

В этой статье расскажу, как мы решили эту задачу, — рассказ будет интересен всем, кто планирует переезд в облачную инфраструктуру.

Читать далее
Всего голосов 19: ↑16 и ↓3 +13
Комментарии 6

Первый месяц жизни приложения BookDesk или как меня пытались взломать

Уровень сложности Простой
Время на прочтение 7 мин
Количество просмотров 3.1K

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

Всем привет. Чуть более месяца назад я выпустил релиз своего приложения BookDesk: Читательский дневник для хранения всех своих прочитанных книг. Почитать про историю создания можно в первой части.

Читать далее
Всего голосов 11: ↑11 и ↓0 +11
Комментарии 14

Сколько нужно ядер cpu, чтобы выдержать 30k+ rps?

Уровень сложности Средний
Время на прочтение 6 мин
Количество просмотров 8.4K

Меня зовут Вадим Ивахин, я техлид в Vi.Tech — это IT-дочка ВсеИнструменты.ру.

Я и мои коллеги трудимся над большим количеством проектов и используем в своей работе различные инструменты, в том числе MongoDB. В этой статье я не стану рассказывать о том, что такое MongoDB. Хочу рассказать о её интересной и удобной особенности — механизме Watch, и о том, как с его помощью спроектировать приложение, способное выдержать десятки тысяч rps.

Читать далее
Всего голосов 25: ↑21 и ↓4 +17
Комментарии 34

Визуализация результатов Telegram-опросов в Grafana

Уровень сложности Простой
Время на прочтение 3 мин
Количество просмотров 4.5K

Хотел бы поделиться интересным решением, которое, уверен, было бы полезно для кооперативов и товариществ.

Современные технологии постепенно проникают во все области нашей жизни. Сегодня сложно представить соседей многоквартирных домов или земельных участков СНТ/ДНТ без группового чата в мессенджере. Такие группы удобны для общения, они позволяют оперативно решать вопросы, публиковать объявления, делиться новостями и даже проводить опросы и голосования.

Кстати, голосование в мессенджере может иметь юридическую силу. Для этого нужно принять решение о возможности применения электронных средств при принятии решений общим собранием членов товарищества и внести соответствующие изменения в устав товарищества (п. 25 ч. 1 ст. 17 федерального закона № 217-ФЗ). При создании нашего товарищества так мы и сделали, и теперь большинство вопросов мы решаем удаленно через Telegram.

Результаты опросов, проведенных в Telegram, отображаются почти моментально в интерфейсе мессенджера. Однако такие результаты не учитывают случаи, когда количество голосов у членов товарищества отличается. Кроме того, в общем чате могут присутствовать супруги/родственники участников, которые могут проголосовать без права голоса. В итоге всё сводится к тому, что необходимо каждый раз пересчитывать голоса.

Чтобы не утомлять секретаря собрания лишней рутиной, мы решили автоматизировать этот процесс. И вот, что у нас получилось.

На скриншотах ниже представлены результаты одного из первых Telegram-опросов, которые мы провели.

Читать далее
Всего голосов 14: ↑13 и ↓1 +12
Комментарии 5

Как я создавал мобильное приложение для хранения прочитанных книг BookDesk

Уровень сложности Простой
Время на прочтение 9 мин
Количество просмотров 4.7K

Всем привет! Меня зовут Александр, мне 33 года и я React-разработчик из Беларуси (10 лет опыта во фронтенде).

Я хочу рассказать о моем опыте создания мобильного приложения для хранениях прочитанных книг BookDesk.

Все началось еще в 2020 году, когда началась пандемия коронавируса, и всем пришлось находиться в изоляции. Тогда и пришла идея о создании своего приложения. У меня богатый опыт разработки веб-приложений на React, и поэтому я решил попробовать себя в новом направлении. Я решил долго не думать над технологиями и использовать React Native в связке с Node.js и MongoDB, т. к. ранее я уже работал с Node.js и MongoDB для создания веб приложений и, поэтому, выбор был очевиден.

Читать далее
Всего голосов 14: ↑14 и ↓0 +14
Комментарии 35

Готовимся к собеседованию: 82 вопроса по MongoDB

Время на прочтение 17 мин
Количество просмотров 6.3K

С момента своего появления MongoDB успела завоевать огромную популярность благодаря своей способности обрабатывать большие объемы данных. Ее принятие только растет, впрочем, как и сам рынок, на котором она востребована. Если вы нацелены связать свою карьеру с MongoDB, то сейчас самое время. Чтобы помочь вам на этом пути, мы подготовили список часто задаваемых вопросов по MongoDB с собеседований и ответов на них.

Читать далее
Всего голосов 18: ↑9 и ↓9 0
Комментарии 3

Пишем продвинутый планировщик с использованием React, Nest и NX. Часть 4: пользовательский интерфейс

Уровень сложности Средний
Время на прочтение 11 мин
Количество просмотров 5K

Друзья, всем привет! Меня зовут Игорь Карелин, я frontend-разработчик в компании Домклик. Как вы помните из предыдущих частей (1, 2, 3), у нас уже есть функциональность для работы с планировщиком в бэкенде. Теперь нашей задачей будет создать удобный и интуитивно понятный пользовательский интерфейс, чтобы пользователи могли легко взаимодействовать с задачами.

Читать далее
Всего голосов 25: ↑24 и ↓1 +23
Комментарии 1

MongoDB vs PostgreSQL. Сравнение документо-ориентированной и реляционной базы данных

Уровень сложности Простой
Время на прочтение 6 мин
Количество просмотров 12K

Дети часто задаются вопросом - кто сильнее, кит или слон? каратист или боксер? В этой статье мы попробуем ответить на на похожий вопрос, сравнив SQL (ну или почти SQL) базу данных PostgreSQL и NoSQL базу данных MongoDB. И понять, для каких проектов лучше подойдет реляционная PostgreSQL, а для каких MongoDB.

Данное сравнение также важно, потому что, учитывая новый функционал, MongoDB стала обладать некоторыми качествами SQL СУБД, включая многодокументные ACID-транзакции, вторичный индекс и расширенные возможности запросов. А PostgreSQL расширяет возможности работы с JSON, включаяиндексирование и оптимизацию запросов.

Читать далее
Всего голосов 14: ↑9 и ↓5 +4
Комментарии 22

Как сэкономить деньги на Interzone Egress. Part 1

Уровень сложности Простой
Время на прочтение 3 мин
Количество просмотров 493

Добрый день, уважаемые коллеги!

Меня зовут Анкин Николай и это мой первый пост. На текущий момент я тружусь в должности DevOps Engineer в компании Altenar. История о том , как я сэкономил денег своему любимому работодателю.

На что мы тратим 3k$ в месяц ?

Читать далее
Всего голосов 1: ↑1 и ↓0 +1
Комментарии 0

Ближайшие события

Московский туристический хакатон
Дата 23 марта – 7 апреля
Место
Москва Онлайн

Как мы настраивали PostgreSQL для использования в качестве кэша

Уровень сложности Сложный
Время на прочтение 10 мин
Количество просмотров 8K

В этой статье Антон Колесов, технический руководитель группы по эксплуатации платформ и системных решений, расскажет, как команда разработчиков Nexign настраивала альтернативное решение для кэша одной из наших высоконагруженных систем и анализировала возможность использования PostgreSQL в качестве одного из вариантов.

Читать далее
Всего голосов 15: ↑14 и ↓1 +13
Комментарии 10

А как понять? Делаем аналитику для бота с нуля. Часть 2 — делаем дашборд в Redash

Уровень сложности Простой
Время на прочтение 3 мин
Количество просмотров 2K

В предыдущей статье мы подготовили наше тестовое приложение — бота для обмена анонимными сообщениями в Telegram.

Пришло время отобразить все данные, которые мы собрали. Для этого мы будем использовать Redash.

Читать далее
Всего голосов 1: ↑0 и ↓1 -1
Комментарии 1

Оптимизация выборок в больших коллекциях MongoDB

Время на прочтение 7 мин
Количество просмотров 2.1K

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

Для такой операции, в MongoDB штатно предусмотрена функция $sample, которую можно использовать в составе pipeline при проведении агрегации данных. Однако, как показала практика, выполнение выборки полей таким образом на большой коллекции может занимать весьма ощутимое время. Чтобы сократить время выполнения таких выборок, потребовалось разработать собственный алгоритм, который на порядки увеличил скорость работы. Ниже приведен подход и вариант реализации данного алгоритма.

Читать далее
Всего голосов 3: ↑3 и ↓0 +3
Комментарии 3

Kubernetes Volumes: реплицированная MongoDB со StatefulSet

Уровень сложности Простой
Время на прочтение 6 мин
Количество просмотров 2.1K

Привет Хабр!

В Kubernetes StatefulSet — это реплицированные группы Pod’ов, аналогичные ReplicaSet’ам.

Каждая реплика получает постоянное имя хоста с уникальным индексом (например, database-0, database-1 и т. д.).

Каждая реплика создается в порядке от самого низкого до самого высокого индекса и создание блокируется до тех пор, пока под с предыдущим индексом не станет работоспособным и доступным. Это относится и к масштабированию.

При удалении StatefulSet каждый из управляемых подов реплики также удаляется в порядке убывания. Это также относится к уменьшению количества реплик.

Оказывается, этот простой набор требований значительно упрощает развертывание приложений для хранения данных в Kubernetes. Например, сочетание стабильных имен хостов (например, database-0) и ограничений порядка означает, что все реплики, кроме первой, могут надежно ссылаться на database-0 для целей обнаружения и установления кворума репликации.

Сегодня мы развернем реплицированный кластер MongoDB с StatefulSet.

Читать далее
Всего голосов 8: ↑7 и ↓1 +6
Комментарии 3

Микросервисная реализация объектно-ориентированных баз данных

Уровень сложности Средний
Время на прочтение 50 мин
Количество просмотров 8.8K

В настоящее время объектно-ориентированные базы данных (ООБД) не имеют достаточно большого распространения в повседневном использовании, да и более того, не настолько популярны как реляционные базы данных, которые не один десяток лет уже активно поддерживаются различными сообществами и имеют долгую историю применения.

В данной статье рассматривается реализация ООБД в контексте разработки системы, состоящей из микросервисов, на примере Perst и Db4o. Также будет рассмотрена отдельная реализация с документно-ориентированной базой данных MongoDB, работа с которой имеет много общего с ООБД.

Целью данной статьи является рассмотрение практического применения ООБД и решения проблем совместимости с помощью микросервисной архитектуры.

Читать далее
Всего голосов 7: ↑6 и ↓1 +5
Комментарии 2

KMongo и неструктурированные данные

Время на прочтение 5 мин
Количество просмотров 1.4K

Несмотря на то, что MongoDB начало движение в сторону строгости реляционной модели, она по прежнему остается документной БД и предполагает возможность сохранения документов произвольной структуры. И при использовании MongoDB в языках с динамической типизацией (JavaScript, Python) сохранение или генерация объектов не вызывает сложностей, поскольку заранее не требуется определить структуру извлекаемого или сохраняемого объекта. Но как действовать в случае использования драйверов для MongoDB для языков со строгой типизацией?

В этой статье мы разберем приемы для работы с неструктурированными данными, которые позволят сохранить преимущества использования сериализации с механизмами рефлексии для извлечения произвольных документов.

Читать далее
Всего голосов 10: ↑10 и ↓0 +10
Комментарии 0

Стартуем микросервис на Node.js + fastify + Typescript + prisma + mongodb + grpc

Уровень сложности Средний
Время на прочтение 8 мин
Количество просмотров 11K

Зачастую возникает необходимость начать новый микросервис.

Вот и у меня совсем недавно возникла такая потребность. А ведь еще хочется и чего-то новенького попробовать.

Сперва был определен стек и хотя процесс для меня не новый, но я столкнулся с множеством подводных камней. В результате решил сделать этот туториал!

Читать далее
Всего голосов 12: ↑12 и ↓0 +12
Комментарии 4

Вклад авторов