В последнее время все больше и больше набирают популярность NoSQL базы данных. Они выгодно отличаются от обычных реляционных баз данных и обеспечивают: высокую отказоустойчивость, невероятно большие объемы данных, хорошую масштабируемость, кластеризацию.
Одна из новых NoSQL баз данных – RavenDB. Это документ ориентированная база данных, как и популярная MongoDB. Но, по сравнению с последней, RavenDB – база данных с открытым исходным кодом. Это значит, что вы можете использовать ее в своих приложениях бесплатно и при этом дополнять функциональность по своему желанию.
Давайте рассмотрим, как подключить базу данных RavenDB в своем отчете. Для этого вам нужно воспользоваться коннектором-плагином из поставки Fastreport.Net, который расположен в каталоге установленной программы в папке Extras\Connections\FastReport.RavenDB. Собираем этот проект.
Теперь переходим в дизайнер отчетов и добавляем плагин в меню File->Options.
После добавления библиотеки FastReport.RavenDB.dll в плагины, нужно перезагрузить дизайнер и приступить к созданию подключения.
В списке доступных подключений появился коннектор RavenDB.
В зависимости от настроек вашей базы, соединение может быть защищенным или незащищенным. В первом случае понадобиться вводить имя пользователя и пароль.
Ваша база данных может находиться на удаленном сервере или на локальном компьютере, без разницы. Мы лишь указываем URL хоста и имя базы. В итоге незащищенная строка подключения будет выглядеть так:
Url = http://desktop-9kdjgvm:9072/;Database=TestDatabase
Далее, как обычно переходим к выбору таблиц.
К сожалению, мы не сможем воспользоваться редактором SQL запросов. Хоть NoSQL и предоставляет возможность писать SQL подобные запросы, все же Мастер построения запросов не сможет с ними работать. Поэтому и параметризированные запросы нам также недоступны.
Обратите внимание, что сущность Companies имеет разные подчиненные сущности, которые уже имеют конечные поля данных. Это специфика документно-ориентированных NoSQL баз данных, в которых данные имеют иерархию. Чаще всего они используют json-подобные документы, что позволяет создавать иерархические конструкции данных, показанные на рисунке выше.