Đối với một mô hình trong cơ sở dữ liệu của tôi, tôi cần lưu trữ khoảng 300 giá trị cho một trường cụ thể. Điều gì sẽ là những hạn chế, trong điều khoản của hiệu suất và đơn giản trong truy vấn, nếu tôi sử dụng Postgres cụ thể ArrayField thay vì một bảng riêng biệt với mối quan hệ một-nhiều?Django Postgres ArrayField vs mối quan hệ một-nhiều
8
A
Trả lời
8
Nếu bạn sử dụng một trường mảng
- Kích thước của mỗi hàng trong DB của bạn sẽ là một chút lớn như vậy, Postgres sẽ được sử dụng rất nhiều nhiều bảng bánh mì nướng (http://www.postgresql.org/docs/9.5/static/storage-toast.html)
- Mỗi khi bạn nhận được hàng, trừ khi bạn sử dụng cụ thể
defer
(https://docs.djangoproject.com/en/1.9/ref/models/querysets/#defer) trường hoặc loại trừ nó khỏi truy vấn quaonly
hoặcvalues
hoặc thứ gì đó, bạn trả chi phí tải tất cả các giá trị đó mỗi khi bạn lặp lại trên hàng đó. Nếu đó là những gì bạn cần thì hãy là vậy. - Lọc dựa trên các giá trị trong mảng đó, trong khi có thể sẽ không đẹp như vậy và ORM của Django không làm cho nó rõ ràng như đối với các bảng M2M.
Nếu bạn sử dụng M2M
- Bạn có thể lọc dễ dàng hơn trên những giá trị liên quan
- Những lĩnh vực được hoãn lại theo mặc định, bạn có thể sử dụng
prefetch_related
nếu bạn cần chúng và sau đó nhận được ưa thích nếu bạn muốn chỉ một tập hợp con của các giá trị đó được tải - Tổng dung lượng trong DB sẽ cao hơn một chút với M2M do khóa và các trường id bổ sung
- Chi phí của các lần tham gia trong trường hợp này hoàn toàn không đáng kể vì chìa khóa.
Cá nhân tôi muốn nói với bảng M2M, nhưng tôi không biết ứng dụng cụ thể của bạn. Nếu bạn đang làm việc với một lượng lớn dữ liệu, nó có khả năng đáng để lấy một bộ dữ liệu đại diện và thử nghiệm cả hai phương pháp với nó.
Các vấn đề liên quan
- 1. Django Aggregation Across Xếp Mối quan hệ
- 2. Mối quan hệ tự giới thiệu Django?
- 3. Django DatabaseError: mối quan hệ "django_site"
- 4. Các mối quan hệ mở rộng Django
- 5. Lọc mối quan hệ Nhiều-Nhiều từ trường Mối quan hệ ở Django
- 6. Sqlalchemy, mối quan hệ và mối quan hệ
- 7. Đặt mối quan hệ với mối quan hệ nhiều-nhiều
- 8. Mối quan hệ Laravel
- 9. Mối quan hệ giữa nhiều mối quan hệ giữa nhiều mô hình
- 10. Mô hình Django có mối quan hệ OneToOne?
- 11. Mẫu quản trị Django cho nhiều mối quan hệ
- 12. Nhận ID ContentType ở Django cho mối quan hệ chung
- 13. Lọc Nhiều người đến Nhiều mối quan hệ trong Django
- 14. Django admin nội tuyến cho mối quan hệ sâu sắc
- 15. django-taggit truy vấn mối quan hệ sâu
- 16. django-REST: Mối quan hệ lồng nhau so với PrimaryKeyRelatedField
- 17. Django 1.5 + Mối quan hệ kiểu người dùng
- 18. Nhiều mối quan hệ với dữ liệu bổ sung về mối quan hệ
- 19. Đăng một mối quan hệ một-nhiều
- 20. Yii nhiều mối quan hệ
- 21. Fetch Mối quan hệ Objects
- 22. keystoneJS mối quan hệ tự
- 23. Chủ sở hữu mối quan hệ nghĩa là gì trong mối quan hệ hai chiều?
- 24. cách tránh trùng lặp trong mối quan hệ has_many: thông qua mối quan hệ?
- 25. Tham chiếu tuần hoàn trong mối quan hệ nhiều chiều đến nhiều mối quan hệ
- 26. Làm thế nào để có mối quan hệ với một mối quan hệ luôn được nhúng
- 27. Tìm hiểu các mối quan hệ và mối quan hệ dữ liệu của Orchard
- 28. Rails 4 Các mối quan hệ và mối quan hệ đa hình
- 29. Tạo dữ liệu emberRecord với mối quan hệ có mối quan hệ mà không cần lưu
- 30. Phân rã một mối quan hệ ternary vào mối quan hệ nhị phân