4. April 2013 09:37
Hallo Gemeinde,
im folgenden habe ich ein paar Gedanken, die mir bei der aktuellen Arbeit mit NAV 2013 kamen, zusammengefasst und stelle diese hiermit zur Diskussion:
---
Eine wesentliche Neuerung in der Entwicklungsumgebung von Dynamics NAV stellt die Einführung des Query-Objekts dar. Dieses erlaubt die Verknüpfung von SQL Server-Tabellen und das Berechnen von Werten in einer Weise, wie man es unter SQL Server bisher von den Views („Sichten“) kannte. Das Query-Objekt ermöglicht also unter Dynamics NAV den Aufbau von SQL-Abfragen, ohne dass man sich der SQL-Syntax bzw. der SQL Server Management Konsole bedienen muss. Neben der einfacheren Erstellung ist vor allem die verbesserte Performance als Argument zu nennen, neue Anwendung mit dieser Technik zu entwickeln. Bestehende Anwendungen sollen lt. Microsoft mittels Query-Objekten performanter gestaltet werden. In bestimmten Anwendungsfällen könnten Query-Objekte den Einsatz von FlowFields obsolet machen.
SQL-Abfragen in NAV zu integrieren kann gesehen werden als eine logische Fortführung der Strategie, das Produkt von der nativen Datenbank abzukoppeln und konsequent auf den SQL Server zu setzen. SQL-Abfragen bieten hohen Komfort bei der Erstellung, lassen adhoc-Auswertungen zu und sind sehr performant. Sie stellen eine optimale Basis für viele Module dar, die gerne als Flaschenhals fungieren, wenn größere Datenmengen ins Spiel kommen. Als Alternative zu C/AL-Konstrukten für verknüpften Tabellen und FlowFields sind sie geradezu prädestiniert.
Die Entscheidung, Anwender und Entwickler nicht mit dem originären SQL-Code zu konfrontieren, erscheint vordergründig richtig. Insofern stellen die Query-Objekte mit ihrem Designer, dessen grundsätzlicher Aufbau von Reports und DataPorts her bereits bekannt ist, ein probates Mittel dar, die neuen Funktionen schnell bekannt zu machen. Eine Fokussierung auf die hauptsächlich benötigten Funktionen und Einstellungen erlaubt komfortable Einarbeitungszeiten, da man sich nicht mit allzu viel Overhead belasten muss. „Gefährliche“ SQL-Konstruktionen, wie Datenmanipulation oder UNION-Statements, sind auf diese Weise ausgeschlossen und erlauben den Erhalt einer gewissen qualitativen Stabilität.
Vor diesem Hintergrund ist es mit absolut unverständlich, warum man das Potential, das diese Technik repräsentiert, nicht einmal im Ansatz nutzt.
Query-Objekte können als Datengrundlage für Diagramme fungieren, oder mittels Web Services in OData-fähige Quellen übertragen werden. Außerdem kann man sie in der Entwicklungsumgebung aufrufen und die Ergebnisse in verschiedenen Formaten abspeichern. Diese Anwendungsvarianten stellen bestenfalls Spezialfälle dar, wenn nicht sogar exotische Vorgänge. Die interessanten Bereiche, nämlich Pages, Reports und XMLPorts, sind bisher ausgenommen von der Nutzung der neuen Techniken. In anderen Worten, ein Report, der eine Stunde lang läuft, um eine komplexe Datenaufbereitung zu vollziehen, wird trotz der neuen Technik immer noch eine Stunde laufen, weil man die Query-Objekte für diese Zwecke nicht heranziehen kann.
Microsoft spricht allerdings davon, diese Möglichkeiten in späteren Versionen zur Verfügung zu stellen.
Eine tatsächliche Verbesserung der Performance lässt sich interessanterweise mit einer Funktion erreichen, die es bereits seit längerem gibt: die LinkedObject-Eigenschaft. Hiermit kann ein beliebiges SQL-View als Tabelle eingebunden werden und steht damit sofort für Pages, Reports und XMLPorts zur Verfügung. Außerdem kann man auf diese Art und Weise alle Funktionen und Spielarten von SQL verwenden, nicht nur diejenigen, die Microsoft für „angemessen“ hält. Der Nachteil dabei ist, dass man sich mit dem SQL Server Management Studio und der originären SQL-Syntax auseinandersetzen muss. Da aber Microsoft vermutlich sowieso darauf abzielt, NAV gegenüber dem SQL Server zu öffnen, steht diese Auseinandersetzung sowieso früher oder später an. Dummerweise ist es nicht möglich, sich mit einem Query-Objekt eine Vorlage zu basteln und dessen SQL-Anweisungen im Klartext auszugeben, um diese dann im SQL-Server als Grundlage für einen View zu verwenden. Das wäre noch einigermaßen komfortabel und ist schon seit Jahren gang und gäbe, siehe den Makro-Recorder für VBA in Microsoft-Office-Produkten.
---
Mit besten Grüßen,
Stefan
Zuletzt geändert von ResMan am 5. April 2013 12:36, insgesamt 1-mal geändert.