2015-04-21 18 views
8

Sto lavorando a un progetto Web con PostgreSQL come database. Sto cercando di costruire una struttura dei database del web che includa una tabella del modello di spazio vettoriale. Ho creato una tabella con l'attributo terms e docId[] dove docId è l'ID del documento del termine. il tipo di docId è intero []. Quindi posso inserire un termine con l'elenco dei documenti che include il termine in un singolo array. Ma la serie di termini del docId forse conterrà molte voci.limitazione dimensioni/lunghezza del tipo di array in PostgreSQL

quindi la mia domanda è: quante dimensioni massime di array una dimmension in postgres?

grazie :)

risposta

8

C'è lo no size limit sugli array Postgres. Ci devono essere limiti sulla dimensione di righe o colonne, ma ciò dovrebbe essere eseguito in milioni di voci.

Un altro modo SQL per correlare il termine al documento è una relazione da 1 a molti. Questo viene implementato come:

table term: columns term_id, term, document_id 
table document: columns document_id, summary, ... 

La colonna document_id nella tabella term si chiama una chiave esterna.

+1

"ci devono essere dei limiti per le dimensioni di righe o colonne, ma che verrebbero eseguite in milioni di voci" - se tu perdonerebbe un eclatante "ben fatto": c'è un limite rigido di 1.600 colonne per tabella, e quel limite include le colonne che sono state cancellate: http://stackoverflow.com/a/12612255/71522 –

+0

In realtà, PostgreSQL ha un [max lunghezza del campo di 1 GB] (https://www.postgresql.org/about/). Quindi, se un termine ha più di 1 GB di "document_ids" (-> uno a molti), supererebbe le capacità di PostgreSQL. – Alex

4

non ho trovato alcuna limitazione nel numero di elementi nella matrice, ma c'è dimensioni campo. La dimensione massima del campo in PostgreSQL è 1 GB, quindi sono circa 268435456 elementi nella matrice. Siate consapevoli che l'indicizzazione di tale array o la sua ricerca sarebbe probabilmente inutile.

+0

puoi spiegare perché è così? perché l'indice sarebbe inutile per tale matrice? grazie ... – cinfis

+0

@cinfis Perché quell'indice sarà enorme. In effetti, probabilmente sarebbe più grande del resto del database. – partlov

+0

ok ho capito ... grazie ... – cinfis

Problemi correlati