Neue Datentypen in RDM 12.0: Dezimal

April 22

Raima-Logo auf grauem Hintergrund

Zusammen mit anderen neuen Funktionen führt Raima neue Datentypen in RDM 12.0 ein. Einer dieser neuen Datentypen ist der Festkomma-Dezimaltyp. Die meisten Entwickler sind mit den Ganzzahl- und Gleitkommatypen vertraut, die in jeder modernen Programmiersprache verfügbar sind, und diese haben eine Vielzahl von Verwendungsmöglichkeiten. Es gibt jedoch bestimmte Situationen, in denen diese nicht ideal sind, z. B. Geldwerte, in denen insgesamt genaue Werte erforderlich sind Dezimalziffern.

Darüber hinaus verfügen einige Umgebungen möglicherweise nicht über Gleitkomma-Hardware- und Software-Implementierungen, die hinsichtlich der Leistung möglicherweise zu kostspielig sind. RDM unterstützt bereits reguläre Ganzzahltypen (8, 16, 32 und 64 Bit lang) sowie Gleitkommatypen (32 und 64 Bit lang), und die Hinzufügung des neuen dezimalen Festkommatyps rundet die Fähigkeit ab um Nummern in der Datenbank zu speichern.

Der neue Dezimaltyp von RDM wird als BCD (Binary-Coded Decimal) implementiert, wobei jede Ziffer in 4 Bit in der Datenbank gespeichert wird. Dies bedeutet, dass ein Speicherbyte in der Datenbank zwei Ziffern enthalten kann, jedoch das erste Byte des Felds enthält das Vorzeichen-Flag in den ersten 4 Bits, gefolgt von der ersten Ziffer in den zweiten 4 Bits. Bei der Speicherung in der Datenbank ist eine Anzahl von Bytes erforderlich, die der Genauigkeit (der maximalen Anzahl von Dezimalstellen) entspricht, geteilt durch zwei (abgerundet) plus eine weitere. Ein Dezimalwert mit einer Genauigkeit von 10 (bis zu 10 Gesamtziffern) erfordert also 6 Bytes ((10/2) + 1 = 6). Dieses Format ist die gepackte Version des Dezimalwerts, die für die Speicherung in der Datenbank optimal ist.

Leider ist dieses gepackte Format nicht ideal für die arithmetische Berechnung. Bei Berechnungen ist es viel einfacher, jede Dezimalstelle einzeln zu behandeln, und das ist nicht sehr praktisch, wenn sich zwei Ziffern im selben Byte befinden. Wir haben also eine entpackte Version des Dezimaltyps. In diesem Format verwendet jede Ziffer ein Vollbyte. Da Teile der Berechnung die Genauigkeit oder Skalierung der Datenbank überschreiten können (Skalierung ist die Anzahl der Stellen rechts vom Dezimalpunkt), stellen wir außerdem sicher, dass genügend Platz für die maximale Genauigkeit und Skalierung vorhanden ist. Somit tauscht dieses Format Platz gegen optimierte Rechenzeit.

Der neue Dezimaldatentyp in RDM kombiniert die beiden Formate. Was in der Datenbank gespeichert ist, ist die gepackte Version. Was beim Einfügen oder Aktualisieren von der Anwendung erwartet wird und was beim Lesen an die Anwendung zurückgegeben wird, ist der entpackte Typ. Das RDM-System sorgt für die Konvertierung zwischen beiden. Zusätzlich gibt es eine API (Funktionen, die mit 'bcd_' beginnen) für den Umgang mit diesen Dezimalwerten. Dies umfasst Funktionen zum Addieren, Subtrahieren, Multiplizieren und Dividieren von Dezimalwerten sowie Funktionen zum Ändern des Vorzeichens, Runden und Ausführen der Boden- und Deckenoperationen. Und natürlich gibt es Funktionen zum Konvertieren in und von Zeichenfolgen und anderen Zahlentypen.

Einige Anwendungen benötigen jedoch nicht den vollständig entpackten Typ, z. B. wenn keine Berechnungen für die aus der Datenbank abgerufenen Werte durchgeführt werden sollen. In diesem Fall steht ein alternativer Dezimaltyp zur Verfügung - der gepackte Dezimaltyp. Wie der Name schon sagt, haben die Daten, die die Anwendung an das RDM-System weitergibt und von diesem erhält, bereits das gepackte Format. Dieser Typ kann verwendet werden, um die Kosten zu vermeiden, die entstehen, wenn das RDM-System den Dezimaltyp bei der Eingabe packt und bei der Ausgabe entpackt.

Beachten Sie, dass die Verfügbarkeit von zwei verschiedenen Dezimaltypen nur für Datenbanken auf Kernebene gilt. SQL verarbeitet nur die entpackte Version. Dies liegt jedoch daran, dass SQL eine Allzwecksprache ist, in der eine Ad-hoc-Abfrage möglicherweise Operationen mit den aus der Datenbank abgerufenen Werten ausführen muss und das entpackte Format dies vereinfacht. Dies bedeutet auch, dass Sie, wenn Sie SQL verwenden möchten, nur das entpackte Format auswählen sollten.
Unabhängig davon, welches Format Sie verwenden, bietet der neue Dezimaldatentyp mehr Möglichkeiten für die Verarbeitung von Zahlenwerten in der Datenbank als zuvor und bietet dem Anwendungsentwickler mehr Optionen.

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.