Les jointures peuvent-elles être parallélisées?

9

Supposons que nous voulons joindre deux relations sur un prédicat. Est-ce en NC?

Je me rends compte qu'une preuve qu'il n'est pas en NC équivaudrait à une preuve que PNC , donc j'accepterais comme preuve un problème ouvert comme réponse.

Je m'intéresse au cas général ainsi qu'aux cas spécifiques (par exemple avec une structure de données spécifique, il peut être parallélisé).

EDIT: pour apporter quelques clarifications des commentaires dans ce post:

  • Nous pourrions envisager une équijointure UNE.X=B.y . Sur un seul processeur, un algorithme basé sur le hachage s'exécute en O(|UNE|+|B|) et c'est le mieux que nous puissions faire car nous devons lire chaque ensemble
  • Si le prédicat est une "boîte noire" où nous devons vérifier chaque paire, il y a |UNE||B|paires, et chacun pourrait être ou non, donc 2uneb possibilités. Vérifier chaque paire divise les possibilités en deux, donc le mieux que nous puissions faire est O(uneb) .

L'un de ceux-ci (ou un troisième type de jointure) pourrait-il être amélioré pour se sur plusieurs processeurs?Journalkn

Xodarap
la source
Si cette question est motivée par un problème pratique, gardez à l'esprit que NC n'est peut-être pas la notion la plus appropriée de "parallélisable".
Raphael
@Raphael: ce n'est pas le cas, mais pourriez-vous créer un lien vers quelque chose expliquant pourquoi? Je peux poser cette question séparément si cela est plus approprié.
Xodarap
Pour moi, ce que vous demandez n'est pas clair. Quel est le langage de requête de base de données relationnelle de base auquel vous ajoutez l'opérateur de jointure? Ou demandez-vous la complexité des requêtes qui ne contiennent que des opérateurs de jointure? Ou votre vraie question est de savoir s'il est possible d'exécuter des opérateurs de jointure "en parallèle" pour obtenir une meilleure complexité temporelle? (similaire à la façon dont AND peut être fait en parallèle) Notez également que les requêtes SQL (sûres) correspondent à FOL (Count).
Kaveh
Ou demandez-vous quelles sont les bornes supérieure et inférieure les plus connues (classes de complexité) sur la complexité du calcul de la jointure en fonction de deux bases de données relationnelles en entrée.
Kaveh
2
@Xodarap: Vous pourriez trouver les réponses et les commentaires sur cette question à moi instructifs; Je sais que je l'ai fait. Kruskal et al. (1990) est également une bonne lecture.
Raphael

Réponses:

1

processeurs peuvent tout comparer ( nn2 possibilités en profondeur constante, donc oui c'est en NC.(n2)

Xodarap
la source
Si vous allez prendre OU, la profondeur sera logarithmique.
sdcvvc
@sdcvvc: Assez juste. À l'extrême, vous pourriez encoder 3SAT dans le calcul relationnel, donc ce résultat ne tient vraiment que si vos sélections sont simples (c'est-à-dire à temps constant).
Xodarap