OQGRAPH

Da Wikipedia, l'enciclopedia libera.
Jump to navigation Jump to search

OQGRAPH, che sta per OpenQueryGRAPH, è uno storage engine per MySQL e i suoi fork, creato dalla società di consulenze OpenQuery, e in particolare dal suo fondatore Arjen Lentz. È distribuito (e installabile con un comando SQL) in MariaDB e compatibile con Drizzle.

OQGRAPH è uno storage engine solo da un punto di vista tecnico, o formale. In realtà il suo scopo è permettere all'utente di navigare i dati contenuti in una tabella (creata con altri storage engine, come InnoDB o MyISAM) come si navigano i nodi di un grafo orientato o di un albero. Questa famiglia di operazioni sono piuttosto difficili da ottenere in SQL.

La licenza è la GNU GPL versione 2.

Le tabelle OQGRAPH[modifica | modifica wikitesto]

Le tabelle OQGRAPH devono avere tutte la stessa struttura:

CREATE TABLE db.tblname (
    latch   SMALLINT  UNSIGNED NULL,
    origid  BIGINT    UNSIGNED NULL,
    destid  BIGINT    UNSIGNED NULL,
    weight  DOUBLE    NULL,
    seq     BIGINT    UNSIGNED NULL,
    linkid  BIGINT    UNSIGNED NULL,
    KEY (latch, origid, destid) USING HASH,
    KEY (latch, destid, origid) USING HASH
  ) ENGINE=OQGRAPH;

Ogni record di questa tabella rappresenta un arco, un collegamento con direzione tra due nodi. Ad ogni colonna è associato un significato speciale:

  • origid - Il nodo di origine.
  • destid - Il nodo di destinazione.
  • weigth - Il peso del collegamento.
  • latch - Utilizzato dalle SELECT per specificare quali informazioni si desiderano.

Le altre colonne sono utilizzate internamente.

Modifica dei dati[modifica | modifica wikitesto]

Le colonne che possono essere modificate direttamente, tramite INSERT, UPDATE e REPLACE, sono origid, destid e weight. Se non si dà importanza al peso, è sufficiente valorizzare origid e destid.

Lettura dei dati[modifica | modifica wikitesto]

La colonna latch viene invece nominata nella clausola WHERE per far sapere allo storage engine che tipo di informazioni deve restituire. Segue l'elenco dei "comandi" che possono essere usati.

Latch = NULL[modifica | modifica wikitesto]

Lo stesso effetto si ottiene omettendo completamente latch. In questo modo si ottengono i limiti del grafo nelle colonne origid e destid.

Latch = 0[modifica | modifica wikitesto]

In linkid vengono restituiti gli id dei vertici.

Latch = 0 AND origid = N[modifica | modifica wikitesto]

In linkid vengono restituiti gli id dei vertici. In weight viene restituito il peso dei limiti.

Latch = 0 AND destid = N[modifica | modifica wikitesto]

In linkid vengono restituiti gli id dei vertici. In weight viene restituito il peso dei limiti.

Latch = 1[modifica | modifica wikitesto]

Ricerca con l'algoritmo del percorso più breve.

Latch = 2[modifica | modifica wikitesto]

Ricerca con l'algoritmo beadth-first.

Voci correlate[modifica | modifica wikitesto]

Collegamenti esterni[modifica | modifica wikitesto]

Software libero Portale Software libero: accedi alle voci di Wikipedia che trattano di Software libero