2015-04-21 8 views
8

Ich arbeite ein Web-Projekt mit PostgreSQL als Datenbanken. Ich versuche, eine Struktur der Web-Datenbanken zu erstellen, die eine Vektorraummodelltabelle enthalten. Ich habe eine Tabelle mit dem Attribut terms und docId[] erstellt, wobei docId die Dokument-ID des Begriffs ist. Typ der docId ist Integer []. So kann ich einen Begriff mit der Dokumentenliste eingeben, der den Begriff in einem einzigen Array enthält. Aber der Array-Begriff des DocId enthält möglicherweise viele Einträge.Größe/Länge Begrenzung der Array-Typ in PostgreSQL

so ist meine Frage: Wie viele maximale Größe von Array eine Dimmension in Postgres?

Dank :)

Antwort

8

Es gibt no size limit auf Postgres-Arrays. Es muss Grenzen für die Zeilen- oder Spaltengröße geben, aber das würde in den Millionen von Einträgen laufen.

Eine weitere SQL-Methode, um einen Begriff mit einem Dokument in Beziehung zu setzen, ist eine 1 zu viele Beziehung. Dies wird implementiert, wie:

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

Die document_id Spalte in der Tabelle term ist ein Fremdschlüssel genannt.

+1

"Es muss Grenzen für die Zeilen- oder Spaltengröße geben, aber das würde in den Millionen von Einträgen laufen" - wenn Sie würde ein ungeheuerliches "well tatsachlich" verzeihen: Es gibt eine harte Grenze von 1.600 Spalten pro Tabelle, und diese Grenze enthält Spalten, die gelöscht wurden: http://stackoverflow.com/a/12612255/71522 –

+0

Tatsächlich hat PostgreSQL eine [max Feldlänge von 1 GB] (https://www.postgresql.org/about/). Wenn also ein Begriff mehr als 1 GB "document_ids" (-> eins zu viele) enthält, würde er die PostgreSQL-Kapazitäten übersteigen. – Alex

4

ich keine Beschränkung in der Anzahl der Elemente in einem Array gefunden haben, aber es gibt in Feldgröße. Die maximale Feldgröße in PostgreSQL beträgt 1 GB, also sind es etwa 268435456 Elemente im Array. Seien Sie sich bewusst, dass das Indizieren eines solchen Arrays oder das Durchsuchen dieses Arrays wahrscheinlich nutzlos wäre.

+0

können Sie bitte erklären, warum ist das? Warum würde index für solch ein Array nutzlos sein? danke ... – cinfis

+0

@cinfis Weil dieser Index riesig sein wird. In der Tat wäre es wahrscheinlich größer als der Rest der Datenbank. – partlov

+0

ok ich bekomme es ... danke ... – cinfis