kdb kx

Data Flow

Starting from the front-end, when a user connects:

  • The user downloads a modern single page react based application that uses a modern fast charting library to provide animated charts
  • When a dashboard is opened, it opens a websocket to allow real-time fast updates from the server.
  • The server controls security, authentication and data access controls.
  • The server can connect to either real-time or database data sources depending on the dashboard configuration:
  • Databases
    • You have existing data in a MySQL/PostgreSQL/kdb+ or any JDBC compatible database.
    • The server will poll the data on a schedule the author has set, only taking action on changes.
  • Real-Time
    • You have real-time data producers in Java/Python/C#
    • You publish the data to either a QDB or KDB database.
      QDB is faster/easier and preferred but currently only supports smaller data sets.
    • The server will create a new thread per client that subscribes to that external source.
    • The real-time QDB/KDB will push updates to the server and onwards to the client.

Security Plugins

The server can be configured to check HTTP endpoints for authentication and authorization.

  • Authentication Endpoint e.g.
    http://qdb-master.com/?.z.pw[((username));((password))]
    is queried each time a new user logs in. .z.pw can either return true/false to say yes/no OR it can return the name of a role, that role will be assigned to the user. Assuming the are positively authenticated the server will issue them a token that allows continued access for a time-period without needing to call the REST API every time.
  • Authorization Endpoint e.g.
    http://qdb-master.com/?isAuthorized[((username));((dashboardName))]
    is queried each time the user requests to open a dashboard. If it returns true access is granted, anything else is assumed to be false.