Einem alten Hund neue Tricks beibringen

September 10

Raima-Logo auf grauem Hintergrund

RDM wurde erstmals Mitte der 1980er Jahre unter dem Namen dbVista eingeführt. Diese Originalversion der RDM-Software, die für die damals verfügbare Hardware und Betriebssysteme entwickelt wurde, hat mit der aktuellen Version von RDM relativ wenig gemeinsam. Im Laufe der Jahre wurde das Produkt um Funktionen erweitert, die der sich ständig ändernde Softwaremarkt benötigt. Es wurden Mehrbenutzerfunktionen hinzugefügt, die Engine wurde threadsicher gemacht und dann wiedereintrittsfähig. Es wurden neue Programmierschnittstellen hinzugefügt (SQL, ODBC, ADO.Net, Objective-C, C ++), aber das einzige, was durchgehend konstant geblieben ist Die fast 30-jährige Lebensdauer von RDM ist die zentrale C-API.

Es besteht die Möglichkeit, dass der Datenbankzugriffscode eines in den 1980er Jahren entwickelten dbVista-Programms mit minimalen Aktualisierungen mit RDM 12.0 kompiliert werden kann. Dinge wurden hinzugefügt, aber die Kernschnittstelle ist in all den Jahren konsistent geblieben.

Der Hauptgrund dafür, dass die Kern-API von RDM über die Jahre hinweg konstant geblieben ist, ist, dass sie auf die Bedürfnisse von Entwicklern damals und heute zugeschnitten ist. Wir haben uns jedoch kürzlich entschlossen, eine Übung durchzuführen, um herauszufinden, wie die RDM Core-Schnittstelle aussehen würde, wenn wir heute zum ersten Mal entwerfen würden. Die Parameter unseres Designs waren, dass die neue API mit unserem aktuellen Dateiformat kompatibel sein musste und nichts mit SQL zu tun haben sollte. Ein Team von zwei Personen wurde mit dieser Übung beauftragt, einer ein Ingenieur mit 15 Jahren Erfahrung in der Arbeit mit und mit dem RDM-Motor, der andere ein leitender Ingenieur, der noch nie an oder mit RDM gearbeitet hatte. Das Ergebnis der Zusammenarbeit ist die neue Cursor-basierte Schnittstelle, die mit der Veröffentlichung von RDM 12.0 eingeführt wird. Diese neue Cursor-Oberfläche ersetzt nicht die ursprüngliche Schnittstelle, die noch verfügbar ist und beibehalten wird. Es ist eine alternative Benutzeroberfläche, die in der Lage ist, alles, was die ursprüngliche Benutzeroberfläche kann, auf saubere und intuitive Weise zu tun.

Wie der Name vermuten lässt, basiert unsere neue Benutzeroberfläche auf dem Konzept von Cursorn oder Sammlungen von Datensätzen. Auf diese Cursor wird über eine Schnittstelle im Iteratorstil zugegriffen. Sie fordern einen Cursor in einer Tabelle an und durchlaufen dann die Datensätze in diesem Cursor. Der Cursor kann jeden Datensatz in der Tabelle enthalten oder nur eine Teilmenge der Datensätze. Die Stärke der Schnittstelle besteht darin, dass ein Cursor zwar auf mehreren Dingen basieren kann, wir jedoch fünf verschiedene Arten von Cursorn unterstützen, auf die alle Cursor mit genau demselben Satz von APIs zugreifen.

Die fünf in RDM 12.0 verfügbaren Cursortypen sind:

  • Datensatz-Scan-Cursor - Eine Sammlung aller Datensätze eines einzelnen Typs in der Reihenfolge der Rohdatenbank
  • Key Scan Cursor - Eine Sammlung aller Datensätze eines einzelnen Typs in Indexreihenfolge
  • Schlüsselbereichscursor - Eine Sammlung der Datensätze eines einzelnen Typs innerhalb eines nach Indexwerten geordneten Indexwertbereichs
  • Set Scan Cursor - eine Sammlung zusammengehöriger Datensätze (die Größe einer Eins-zu-Viele-Set-Beziehung)
  • Singleton-Cursor - Ein Cursor, der einen einzelnen Datensatz enthält

Wenn Sie einen Cursor anfordern, können Sie festlegen, wo der Cursor ursprünglich positioniert werden soll. Ein Cursor kann anfänglich auf eine bestimmte Datenbankadresse, einen bestimmten Indexwert oder an einer Stelle vor einem der Datensätze in der Sammlung positioniert werden ('BeforeFirst'). Sobald der Cursor erstellt wurde, gibt es Iteratorfunktionen, mit denen Sie sich in der gesamten Sammlung von Datensätzen im Cursor positionieren können (dc_fist, dc_next, dc_prev und dc_last). Wenn Sie nicht seriell durch einen Cursor navigieren möchten, können Sie den Cursor nach Datenbankadresse (dc_findByDBA) oder Index- / Hashwert (dc_findByKey) positionieren. Sobald der Cursor positioniert ist, können Sie die typischen Datenbank-CRUD-Operationen (Erstellen, Löschen, Aktualisieren und Abrufen) für den Datensatz ausführen, auf dem der Cursor positioniert ist. Da die Cursor-API auf der RDM-Engine basiert, gibt es auch Cursorfunktionen zum Verwalten von Netzwerkmodellsätzen. Sie können einem Set ein Mitglied hinzufügen (dc_addMember / dc_connect) und Mitglieder aus Sets entfernen (dc_removeMember / dc_disconnect). Alles, was mit der Kern-API möglich ist, kann mit der Cursor-API und in vielen Fällen mit weniger API-Aufrufen ausgeführt werden. Zusätzlich zu diesen Operationen, die alle mit der Kern-API möglich sind, fügt die Cursor-API eine Reihe leistungsstarker neuer Operationen hinzu. Die Fähigkeit, die Position eines Cursors zu bestimmen und die Position eines Cursors mit einem anderen Cursor zu vergleichen.

Unabhängig davon, ob Sie RDM noch nicht kennen oder es zum ersten Mal betrachten, empfehlen wir Ihnen, sich die Cursor-API in RDM 12.0 anzusehen. Es ist eine leistungsstarke und intuitive Schnittstelle zur besten Embedded Data Engine auf dem Markt.

Get notified about new RDM updates

Be the first to know about new Raima Database Manager updates when they go live, use cases, industry trends and more.