2015-01-30 23 views

Trả lời

0

Trong bộ sưu tập chúng tôi có kích thước giới hạn, Nếu chúng tôi đang cố gắng chèn thêm dữ liệu, nó sẽ bị cắt bớt. Quan hệ chúng ta có thể sử dụng n không. Dữ liệu.

Bộ sưu tập là nhanh hơn so với các mối quan hệ, nhưng trong bộ sưu tập chúng ta có thể sử dụng chỉ một đến nhiều chỉ mối quan hệ, đối với nhiều đối với nhiều chúng ta nên sử dụng các mối quan hệ duy nhất ....

0

Thêm vào những gì Raghav đã được thêm vào, một bộ sưu tập nội bộ được lưu trữ dưới dạng csv của PK trong một cột. Do đó giới hạn kích thước do hạn chế độ dài trường trong bất kỳ cơ sở dữ liệu nào.

Một mối quan hệ tuy nhiên có thể được lưu trữ trong một bảng riêng biệt và do đó ánh xạ không giới hạn có thể được thực hiện.

1

Điều quan trọng để hiểu hybris mạnh mẽ không khuyến khích sử dụng bộ sưu tập, sử dụng quan hệ thay thế.

Như đã nêu ở trên, các bộ sưu tập được duy trì dưới dạng dấu phẩy tách biệt với triển vọng cấu trúc dữ liệu và đó là lý do tại sao bạn có thể thấy vấn đề cắt dữ liệu, khi quan hệ có cấu trúc dữ liệu hợp lý để tạo bảng và bản đồ mới.

Bộ sưu tập vì có cấu trúc bộ nhớ - không thể tìm kiếm được.

Tôi sẽ nói cho một mối quan hệ rất đơn giản (1: n) với dữ liệu hạn chế - bạn vẫn có thể sử dụng các bộ sưu tập. Mặc dù mối quan hệ phức tạp (m: n/1: n) luôn sử dụng quan hệ

0

Bộ sưu tập Giao diện gốc trong phân cấp bộ sưu tập.

Bộ sưu tập đại diện cho một nhóm đối tượng, được gọi là các thành phần của nó.

Một số bộ sưu tập cho phép các phần tử Nhân bản và các phần khác không làm.

Một số thứ tự và những người khác Un-Ordered

Để có được một ý tưởng thực sự tốt về những gì mỗi bộ sưu tập là tốt cho và đặc điểm hiệu suất của chúng tôi sẽ khuyên bạn nên nhận một ý tưởng tốt về Cấu trúc dữ liệu như Mảng, danh sách liên kết, Binary Tìm kiếm cây, Hashtables, cũng như ngăn xếp và hàng đợi. Có thực sự không có thay thế để học tập này nếu bạn muốn trở thành một lập trình viên hiệu quả trong bất kỳ ngôn ngữ.

HashMap chỉ thực sự sử dụng đối với trường hợp khi có một lý do hợp lý để có các phím đặc biệt tương ứng với giá trị

0

Các bộ sưu tập được tiếp tục tồn như một đối tượng serialized trong một cột duy nhất trong DB.

Quan hệ đang tồn tại cách cơ sở dữ liệu quan hệ thông thường - sử dụng một khoá ngoại trên bảng khác hoặc một bảng liên kết (tùy thuộc vào cardinality của mối quan hệ)

loại Collection được nản chí khi họ không thể tìm kiếm bằng flexiblesearch và có các giới hạn hiệu suất đáng kể khi xử lý các bộ sưu tập của nhiều đối tượng.

1

Như Sumit đã nói ở trên,

Loại bộ sưu tập không được khuyến khích và RelationType nên được sử dụng bất cứ khi nào có thể.Điều này là do, độ dài tối đa của trường cơ sở dữ liệu của một CollectionType bị giới hạn và một CollectionType có nhiều giá trị có thể bị cắt bớt các giá trị của nó. Ngoài ra, các giá trị của CollectionTypes được viết ở định dạng CSV và không theo cách được chuẩn hóa. Do đó, hybris khuyến nghị sử dụng RelationTypes bất cứ khi nào có thể.

  • CollectionType: CollectionTypes được dựa trên các lớp Java Collection ví dụ: một Bộ sưu tập là một danh sách các yếu tố này.
    1: n - Giữ liên kết đến các giá trị tương ứng thông qua thuộc tính trên mục nguồn, ví dụ: danh sách khóa chính.
    n: 1 - Lưu trữ giá trị thuộc tính tại các mục tiêu tương ứng và có phương thức getter ở loại nguồn để truy lục giá trị.
  • RelationType:
    n: m - Bên trong, các yếu tố trên cả hai mặt của mối quan hệ được liên kết với nhau thông qua trường hợp của một loại helper gọi LinkItem. LinkItems giữ hai thuộc tính, SourceItem và TargetItem, giữ các tham chiếu cho mục tương ứng.

Đối với mỗi mục nhập trong một quan hệ (nói cách khác, đối với mỗi liên kết từ một mục này đến mục khác), có một thể hiện LinkItem lưu trữ PK của các mục có liên quan. Các cá thể LinkItem được xử lý một cách minh bạch và tự động bởi nền tảng: Ở cấp API, bạn chỉ cần sử dụng các phương thức getter và setter tương ứng.

8

Về cơ bản, có hai cách về mặt kỹ thuật khác nhau của bộ sưu tập mô hình trong hybris:

  1. CollectionTypes

    • Hãy suy nghĩ về CollectionTypes trong hybris như một ba lô gắn vào một loại
    • Bởi thời gian chạy, CollectionTypes được phân giải thành Bộ sưu tập của một loại mục, chẳng hạn như Danh sách MediaModels
    • Có thể gây tràn, dẫn đến cắt ngắn và do đó mất dữ liệu
    • Khó khăn hơn để tìm kiếm và hiệu suất thấp hơn
    • Ở cấp độ cơ sở dữ liệu, CollectionTypes là một danh sách bằng dấu phẩy PK, do đó tối đa
  2. RelationTypes

    • Tạo liên kết giữa tất cả các loại định dạng Tạo kiểu an n-to-m quan hệ: Chỉ liên kết các yếu tố như các loại nguồn/đích tuyên bố tại mối quan hệ
    • Giá trị cho quan hệ được lưu trữ trong một bảng cơ sở dữ liệu riêng biệt + Mỗi giá trị được lưu trữ trong một dòng của bảng riêng biệt
+0

Tôi không nghĩ rằng CollectionTypes được lưu trữ dưới dạng danh sách PK được tách nhau bằng dấu phẩy (trừ khi đã thay đổi gần đây). Khi bao giờ tôi đã xem qua chúng, chúng chỉ là các java pojos được tuần tự được viết dưới dạng BLOB. Có lẽ nó chỉ làm điều đó cho các bộ sưu tập của các loại đơn giản ..? – kabadisha

+0

@kabadisha có chúng được lưu trữ dưới dạng danh sách phân cách bằng dấu phẩy. Hãy thử nó và có một cái nhìn về DB, hơn bạn sẽ thấy nó – KilleKat

7

Tôi hoàn toàn đồng ý với bình luận @KilleKat, ông đã đề cập đến tất cả các sự khác biệt giữa CollectionType và RelationType trong Hybris.

Tôi đính kèm dưới một số biểu đồ để có cái nhìn rõ ràng hơn về chủ đề.

CollectionTypes: (được sử dụng một cách khôn ngoan) enter image description here

RelationTypes: (recommended) enter image description here

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