2015-04-21 20 views
8

Tôi đang làm việc một dự án web với PostgreSQL làm cơ sở dữ liệu. Tôi đang cố gắng xây dựng một cấu trúc cơ sở dữ liệu của web bao gồm một bảng mô hình không gian vectơ. Tôi đã tạo một bảng có thuộc tính termsdocId[] trong đó docId là ID tài liệu của cụm từ. loại của docId là số nguyên []. Vì vậy, tôi có thể nhập một thuật ngữ với danh sách tài liệu bao gồm các thuật ngữ trong một mảng duy nhất. Nhưng mảng thuật ngữ của docId có thể sẽ chứa rất nhiều mục.giới hạn kích thước/chiều dài của loại mảng trong PostgreSQL

vì vậy câu hỏi của tôi là: có bao nhiêu kích thước tối đa của mảng một dimmension trong postgres?

cảm ơn :)

Trả lời

8

no size limit trên mảng Postgres. Phải có giới hạn về kích thước hàng hoặc cột, nhưng điều đó sẽ chạy trong hàng triệu mục nhập.

Một cách SQL khác để liên kết thuật ngữ với tài liệu là quan hệ 1 đến nhiều. Điều này được triển khai như:

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

Cột document_id trong bảng term được gọi là khóa ngoài.

+1

"phải có giới hạn về kích thước hàng hoặc cột, nhưng điều đó sẽ chạy trong hàng triệu mục" - nếu bạn sẽ tha thứ cho một "thực sự tốt" nghiêm trọng: có giới hạn cứng 1.600 cột trên mỗi bảng và giới hạn đó bao gồm các cột đã bị xóa: http://stackoverflow.com/a/12612255/71522 –

+0

Thực ra, PostgreSQL có [tối đa độ dài trường là 1GB] (https://www.postgresql.org/about/). Vì vậy, nếu bất kỳ thuật ngữ nào có nhiều hơn 1GB "document_ids" (-> một đến nhiều), nó sẽ vượt quá dung lượng PostgreSQL. – Alex

4

Tôi không tìm thấy bất kỳ giới hạn nào về số phần tử trong mảng, nhưng có kích thước trường. Kích thước tối đa của trường trong PostgreSQL là 1GB, vì vậy nó có khoảng 268435456 phần tử trong mảng. Lưu ý rằng việc lập chỉ mục mảng hoặc tìm kiếm thông qua nó có lẽ sẽ vô ích.

+0

bạn có thể giải thích tại sao không? tại sao chỉ mục sẽ vô ích cho mảng đó? cảm ơn ... – cinfis

+0

@cinfis Vì chỉ số đó sẽ rất lớn. Trong thực tế, nó có lẽ sẽ lớn hơn phần còn lại của cơ sở dữ liệu. – partlov

+0

ok tôi nhận được nó ... nhờ ... – cinfis

Các vấn đề liên quan