Отчетность с db4o - PullRequest
       17

Отчетность с db4o

7 голосов
/ 17 сентября 2008

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

Каковы лучшие / самые быстрые / самые распространенные методы для создания отчетов, аналогичных отчетам о сложных ограничениях для больших таблиц, которые можно сделать так эффективно на таких платформах, как SQL? Я хорошо понимаю, сколько времени, усилий и времени на разработку сэкономлено и даже много выигрышей в производительности, особенно по сравнению с ORM, но некоторые приложения требуют сложных отчетов, которые я не знаю, как выразить, используя объекты и запросы объектов, и я также обеспокоен производительностью, поскольку оптимизация и ведение сложных отчетов может быть слишком сложным даже для систем, специально предназначенных для этой цели.

-
Edit:

Для большей ясности можно использовать источники данных объекта и тому подобное, чтобы подключить db4o к тем же элементам управления, насыщенным данными, что и SqlDataSource et al. На сайте db4o я упоминал документы об использовании его с ReportViewer, а также советовал денормализовать данные в базу данных отчетов, но этот вопрос призван создать концептуальную проблему в отношении того, что можно сделать для выполнения типов запросов, которые СУРБД так хорошо работают на рынке, что удерживают отрасль. Мне нравится db4o, но я не могу придумать действительно эффективного средства составления отчетов по совокупным данным, которые существуют в нескольких различных типах (или таблицах в SQL), без извлечения всех соответствующих объектов из базы данных, их активации и выполнения вычислений. в коде уровня приложения. Возможно, я ошибаюсь, но похоже, что не стоит надеяться на то, что можно будет конкурировать с возможными оптимизациями в СУБД.

Я надеюсь, что среди светлых умов, которые нам здесь удалось собрать, кто-то знает что-то, чего я не знаю, или есть инновационные идеи для будущей реализации, которые могли бы расширить сферу ODBMS. Я знаю, что различные ORM реализуют методологии для сложных объектов отчетности, и мне интересно, может ли кто-нибудь, имеющий опыт работы с любой из этих технологий, иметь что-то творческое, что не зависит от каких-либо технологий, кроме моего кода и db4o (я могу генерировать отчеты с Только сервер SQL).

Ответы [ 6 ]

2 голосов
/ 04 октября 2008

Пожалуйста, смотрите эту страницу .

Best

Немецкий

2 голосов
/ 17 сентября 2008

Чтобы обойти затраты производительности отчетов через db4o, я бы предложил поддерживать высокоденормированную (sqlite?) Базу данных параллельно вашему контейнеру db4o. Запускайте отчеты для db и обычную логику приложения для db4o.

Да, это больше работы, но таким образом вы будете получать отчеты о высокой производительности, сохраняя полезность db4o.

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

1 голос
/ 29 сентября 2010

Это может также сводится к тому, какой инструмент отчетности вы используете. Например, я реализовал проект, который использует клиентский механизм Microsoft Reporting Services для визуализации отчетов - без зависимости от SQL-сервера - просто подпитывает его объектами. Вся агрегация выполняется механизмом отчетности, что означает, что вашему коду просто нужно найти и материализовать базовые объекты.

1 голос
/ 20 сентября 2008

Я не знаком с db4o. Но я знаю кое-что над отчетами о программном обеспечении. Некоторые из них имеют интерфейс данных, который вы можете написать свой собственный соединитель, как i-net Crystal-Clear . Если вы можете запросить простой список простых объектов (Strings, Numbers, ...), тогда это просто.

Другое простое решение - написать фиктивный драйвер JDBC. Для этого есть образец. Запросы, которые вы хотите выполнить на вашем db4o, будут доступны как виртуальная хранимая процедура. С дополнительными параметрами вы можете фильтровать ваши данные на db4o для лучшей производительности. Такой фиктивный драйвер JDBC можно записать за 3-4 часа.

1 голос
/ 17 сентября 2008

Мое ограниченное понимание проблемы заключается в том, что в настоящее время составление отчетов с DB4O очень сложно, из-за некоторых отсутствующих функций, таких как Count, Aggregate и т. Д. В существующем состоянии вы должны реализовать их самостоятельно со всей низкой производительностью, которая подразумевается (например, активация всех записей, затем выполнение операции подсчета записей).

0 голосов
/ 21 июля 2011

Слишком поздно, чтобы быть полезным для вас. Но я полагаю, что люди, которые находят этот вопрос, возможно, захотят взглянуть на Jasper Reports. Существует «коммерческая» версия продукта. Однако на самом деле это решение с открытым исходным кодом, которое можно найти в sourceforge .

Кажется, это на самом деле довольно хорошо. Есть даже сервер отчетов и функции BI (опять же, все с открытым исходным кодом). Так что, возможно, стоит поискать кого-то, кто немного заинтересован.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...