Khi chọn lược đồ cơ sở dữ liệu cho kho dữ liệu, bông tuyết và lược đồ sao có xu hướng là lựa chọn phổ biến. So sánh này thảo luận về sự phù hợp của các lược đồ sao và bông tuyết trong các kịch bản khác nhau và đặc điểm của chúng.
Lược đồ bông tuyết | Lược đồ sao | |
---|---|---|
Dễ bảo trì / thay đổi | Không dư thừa, vì vậy các lược đồ bông tuyết dễ bảo trì và thay đổi hơn. | Có dữ liệu dư thừa và do đó ít dễ dàng hơn để duy trì / thay đổi |
Dễ sử dụng | Các truy vấn phức tạp hơn và do đó ít dễ hiểu hơn | Độ phức tạp truy vấn thấp và dễ hiểu |
Hiệu suất truy vấn | Nhiều khóa ngoại hơn và do đó thời gian thực hiện truy vấn dài hơn (chậm hơn) | Số lượng khóa ngoại ít hơn và do đó thời gian thực hiện truy vấn ngắn hơn (nhanh hơn) |
Loại dữ liệu | Tốt để sử dụng cho lõi trung tâm dữ liệu để đơn giản hóa các mối quan hệ phức tạp (nhiều: nhiều) | Tốt cho datamarts với các mối quan hệ đơn giản (1: 1 hoặc 1: nhiều) |
Tham gia | Số lượng tham gia cao hơn | Ít tham gia |
Bảng kích thước | Một lược đồ bông tuyết có thể có nhiều hơn một bảng thứ nguyên cho mỗi thứ nguyên. | Lược đồ sao chỉ chứa bảng thứ nguyên duy nhất cho mỗi thứ nguyên. |
Khi nào sử dụng | Khi bảng kích thước có kích thước tương đối lớn, việc trượt tuyết sẽ tốt hơn vì nó làm giảm không gian. | Khi bảng thứ nguyên chứa số lượng hàng ít hơn, chúng ta có thể chọn lược đồ hình sao. |
Bình thường hóa / Không chuẩn hóa | Bảng kích thước ở dạng Chuẩn hóa nhưng Bảng thực tế ở dạng Không chuẩn hóa | Cả hai chiều và bảng thực tế đều ở dạng không chuẩn hóa |
Mô hình dữ liệu | Cách tiếp cận từ dưới lên | Cách tiếp cận từ trên xuống |
Hãy xem xét một cơ sở dữ liệu cho một nhà bán lẻ có nhiều cửa hàng, với mỗi cửa hàng bán nhiều sản phẩm trong nhiều loại sản phẩm và của các thương hiệu khác nhau. Kho dữ liệu hoặc trung tâm dữ liệu cho một nhà bán lẻ như vậy sẽ cần cung cấp cho các nhà phân tích khả năng chạy các báo cáo bán hàng được nhóm theo cửa hàng, ngày (hoặc tháng, quý hoặc năm), hoặc danh mục sản phẩm hoặc nhãn hiệu.
Nếu mart dữ liệu này đang sử dụng lược đồ sao, nó sẽ trông như sau:
Ví dụ về lược đồ saoBảng thực tế sẽ là một bản ghi các giao dịch bán hàng, trong khi có các bảng kích thước cho ngày, cửa hàng và sản phẩm. Mỗi bảng kích thước được kết nối với bảng thực tế thông qua khóa chính của chúng, đây là khóa ngoại cho bảng thực tế. Ví dụ: thay vì lưu trữ ngày giao dịch thực tế trong một hàng của bảng thực tế, date_id được lưu trữ. Date_id này tương ứng với một hàng duy nhất trong bảng Dim_Date và hàng đó cũng lưu trữ các thuộc tính khác của ngày được yêu cầu để nhóm trong các báo cáo. ví dụ: ngày trong tuần, tháng, quý trong năm, v.v. Dữ liệu được chuẩn hóa để báo cáo dễ dàng hơn.
Dưới đây là cách người ta có thể nhận được báo cáo về số lượng tivi được bán theo nhãn hiệu và theo quốc gia với sự trợ giúp của các liên kết bên trong.
Kịch bản tương tự cũng có thể sử dụng lược đồ bông tuyết, trong trường hợp đó, nó sẽ được cấu trúc như sau:
Ví dụ lược đồ bông tuyết (bấm vào để phóng to)Sự khác biệt chính, khi so sánh với lược đồ sao, là dữ liệu trong các bảng kích thước được chuẩn hóa hơn. Ví dụ: thay vì lưu trữ tháng, quý và ngày trong tuần trong mỗi hàng của bảng Dim_Date, chúng được chia thành các bảng thứ nguyên của riêng chúng. Tương tự như vậy đối với bảng Dim_Store, trạng thái và quốc gia là các thuộc tính địa lý được xóa một bước - thay vì được lưu trữ trong bảng Dim_Store, giờ đây chúng được lưu trữ trong một bảng Dim_Geography riêng.
Báo cáo tương tự - số lượng tivi được bán theo quốc gia và theo nhãn hiệu - hiện phức tạp hơn một chút so với lược đồ sao:
Truy vấn SQL để lấy số lượng sản phẩm được bán theo quốc gia và thương hiệu, khi cơ sở dữ liệu sử dụng lược đồ bông tuyết.