Поиски бесплатного ODBC-драйвера для MongoDB привели меня на GitHub. Там я нашел MongoDB BI Connector ODBC Driver – ODBC-драйвер для подключения из приложения к MongoDB Connector for Business Intelligence (MongoDB Connector for BI или MongoDB BI Connector). MongoDB Connector for BI – это специальное приложение, которое "позволяет использовать вашу BI-систему для визуализации, изучения и составления отчетов по данным MongoDB с использованием стандартных SQL-запросов". То есть, это посредник между SQL-клиентом и сервером MongoDB, который принимает входящие SQL-запросы, транслирует их в MQL (MongoDB Query Language) и перенаправляет серверу MongoDB, а в ответ от сервера MongoDB получает JSON с данными, который преобразует и возвращает SQL-клиенту. Вот такой подземный ход на чердак: Приложение -> ODBC- драйвер -> BI Connector -> MongoDB:
Мне кажется, что наименование "BI Connector" звучит как-то ограничивающе область применения, и более подходящим наименованием было бы "SQL Connector". Чем руководствовались менеджеры проекта при выборе его наименования я не знаю. Но, независимо от названия, мне такой вариант подключения к MongoDB подходит.Для начала на сервере с MongoDB необходимо установить и настроить MongoDB Connector for BI. Его инсталлятор содержит два исполняемых модуля:
- mongosqld – сам MongoDB Connector for BI.
- mongodrdl – утилита, которая генерирует информацию о схеме базы данных MongoDB (она нам тоже пригодится).
- Что бы к MongoDB Connector for BI можно было подключиться с рабочей станции в параметр net.bindIp к 127.0.0.1 через запятую добавляем IP адрес сервера MongoDB.
- MongoDB Connector for BI для своей работы требует схему базы данных MongoDB. Для начала настроим параметр schema.stored так, чтобы она генерировалась автоматически (ниже, "fp" – это наименование базы данных MongoDB).
- с помощью утилиты mongodrdl выгрузим схему базы данных в файл формата DRDL
Содержимое полученного файла fp.drdl напоминает содержимое коллекции schemas при автогенерации схемы:mongodrdl /db:fp /out:fp.drdl
schema: - db: fp tables: - table: regions collection: regions pipeline: [] columns: - Name: _id MongoType: bson.ObjectId SqlName: _id SqlType: objectid - Name: Id MongoType: int SqlName: Id SqlType: int - Name: Name MongoType: string SqlName: Name SqlType: varchar - Name: ParentId MongoType: int SqlName: ParentId SqlType: int
- в конфигурационном файле вместо секции schema.stored заполним названием DRDL-файла параметр schema.path:
В заключение покажу, как выглядят данные полученные из коллекции regions БД MongoDB в системе, для которой я настраивал подключение через ODBC:
Слева – так система видит коллекцию, справа – результат выполнения запроса к коллекции "SELECT ID, name, ParentId FROM regions".
Комментариев нет:
Отправить комментарий