2016-10-05 9 views
3

Y a-t-il un moyen de faire en sorte que deux processus KDB référencent une table en lecture seule chargée dans la mémoire principale? Ils devraient être capables de le lire indépendamment les uns des autres. L'exigence est de charger les données du disque une fois. Je suis venu avec une solution maladroite de démarrer un Q (producteur) pour charger la table et le reste des processus Q (consommateurs) se connectant localement et tirant la table sur la socket. En bref, j'essaie de multi-traiter mes requêtes select. MerciTable de partage KDB en mémoire

+2

Pouvez-vous commencer le processus avec un port négatif ? Est-ce ce que vous cherchez http://code.kx.com/wiki/Cookbook/MultithreadedInputMode – Chromozorz

+0

Chromozorz - merci. Je vais vérifier cela. J'ai pensé à des processus KDB individuels démarrés sur le même serveur (nœud) en utilisant des données de mémoire partagée. tablette. – Vortex

+0

Super, laissez-moi savoir si c'est ce que vous cherchez. Sinon, je vais poster une réponse. Cheers – Chromozorz

Répondre

1

Oui.

mmaps KDB sur get, ont donc simplement un noyau construire votre table et save il (le cas échéant splayed), puis dire aux autres tables pour l'obtenir:

`:table set build_table ([] ...); 
other_cores @\: ({table:get x};`:table);