Question

J'ai accès à un temps réel KDB serveur qui a des tables avec de nouvelles données arrivent à chaque milliseconde.

Actuellement, je suis juste en utilisant une méthode naïve qui est fondamentalement comme:

.z.ts:{
    newData: getNewData[];   / get data arriving in the last second
    data::data uj newData;
};
\t 100;

pour s'assurer que mes données (nommé data) est constamment mis à jour.

Cependant, l' uj est très lent (probablement due à la constante redistribution de la mémoire) et d'interrogation est tout simplement maladroit.

Je l'ai entendu de la KDB est destiné à être bon à la manipulation de ce genre de streaming données de tiques, est si il ya une meilleure façon?Peut-être certains pousser méthode de base sans la nécessité pour uj?

Était-ce utile?

La solution

Plutôt que d'interrogation.Utilisation kdb+cochez la publier abonné architecture pour kdb+.

Autres conseils

Si il est en temps réel, sans doute, il y a un tickerplant de la nourrir.Vous pouvez vous abonner à la tickerplant:

.u.sub[`;`];

Cela signifie que sous toutes les tables, tous les symboles.Le résultat de l'appel est un tableau où 0e élément est le nom de la table et le 1er élément est que les données actuelles de la tickerplant tient de cette table (généralement vide ou un petit nombre de lignes).Le tickerplant ensuite le cache de la poignée de votre kdb instance et de continuer à envoyer des données.MAIS il suppose qu'il existe une upd fonction sur votre kdb instance qui peut traiter la demande.

upd:{[t;x] t insert x}

OU

upd:insert

(même chose)

L'upd fonction est appelée avec un tableau nom du symbole (t) et les données à insérer dans la (x).

Ainsi, une bonne mise en œuvre directe globale serait:

upd:insert;
@[`.;:;t:.u.sub[`;`][0];t[1]];  //set result of sub to t, set t to t[1] (initial result)
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top