Enseñar nuevos trucos a un perro viejo

septiembre 10

Logotipo de Raima sobre fondo gris

RDM se introdujo por primera vez a mediados de la década de 1980 con el nombre de dbVista. Esa versión original del software RDM, diseñada para el hardware y los sistemas operativos disponibles en esos tiempos, tiene relativamente poco en común con la versión actual de RDM. A lo largo de los años, el producto se ha mejorado con la funcionalidad que necesita el mercado de software en constante cambio. Se ha agregado capacidad multiusuario, el motor se hizo seguro para subprocesos y luego reentrante, se agregaron nuevas interfaces de programación (SQL, ODBC, ADO.Net, Objective-C, C ++), pero lo único que se ha mantenido constante a través de Los casi 30 años de vida de RDM son la API C principal.

Lo más probable es que el código de acceso a la base de datos de un programa dbVista desarrollado en la década de 1980 pueda compilarse con RDM 12.0 con actualizaciones mínimas. Se han agregado cosas, pero la interfaz central se ha mantenido constante durante todos esos años.

La principal razón por la que la API central de RDM se ha mantenido constante a lo largo de los años es que fue diseñada para satisfacer las necesidades de los desarrolladores tanto antes como ahora. Sin embargo, recientemente decidimos realizar un ejercicio para descubrir cómo se vería la interfaz RDM Core si estuviéramos diseñando por primera vez hoy. Los parámetros de nuestro diseño eran que la nueva API tenía que ser compatible con nuestro formato de archivo actual y no debería tener nada que ver con SQL. Este ejercicio se encargó a un equipo de dos, uno era un ingeniero con 15 años de experiencia trabajando en y con el motor RDM, el otro un ingeniero senior que nunca había trabajado en RDM o con él. El resultado de la colaboración es la nueva interfaz basada en Cursor que se está introduciendo con el lanzamiento de RDM 12.0. Esta nueva interfaz de Cursor no reemplaza la interfaz original, que todavía está disponible y se mantendrá. Es una interfaz alternativa que puede hacer todo lo que la interfaz original puede hacer de una manera limpia e intuitiva.

Como puede adivinarse por el nombre, nuestra nueva interfaz se basa en el concepto de cursores o colecciones de registros. Se accede a estos cursores mediante una interfaz de estilo iterador. Solicita un cursor en una tabla y luego recorre los registros en ese cursor. El cursor puede contener todos los registros de la tabla o puede contener solo un subconjunto de los registros. El poder de la interfaz es que mientras un cursor puede basarse en varias cosas, admitimos cinco tipos distintos de cursores, todos los cursores a los que se accede con exactamente el mismo conjunto de API.

Los cinco tipos de cursor disponibles en RDM 12.0 son

  • Record Scan Cursor: una colección de todos los registros de un solo tipo en el orden de la base de datos sin procesar
  • Cursor de exploración de teclas: una colección de todos los registros de un solo tipo en orden de índice
  • Cursor de rango clave: una colección de registros de un solo tipo dentro de un rango de valores de índice ordenados por valor de índice
  • Set Scan Cursor: una colección de registros relacionados (el tamaño de varios conjuntos de una relación de uno a varios)
  • Cursor singleton: un cursor que contiene un solo registro

Cuando solicita un Cursor, tiene la opción de especificar dónde se colocará inicialmente el cursor. Un cursor se puede colocar inicialmente en una dirección de base de datos en particular, un valor de índice en particular o en una ubicación antes de cualquiera de los registros de la colección ('BeforeFirst'). Una vez que se ha creado el cursor, existen funciones de iterador para posicionarse a través de la colección de registros en el cursor (dc_fist, dc_next, dc_prev y dc_last). Si no desea navegar en serie a través de un cursor, puede colocar el cursor por dirección de base de datos (dc_findByDBA) o valor de índice / hash (dc_findByKey). Una vez que el cursor está posicionado, puede realizar las operaciones típicas CRUD de la base de datos (Creación, Eliminación, Actualización y Recuperación) en el registro en el que está posicionado el cursor. Dado que la API del cursor se basa en el motor RDM, también hay funciones de cursor para administrar conjuntos de modelos de red. Puede agregar un miembro a un conjunto (dc_addMember / dc_connect) y eliminar miembros de los conjuntos (dc_removeMember / dc_disconnect). Todo lo que sea posible con la API central se puede hacer con la API del cursor y, en muchos casos, se puede hacer con menos llamadas a la API. Además de estas operaciones, todas las cuales son posibles con la API central, la API del cursor agrega un poderoso conjunto de nuevas operaciones. La capacidad de determinar la posición de un cursor y comparar la posición de un cursor con otro cursor.

Ya sea que sea nuevo en RDM o lo esté mirando por primera vez, le sugiero que eche un vistazo a la API del cursor en RDM 12.0. Es una interfaz potente e intuitiva para el mejor motor de datos integrado del mercado.

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.