Подключение к MongoDB и управление ими в Microsoft Purview
В этой статье описывается, как зарегистрировать MongoDB, а также как проверить подлинность MongoDB и взаимодействовать с ним в Microsoft Purview. Дополнительные сведения о Microsoft Purview см. в вводной статье.
Поддерживаемые возможности
| Извлечение метаданных | Полная проверка | Добавочное сканирование | Сканирование с заданной областью | Классификация | Присвоение подписей | Политика доступа | Линии | Общий доступ к данным | Динамическое представление |
|---|---|---|---|---|---|---|---|---|---|
| Да | Да | Нет | Да | Нет | Нет | Нет | Нет | Нет | Нет |
Поддерживаемые версии MongoDB — от 2.6 до 5.1.
При сканировании источника MongoDB Microsoft Purview поддерживает извлечение технических метаданных, в том числе:
- Сервер
- Databases
- Коллекции, включая схему
- Представления, включая схему
Во время сканирования Microsoft Purview извлекает и анализирует образцы документов для вывода схемы коллекции и представления. Размер выборки можно настроить.
При настройке сканирования можно выбрать полное сканирование одной или нескольких баз данных MongoDB или дополнительно область проверку на подмножество коллекций, соответствующих заданным именам или шаблонам имен.
Известные ограничения
При удалении объекта из источника данных в настоящее время при последующей проверке соответствующий ресурс в Microsoft Purview автоматически не удаляется.
Предварительные требования
- Учетная запись Azure с активной подпиской. Создайте учетную запись бесплатно.
- Активная учетная запись Microsoft Purview.
- Для регистрации источника данных и управления им на портале управления Microsoft Purview требуются разрешения администратора источника и читателя данных. Дополнительные сведения о разрешениях см. в статье Управление доступом в Microsoft Purview.
- Настройте последнюю локальную среду выполнения интеграции. Дополнительные сведения см. в руководстве по созданию и настройке локальной среды выполнения интеграции. Минимальная поддерживаемая версия локального Integration Runtime — 5.16.8093.1.
- Убедитесь, что JDK 11 установлен на компьютере, где установлена локальная среда выполнения интеграции. Перезапустите компьютер после установки JDK, чтобы он вступил в силу.
- Убедитесь, что на локальном компьютере среды выполнения интеграции установлен Распространяемый компонент Visual C++ (версия Visual Studio 2012 с обновлением 4 или более поздней). Если это обновление не установлено, его можно скачать здесь.
Регистрация
В этом разделе описывается, как зарегистрировать MongoDB в Microsoft Purview с помощью портала управления Microsoft Purview.
Действия по регистрации
Чтобы зарегистрировать новый источник MongoDB в каталоге данных, сделайте следующее:
- Перейдите к учетной записи Microsoft Purview на портале управления Microsoft Purview.
- Выберите Карта данных в области навигации слева.
- Выберите Зарегистрировать
- В разделе Регистрация источников выберите MongoDB. Нажмите Продолжить.
На экране Регистрация источников (MongoDB) выполните следующие действия.

- Введите имя , которое источник данных будет указан в каталоге.
- Введите имя сервера . Укажите имя для уникальной идентификации экземпляра MongoDB в организации. Например, host для автономного развертывания для MyReplicaSetName реплика задано, MyClusterName для сегментированного кластера. Это значение будет использоваться в полном имени ресурса и не может быть изменено.
- Выберите коллекцию или создайте новую (необязательно).
- Завершите регистрацию источника данных.
Проверка
Выполните следующие действия, чтобы проверить MongoDB для автоматической идентификации ресурсов. Дополнительные сведения о сканировании в целом см. в статье Введение в сканирование и прием данных.
Проверка подлинности для сканирования
Поддерживаемый тип проверки подлинности для источника MongoDB — обычная проверка подлинности.
Создание и запуск сканирования
Чтобы создать и запустить новую проверку, сделайте следующее:
- В Центре управления выберите Среды выполнения интеграции. Убедитесь, что настроена локальная среда выполнения интеграции. Если она не настроена, выполните описанные здесь действия, чтобы создать локальную среду выполнения интеграции.
- Перейдите в раздел Источники.
- Выберите зарегистрированный источник MongoDB.
- Выберите + Создать сканирование.
- Укажите следующие сведения:
- Имя: имя сканирования
- Подключение через среду выполнения интеграции. Выберите локальную среду выполнения интеграции, используемую для выполнения сканирования.
- Учетные данные. Выберите учетные данные для подключения к источнику данных. Убедитесь, что:
- При создании учетных данных выберите Обычная проверка подлинности .
- Укажите имя пользователя, используемое для подключения к MongoDB, в поле Ввода имени пользователя.
- Сохраните пароль пользователя, используемый для подключения к MongoDB, в секретном ключе.
- Строка подключения. Укажите строку подключения MongoDB, используемую для подключения к MongoDB, за исключением имени пользователя и пароля. Например, mongodb://mongodb0.example.com:27017,mongodb1.example.com:27017/?replicaSet=myRepl .
- Базы данных. Укажите список баз данных MongoDB для импорта. Список может содержать одно или несколько имен баз данных, разделенных точкой с запятой (;), например database1; database2 .
- Коллекции: подмножество коллекций для импорта, выраженное в виде списка коллекций, разделенных точкой с запятой, например collection1; collection2 . Все коллекции импортируются, если список пуст. Допустимые шаблоны имен коллекций, использующие синтаксис выражений SQL LIKE, включают использование %. Например: A%; %B; %C%; D :
- Начните с A или
- Заканчивается на B или
- Содержать C или
- Равный D
Использование символов NOT и специальных символов недопустимо.

