Arquitectura KDB +

Kdb + es una base de datos de alto rendimiento y gran volumen diseñada desde el principio para manejar enormes volúmenes de datos. Es completamente de 64 bits y tiene un procesamiento de múltiples núcleos y subprocesos múltiples integrados. Se utiliza la misma arquitectura para datos históricos y en tiempo real. La base de datos incorpora su propio lenguaje de consulta potente,q, para que los análisis se puedan ejecutar directamente en los datos.

kdb+tick es una arquitectura que permite la captura, procesamiento y consulta de datos históricos y en tiempo real.

Arquitectura de Kdb + / tick

La siguiente ilustración proporciona un esquema generalizado de una arquitectura típica de Kdb + / tick, seguida de una breve explicación de los diversos componentes y el flujo de datos.

  • los Data Feeds son datos de series de tiempo que son proporcionados principalmente por proveedores de alimentación de datos como Reuters, Bloomberg o directamente de los intercambios.

  • Para obtener los datos relevantes, los datos de la fuente de datos son analizados por el feed handler.

  • Una vez que el gestor de feeds analiza los datos, estos pasan al ticker-plant.

  • Para recuperar datos de cualquier falla, la planta de ticker primero actualiza / almacena los nuevos datos en el archivo de registro y luego actualiza sus propias tablas.

  • Después de actualizar las tablas internas y los archivos de registro, los datos de bucle en tiempo se envían / ​​publican continuamente a la base de datos en tiempo real y a todos los suscriptores encadenados que solicitaron datos.

  • Al final de un día hábil, el archivo de registro se elimina, se crea uno nuevo y la base de datos en tiempo real se guarda en la base de datos histórica. Una vez que todos los datos se guardan en la base de datos histórica, la base de datos en tiempo real depura sus tablas.

Componentes de la arquitectura Kdb + Tick

Fuentes de datos

Las fuentes de datos pueden ser datos de cualquier mercado u otra serie temporal. Considere las fuentes de datos como la entrada sin procesar para el gestor de fuentes. Las fuentes pueden ser directamente del intercambio (transmisión de datos en vivo), de los proveedores de noticias / datos como Thomson-Reuters, Bloomberg o cualquier otra agencia externa.

Manipulador de alimentos

Un controlador de feeds convierte el flujo de datos en un formato adecuado para escribir en kdb +. Está conectado a la fuente de datos y recupera y convierte los datos del formato específico de la fuente en un mensaje Kdb + que se publica en el proceso de la planta de ticker. Generalmente, un manipulador de alimentos se utiliza para realizar las siguientes operaciones:

  • Capture datos de acuerdo con un conjunto de reglas.
  • Traduzca (/ enriquezca) esos datos de un formato a otro.
  • Capture los valores más recientes.

Planta de teletipo

Ticker Plant es el componente más importante de la arquitectura KDB +. Es la planta de ticker con la que se conecta la base de datos en tiempo real o directamente suscriptores (clientes) para acceder a los datos financieros. Opera enpublish and subscribemecanismo. Una vez que obtiene una suscripción (licencia), se define una publicación de marca (rutinaria) del editor (planta de ticker). Realiza las siguientes operaciones:

  • Recibe los datos del gestor de feeds.

  • Inmediatamente después de que la planta de ticker recibe los datos, almacena una copia como un archivo de registro y lo actualiza una vez que la planta de ticker recibe alguna actualización para que, en caso de cualquier falla, no tengamos ninguna pérdida de datos.

  • Los clientes (suscriptores en tiempo real) pueden suscribirse directamente a la planta de ticker.

  • Al final de cada día hábil, es decir, una vez que la base de datos en tiempo real recibe el último mensaje, almacena todos los datos de hoy en la base de datos histórica y los envía a todos los suscriptores que se han suscrito a los datos de hoy. Luego restablece todas sus tablas. El archivo de registro también se elimina una vez que los datos se almacenan en la base de datos histórica o en otro suscriptor directamente vinculado a la base de datos en tiempo real (rtdb).

  • Como resultado, la planta de cotizaciones, la base de datos en tiempo real y la base de datos histórica están operativas las 24 horas del día, los 7 días de la semana.

Dado que el ticker-plant es una aplicación Kdb +, sus tablas se pueden consultar usando qcomo cualquier otra base de datos Kdb +. Todos los clientes de la planta de ticker solo deben tener acceso a la base de datos como suscriptores.

Base de datos en tiempo real

Una base de datos en tiempo real (rdb) almacena los datos de hoy. Está conectado directamente a la planta de teletipo. Normalmente, se almacena en la memoria durante las horas de mercado (un día) y se escribe en la base de datos histórica (hdb) al final del día. Como los datos (datos rdb) se almacenan en la memoria, el procesamiento es extremadamente rápido.

Como kdb + recomienda tener un tamaño de RAM cuatro o más veces el tamaño esperado de datos por día, la consulta que se ejecuta en rdb es muy rápida y proporciona un rendimiento superior. Dado que una base de datos en tiempo real contiene solo datos de hoy, la columna de fecha (parámetro) no es necesaria.

Por ejemplo, podemos tener consultas rdb como,

select from trade where sym = `ibm

OR

select from trade where sym = `ibm, price > 100

Base de datos histórica

Si tenemos que calcular las estimaciones de una empresa, necesitamos tener sus datos históricos disponibles. Una base de datos histórica (hdb) contiene datos de transacciones realizadas en el pasado. El registro de cada nuevo día se agregaría al hdb al final del día. Las tablas grandes en el hdb se almacenan divididas (cada columna se almacena en su propio archivo) o se almacenan divididas por datos temporales. Además, algunas bases de datos muy grandes pueden dividirse aún más utilizandopar.txt (archivo).

Estas estrategias de almacenamiento (distribuidas, particionadas, etc.) son eficientes al buscar o acceder a los datos de una tabla grande.

Una base de datos histórica también se puede utilizar para fines de informes internos y externos, es decir, para análisis. Por ejemplo, supongamos que queremos obtener las operaciones de la empresa de IBM para un día en particular a partir del nombre de la tabla de operaciones (o cualquier otro), necesitamos escribir una consulta de la siguiente manera:

thisday: 2014.10.12

select from trade where date = thisday, sym =`ibm

Note - Escribiremos todas esas consultas una vez que obtengamos una descripción general de q idioma.