RDM 12.0中的新數據類型:十進制

4 月 22

Raima徽標在灰色的背景上

除其他新功能外,Raima還在RDM 12.0中引入了新的數據類型。這些新數據類型之一是定點十進制類型。大多數開發人員都熟悉任何現代編程語言中可用的整數和浮點類型,並且它們具有廣泛的用途,但是在某些情況下,它們並不理想,例如貨幣值,在所有情況下都需要精確值十進制數字。

另外,某些環境可能沒有浮點硬件,並且軟件實現可能會在性能方面過於昂貴。 RDM已經支持常規整數(長8位,16位,32位和64位)以及浮點(長32位和64位)類型,並且增加了新的十進制定點類型,進一步完善了該功能。將數字存儲在數據庫中。

RDM的新十進制類型實現為BCD(二進制編碼的十進制),其中每個數字以4位存儲在數據庫中,這意味著數據庫中的一個存儲字節可以容納兩位,但該字段的第一個字節在前4位中包含符號標誌,然後在後4位中包含第一個數字。當存儲在數據庫中時,這需要等於精度(最大十進制數字位數)除以2(四捨五入)再加上一個字節的字節數。因此,精度為10(最多10個數字)的十進制值需要6個字節((10/2)+1 = 6)。此格式是十進制值的壓縮版本,最適合存儲在數據庫中。

不幸的是,這種壓縮格式並不適合用於算術計算。在進行計算時,分別處理每個十進制數字要容易得多,而當兩個數字在同一個字節中時,這並不是很方便。因此,我們有一個十進制類型的解壓縮版本。以這種格式,每個數字使用一個完整的字節。此外,由於部分計算可能會超出數據庫的精度或小數位數(小數位數是在小數點右邊指定的位數),因此,請確保有足夠的空間用於最大精度和小數位數。因此,這種格式為優化計算時間而交換了空間。

RDM中新的十進制數據類型將兩種格式結合在一起。數據庫中存儲的是打包版本。插入或更新時應用程序期望的是什麼,讀取時返回給應用程序的是解壓縮的類型。 RDM系統負責在兩者之間進行轉換。此外,還有一個用於處理這些十進制值的API(以“ bcd_”開頭的函數)。這包括用於對十進制值進行加,減,乘和除的功能,以及用於更改符號,取整以及進行下限和上限操作的功能。當然,還有一些函數可以在字符串和其他數字類型之間來迴轉換。

但是,某些應用程序將不需要完整的解壓縮類型,例如,當不需要對從數據庫檢索到的值進行任何計算時。在這種情況下,可以使用其他十進制類型-打包的十進制類型。顧名思義,應用程序將提供給RDM系統或從中獲取的數據已經是其打包格式。此類型可用於避免RDM系統在輸入中打包十進制類型並在輸出中解壓縮十進制類型的成本。

請注意,兩種不同的十進制類型的可用性僅適用於Core級別的數據庫。 SQL只處理解壓縮的版本,但這是因為SQL是一種通用語言,在這種語言中,臨時查詢可能需要對從數據庫中檢索到的值進行操作,而解壓縮的格式可以簡化此過程。這也意味著,如果您打算使用SQL,則應僅選擇解壓縮格式。
無論使用哪種格式,新的十進制數據類型都將提供比以前更大的能力來處理數據庫中的數字值,從而為應用程序開發人員提供更多選擇。

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.