- Количество примеров документов: количество примеров документов, которые необходимо проанализировать для извлечения схемы. Значение по умолчанию: 10.
- Максимальный доступный объем памяти (применяется при использовании локальной среды выполнения интеграции): максимальный объем памяти (в ГБ), доступный на виртуальной машине клиента для использования процессами сканирования. Это зависит от размера проверяемого источника MongoDB.
- Выберите Проверить подключение , чтобы проверить конфигурации.
- Нажмите Продолжить.
- Выберите триггер сканирования. Вы можете настроить расписание или запустить проверку один раз.
- Просмотрите проверку и выберите Сохранить и запустить.
- Перейдите на портал управления Microsoft Purview. В левой области выберите Карта данных.
- Выберите источник данных. Список существующих проверок для этого источника данных можно просмотреть в разделе Последние проверки или просмотреть все проверки на вкладке Сканирование .
- Выберите сканирование с результатами, которые вы хотите просмотреть. На панели отображаются все предыдущие запуски сканирования, а также состояние и метрики для каждого запуска сканирования.
- Выберите идентификатор запуска, чтобы проверка сведения о выполнении проверки.
- Перейдите на портал управления Microsoft Purview. В левой области выберите Карта данных.
- Выберите источник данных. Список существующих проверок для этого источника данных можно просмотреть в разделе Последние проверки или просмотреть все проверки на вкладке Сканирование .
- Выберите проверку, которой вы хотите управлять. Далее вы можете:
- Измените сканирование, выбрав Изменить проверку.
- Отмените выполняемую проверку, выбрав Отмена выполнения проверки.
- Удалите сканирование, выбрав Удалить сканирование.
- При удалении сканирования ресурсы каталога, созданные на основе предыдущих проверок, не удаляются.
- Ресурс больше не будет обновляться с изменениями схемы, если исходная таблица изменилась и вы повторно просканируете исходную таблицу после изменения описания на вкладке Схема Microsoft Purview.
- Аналитика ресурсов данных в Microsoft Purview
- Поиск Каталог данных
- Подключение к серверу
- Получение объекта базы данных на сервере
- Получение объекта коллекции в базе данных
- Взаимодействие с коллекцией (добавление, удаление, получение, изменение данных)
Просмотр проверок и запусков сканирования
Чтобы просмотреть существующие проверки, выполните приведенные далее действия.
Управление проверками
Чтобы изменить, отменить или удалить сканирование:
Дальнейшие действия
Теперь, когда вы зарегистрировали источник, следуйте приведенным ниже руководствам, чтобы узнать больше о Microsoft Purview и ваших данных.
Node.js и MongoDB
Наиболее популярной системой управления базами данных для Node.js на данный момент является MongoDB. Для работы с этой платформой прежде всего необходимо установить сам сервер MongoDB. Подробнее как это сделать, описывается здесь. Кроме самого сервера Mongo для взаимодействия с Node.js нам необходим драйвер.
При подключении и взаимодействии с бд в MongoDB можно выделить следующие этапы:
Итак, создадим новый проект. Для этого определим новый каталог, который будет называться mongoapp . Далее перейдем к этому каталогу в командной строке/терминале и установим пакет mongodb :
npm install mongodb
Стоит отметить, что на момент написания текущей статьи текущая версия драйвера — 6.3.0. Между версиями и даже подверсиями иной раз бывают некоторые отличия. И в этом плане функционал драйвера очень часто меняется. Однако общие моменты часто сохраняются. Всю необходимую справочную информацию конкретно по данному драйверу можно найти на https://docs.mongodb.com/drivers/node/current/
Подключение к базе данных
Перед подключением к MongoDB из приложения на Node.js нам естественно сначала надо запустить сам сервер mongodb.
Ключевым классом для работы с MongoDB является класс MongoClient , и через него будет идти все взаимодействия с хранилищем данных. Соответственно вначале мы должны получить MongoClient:
const MongoClient = require("mongodb").MongoClient;
В конструктор MongoClient передается строка подключения к серверу:
"mongodb://user:password@host:port/?options
Элементы строки подключения
- Сначала идет протокол, в качестве которого обычно применяется «mongodb».
- Затем, если доступ к серверу ограничен логином и паролем, то указывается имя пользователя и через двоеточие пароль («user:password»).
- Далее указывает хост и порт, по которому запущен сервер MongoDB ( host:port ).
- В конце после вопросительного знака ? могут указываться дополнительные параметры подключения ( ?options .
Например, определим подключение к локальному серверу MongoDB, который запущен на текущем компьютере на стандартном адресе «127.0.0.1:27017/»:
const MongoClient = require("mongodb").MongoClient; const url = "mongodb://127.0.0.1:27017/"; // создаем объект MongoClient и передаем ему строку подключения const mongoClient = new MongoClient(url);
Для подключения к серверу mongodb применяется метод connect() :
connect(): Promise
Метод возвращает Promise, из которого можно получить тот же объект MongoClient:
const MongoClient = require("mongodb").MongoClient; const client = new MongoClient("mongodb://127.0.0.1:27017/"); client.connect().then(mongoClient=>< console.log("Подключение установлено"); console.log(mongoClient.options.dbName); // получаем имя базы данных >);
Метод then() получает функцию, в которую передается подключенный MongoClient, по сути это тот же объект, что вызвал метод connect. Для теста с помощью свойства mongoClient.options.dbName выводим название базы данных, к которой мы подключены (по умолчанию это база данных test).
В конце завершения работы с бд нам надо закрыть соединение с помощью метода close() .
const MongoClient = require("mongodb").MongoClient; const client = new MongoClient("mongodb://127.0.0.1:27017/"); client.connect().then(mongoClient=>< console.log("Подключение установлено"); // какие-нибудь операции с базой данных MongoDB // закрываем подключение mongoClient.close().then(()=>console.log("Подключение закрыто")); >);
Метод close() также возвращает Promise. Соответственно мы можем вызвать метод then() и в него передать функцию, которая выполняется при закрытии подключения.
Но лепить всю логику взаимодействия через вызовы then() может быть не очень удобно. Поэтому мы также можем использовать другой подход — с использованием async/await :
const MongoClient = require("mongodb").MongoClient; const mongoClient = new MongoClient("mongodb://127.0.0.1:27017/"); async function run() < try < // Подключаемся к серверу await mongoClient.connect(); console.log("Подключение установлено"); // взаимодействие с базой данных >catch(err) < console.log(err); >finally < // Закрываем подключение при завершении работы или при ошибке await mongoClient.close(); console.log("Подключение закрыто"); >> run().catch(console.log);
База данных
После подлючения к серверу мы можем обращаться к базе данных на сервере. Для этого используется метод
const db = client.db("название_бд");
В качестве параметра в метод передается название базы данных, к которой мы хотим подключиться. Результатом функции является объект базы данных, через который мы далее уже сможем обращаться к данным в этой БД.
Для примера выполним ping к базе данных «admin», которая по умолчанию есть на сервере MongoDB:
const MongoClient = require("mongodb").MongoClient; const url = "mongodb://127.0.0.1:27017/"; const mongoClient = new MongoClient(url); async function run() < try < // Подключаемся к серверу await mongoClient.connect(); // обращаемся к базе данных admin const db = mongoClient.db("admin"); // выполняем пинг для проверки подключения const result = await db.command(< ping: 1 >); console.log("Подключение с сервером успешно установлено"); console.log(result); >catch(err) < console.log("Возникла ошибка"); console.log(err); >finally < // Закрываем подключение при завершении работы или при ошибке await mongoClient.close(); console.log("Подключение закрыто"); >> run().catch(console.error);
Для выполнения диагностических команд типа пинга объект базы данных Db предоставляет метод command , который в качестве первого параметра принимает объект диагностики. Например, объект , указывает, что надо выполнить пинг к базе данных, то есть проверить подключение к ней.
Метод command представляет Promise, из которого можно получить предоставляет результат проверки. В данном случае результат проверки возвращается в константу result .
const result = await db.command(< ping: 1 >);
Запустим сервер MongoDb (если он не запущен) и затем запустим наш файл app.js:
Microsoft Windows [Version 10.0.22621.819] (c) Корпорация Майкрософт (Microsoft Corporation). Все права защищены. C:\Users\eugen>cd c:\node\mongoapp c:\node\mongoapp>node app.js Подключение с сервером успешно установлено < ok: 1 >Подключение закрыто c:\node\mongoapp>
Здесь мы видим, что полученный при пинге результат представляет объект
Коллекции
База данных в MongoDB не имеет таблиц. Вместо этого все данные попадают в коллекции. И в рамках node.js для взаимодействия с базой данных (добавления, удаления, чтения данных) нам потребуется получить объект коллекции. Для этого применяется метод db.collection(«название_коллекции») , в который передается название коллекции и который возвращает объект класса Collection , через который мы можем взаимодействовать с этой коллекцией.
В отличие от таблиц в реляционных системах, где все данные хранятся в виде строк, в коллекциях в MongoDB данные хранятся в виде документов. Например, обратимся к коллекции в базе данных. Для этого определим в каталоге проекта следующий файл app.js :
const MongoClient = require("mongodb").MongoClient; const url = "mongodb://127.0.0.1:27017/"; const mongoClient = new MongoClient(url); async function run() < try < await mongoClient.connect(); const db = mongoClient.db("usersdb"); const collection = db.collection("users"); const count = await collection.countDocuments(); console.log(`В коллекции users $документов`); >catch(err) < console.log(err); >finally < await mongoClient.close(); >> run().catch(console.error);
В качестве базы данных здесь используется «usersdb». При этом не важно, что по умолчанию на сервере MongoDB нет подобной базы данных. При первом к ней обращении сервер автоматически ее создаст.
После подключения мы обращаемся к коллекции «users»:
const collection = db.collection("users");
Опять же неважно, что такой коллекции по умолчанию нет в бд usersdb, она также будет создана при первом обращении.
Получив коллекцию, мы можем использовать ее методы. В данном случае для простоты применяется метод countDocuments() , который получает количество документов коллекции. Этот метод возвращает Primise, из которого можно получить собственно результат операции — количество документов. Результат работы:
В коллекции users 0 документов
Установка и подключение к MongoDB

Обновлено: 19.05.2023 Опубликовано: 17.04.2021
Используемые термины: MongoDB, Ubuntu. В данной инструкции мы рассмотрим процесс установки MongoDB на Linux Ubuntu (Debian). Также будут приведены примеры настройки подключения по сети, защита соединения с помощью шифрования и аутентификации.
Установка
На странице MongoDB Community Downloads смотрим стабильные версии программного продукта. На момент обновления инструкции это была 4.4.
Обратите внимание, установка MongoDB возможна на большое число популярных операционных систем — Amazon, Debian, Ubuntu, macOS, CentOS, Red Hat, Windows и другие.

Переходим на страницу загрузки ключей для проверки подлинности репозитория. Копируем ссылку для версии MongoDB, которую мы планируем установить: * в данном примере мы скопировали ссылку на ключ для версии 4.4. Обратите внимание, что также есть возможность загрузки ключей для более свежих и менее стабильных версий. С помощью скопированной ссылки скачиваем и устанавливаем ключ:
wget -qO — https://www.mongodb.org/static/pgp/server-4.4.asc | sudo apt-key add —
Создаем файл для настройки репозитория Ubuntu:
vi /etc/apt/sources.list.d/mongodb-org.list
Добавляем строку:
deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/4.4 multiverse
- jammy: 22.04.
- focal: 20.04.
- bionic: 18.04.
- xenial: 16.04.
Посмотреть кодовое название для вашей системы можно командой:
Обновляем список пакетов:
Поработаем с MongoDb

В текущее время появляется всё больше high-load проектов оперирующие колоссальным объемом данных. И уже нельзя обойтись классической реляционной моделью хранения этой информации. Всё более популярными становятся NoSQL базы данных (NoSQL — обозначает Not only SQL). Одной из таких баз данных является MongoDB, которая уже заслужила внимание к себе таких компаний как Disney, craiglist, foursquare. К тому же тут неоднократно писали о ней:
NoSQL, используя MongoDB, NoRM и ASP.NET MVC
Шардинг MongoDB на пальцах
Репликация MongoDB на пальцах
Это еще одна статья о работе с MongoDb в среде .net.
Создание базы данных.
По умолчанию база данных находится в папке c:/data/db
Запустим mongo.exe и создадим новую базу данных:
use mongoblog
Сразу же установим параметры доступа (имя пользователя и пароль):
db.addUser("admin", "masterkey")
Особенностью MongoDb является то, что это документо-ориентированная база данных, и не содержит информацию о структуре, так что тут мы закончили. Сразу переходим к описанию моделей данных.
У нас будет две сущности Article (Статья) и Comment (Комментарий), и Статья будет содержать множество Комментариев:
public partial class Article < [BsonId] public ObjectId Id < get; set; >//указывает что это свойство - id поле объекта public string Url < get; set; >public string Title < get; set; >public string Teaser < get; set; >public string Content < get; set; >public DateTime AddedDate < get; set; >public List Tags < get; set; >public bool IsPublished < get; set; >public string Bulk < get; set; >public List Comments < get; set; >public Article() < Tags = new List(); Comments = new List(); > > public partial class Comment < [BsonId] public ObjectId Id < get; set; >//указывает что это свойство - id поле объекта public DateTime AddedDate < get; set; >public string Content < get; set; >public Comment() < >>
- подключение к Mongo
- добавление статьи
- изменение статьи
- индексация
- удаление статьи
- вывод статей (фильтрация/пейджинг/сортировка)
- добавление комментариев
- удаление комметариев
- поиск
- бекап базы
#1 Подключение к базе.
По умолчанию база занимает порт 27017 на сервере (у нас как обычно localhost). Подключаемся к базе:
public MongoDBContext(string ConnectionString, string User, string Password, string Database)
#2/#3 Добавление/изменение записи
Для добавления объекта в коллекцию необходимо получить коллекцию по имени
var collection = database.GetCollection(table);
Для добавления можно выполнить команду:
collection.Insert(obj);
или (как и для изменения)
collection.Save(obj);
MongoDb самостоятельно добавляет поле _id — уникальный параметр. Если при выполнении команды Save у объекта будет Id существующий уже в коллекции, то выполнится апдейт этого объекта.
#4 Индексация
Для быстрого поиска мы можем добавить индекс по какому-либо полю. Для индексации используется команда
collection.EnsureIndex(IndexKeys.Descending("AddedDate"));
Это ускорит сортировку по этому полю.
#5 Удаление
Для удаления по id создается запрос (Query). В данном случае это
var query = Query.EQ("_id", id)
и выполняется команда:
collection.Remove(query);
#6 Вывод статей
Для вывода значений применив фильтр и отсортированных, да еще и с пейджингом используется курсор.
Например чтобы выбрать из коллекции неудаленные (IsDeleted = false) отсортированные по дате убывания (AddedDate desc) 10ю страницу (пропускаем 90 элементов и выводим 10 следующих) составляется такой курсор:
var cursor = collection.Find(Query.EQ("IsDeleted", false)); cursor.SetSortOrder(SortBy.Descending("AddedDate")); cursor.Skip = 90; cursor.Limit = 10; foreach (var obj in cursor)
#7 Добавление комментариев.
Так как MongoDb — документо-ориентированная база данных, то не существует отдельной таблицы с комменатариями, а комментарий добавляется в массив комментариев в статье, после чего статья сохраняется:
var article = db.GetByID("Articles", articleId); comment.AddedDate = DateTime.Now; article.Comments.Add(comment); db.Save("Articles", article);
#8 Удаление комментария.
Комментарий удаляется точно так же. Мы получаем объект article, удаляем из списка комментариев текущий комментарий и сохраняем объект.
#9 Поиск.
Для того чтобы найти элемент содержащий заданную подстроку необходимо задать следующий запрос:
Query.Matches("Text", @".*искомое слово.*").
Есть 2 проблемы так как поиск учитывает регистр, т.е. Петя != петя, и к тому же у нас есть много полей.
Первую проблему можно решить использовав регулярные выражения
Но чтобы избавится от обеих проблем сразу я создал поле Bulk куда в нижнем регистре записываются все поля + комментарии и ищу по этому полю.
#10 Бекап базы.
Именно бекап а не репликация. Для того чтобы иметь доступ к файлу базы данных нужно выполнить lock (база продолжит работать, только в этот момент все команды записи будут кешироваться, чтобы потом выполнится). После чего базу данных можно скопировать, заархивировать и выложить на ftp. После этой процедуры базу надо разлочить (Unlock).
Команды:
public void Lock() < var command = new CommandDocument(); command.Add("fsync", 1); command.Add("lock", 1); var collection = server.AdminDatabase.RunCommand(command); >public void Unlock()
Если что-то пойдет не так, то сервер БД надо будет перезапустить с командой:
mongod --repair
Исходники
Пробное приложение (на asp.net mvc) можно найти по адресу:
https://bitbucket.org/chernikov/mongodbblog
Да, и по поводу производительности по отношению к остальным вот ссылка.