Nuevos tipos de datos en RDM 12.0: decimal

abril 22

Logotipo de Raima sobre fondo gris

Junto con otras características nuevas, Raima está introduciendo nuevos tipos de datos en RDM 12.0. Uno de estos nuevos tipos de datos es el tipo decimal de coma fija. La mayoría de los desarrolladores están familiarizados con los tipos enteros y de punto flotante disponibles en cualquier lenguaje de programación moderno y estos tienen una amplia variedad de usos, pero hay ciertas situaciones en las que no son ideales, como los valores monetarios, donde se requieren valores exactos en todos. dígitos decimales.

Además, algunos entornos pueden no tener hardware de punto flotante y las implementaciones de software pueden ser demasiado costosas en cuanto al rendimiento. RDM ya tiene soporte para enteros regulares (8, 16, 32 y 64 bits de longitud), así como tipos de punto flotante (32 y 64 bits de longitud) y la adición del nuevo tipo decimal de coma fija completa la capacidad. para almacenar números en la base de datos.

El nuevo tipo decimal de RDM se implementa como un BCD (decimal codificado en binario), donde cada dígito se almacena en la base de datos en 4 bits, lo que significa que un byte de almacenamiento en la base de datos puede contener dos dígitos, pero el primer byte del campo contiene la bandera de signo en los primeros 4 bits, seguida del primer dígito en los segundos 4 bits. Cuando se almacena en la base de datos, esto requiere un número de bytes igual a la precisión (el número máximo de dígitos decimales) dividido por dos (redondeado hacia abajo), más uno más. Por lo tanto, un valor decimal con precisión 10 (hasta 10 dígitos en total) requiere 6 bytes ((10/2) + 1 = 6). Este formato es la versión empaquetada del valor decimal que es óptimo para el almacenamiento en la base de datos.

Desafortunadamente, este formato empaquetado no es ideal para su uso en cálculos aritméticos. Al hacer cálculos, es mucho más fácil tratar con cada dígito decimal por separado, y eso no es muy conveniente cuando dos dígitos están en el mismo byte. Por lo tanto, tenemos una versión descomprimida del tipo decimal. En este formato, cada dígito utiliza un byte completo. Además, debido a que partes del cálculo pueden exceder la precisión o escala de la base de datos (la escala es el número de dígitos especificado a la derecha del punto decimal), nos aseguramos de que haya suficiente espacio para la máxima precisión y escala. Por lo tanto, este formato intercambia espacio por un tiempo de cálculo optimizado.

El nuevo tipo de datos decimales en RDM combina los dos formatos. Lo que se almacena en la base de datos es la versión empaquetada. Lo que se espera de la aplicación al insertar o actualizar y lo que se devuelve a la aplicación en una lectura es el tipo desempaquetado. El sistema RDM se encarga de convertir entre los dos. Además, hay una API (funciones que comienzan con 'bcd_') para tratar estos valores decimales. Esto incluye funciones para sumar, restar, multiplicar y dividir valores decimales junto con funciones para cambiar el signo, redondear y realizar las operaciones de piso y techo. Y, por supuesto, hay funciones para convertir desde y hacia cadenas y otros tipos de números.

Sin embargo, algunas aplicaciones no necesitarán el tipo descomprimido completo, como cuando no se van a realizar cálculos en los valores recuperados de la base de datos. En este caso, está disponible un tipo decimal alternativo: el tipo decimal empaquetado. Como su nombre lo indica, los datos que la aplicación le dará y obtendrá del sistema RDM ya estarán en su formato empaquetado. Este tipo se puede usar para evitar el costo de que el sistema RDM empaque el tipo decimal en la entrada y lo descomprima en la salida.

Tenga en cuenta que la disponibilidad de dos tipos decimales diferentes solo se aplica a las bases de datos de nivel Core. SQL solo maneja la versión descomprimida, pero esto se debe a que SQL es un lenguaje de propósito general donde una consulta ad hoc puede necesitar realizar operaciones en los valores recuperados de la base de datos y el formato descomprimido es el que simplifica esto. Esto también significa que si planea usar SQL, solo debe seleccionar el formato descomprimido.
Independientemente del formato que utilice, el nuevo tipo de datos decimales proporcionará más capacidad para manejar valores numéricos en la base de datos que la que existía antes, dando más opciones al desarrollador de aplicaciones.

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.