Ngày nay, báo cáo và phân tích gần như quan trọng như hoạt động kinh doanh cốt lõi. Báo cáo có thể được tạo từ dữ liệu trực tiếp của bạn; thường thì cách tiếp cận này sẽ áp dụng cho các công ty vừa và nhỏ không có nhiều dữ liệu. Nhưng khi mọi thứ trở nên lớn hơn - hoặc lượng dữ liệu bắt đầu tăng lên đáng kể - thì đã đến lúc bạn phải suy nghĩ về việc tách hệ thống hoạt động và báo cáo của mình.
Trước khi chúng tôi giải quyết mô hình dữ liệu cơ bản, chúng tôi cần một số kiến thức nền tảng về các hệ thống liên quan. Chúng ta có thể chia hệ thống thành hai loại:hệ thống vận hành và hệ thống báo cáo. Các hệ thống hoạt động thường được gọi là Xử lý Giao dịch Trực tuyến (OLTP). Hệ thống báo cáo và phân tích được gọi là Xử lý Phân tích Trực tuyến (OLAP). Hệ thống OLTP hỗ trợ các quy trình kinh doanh. Chúng hoạt động với dữ liệu hoạt động "trực tiếp", được chuẩn hóa cao và phản ứng rất nhanh với các hành động của người dùng. Mặt khác, mục đích chính của hệ thống OLAP là phân tích. Các hệ thống này sử dụng dữ liệu tóm tắt, thường được đặt trong cấu trúc kho dữ liệu không chuẩn hóa như giản đồ hình sao. (Không chuẩn hóa là gì? Nói một cách đơn giản, nó có các bản ghi dữ liệu dư thừa để đạt được hiệu suất tốt hơn. Đọc thêm.)
Bây giờ chúng ta đã biết một chút về các hệ thống, hãy bắt đầu kiểm tra kho dữ liệu cũng như các phần và quy trình của nó.
Kho dữ liệu so với Kho dữ liệu
A kho dữ liệu (DWH) là một hệ thống được sử dụng để lưu trữ thông tin để sử dụng cho việc phân tích và báo cáo dữ liệu. Marts dữ liệu là các khu vực của kho dữ liệu được sử dụng để lưu trữ thông tin cần thiết của một bộ phận hoặc thậm chí bởi một người dùng cá nhân. (Hãy coi DWH như một tòa nhà và các trung tâm dữ liệu như các văn phòng bên trong tòa nhà.)
Tại sao cần có data mart? Tất cả dữ liệu có liên quan được lưu trữ bên trong DWH của công ty. Tuy nhiên, hầu hết người dùng chỉ cần truy cập vào một số tập hợp con dữ liệu nhất định, chẳng hạn như những dữ liệu liên quan đến bán hàng, sản xuất, hậu cần hoặc tiếp thị. Data mart rất quan trọng theo cả quan điểm bảo mật (hạn chế quyền truy cập không cần thiết) và từ quan điểm người dùng (chúng tôi không muốn nhầm lẫn hoặc buộc họ phải xem qua dữ liệu không liên quan).
Có hai cách tiếp cận khác nhau đối với mối quan hệ kho dữ liệu-kho dữ liệu:
- Từ trên xuống :Marts dữ liệu được tạo từ kho dữ liệu. (Đây là điều mà Bill Inmon, "cha đẻ của kho dữ liệu", sẽ đồng ý, cùng với ý tưởng rằng các kho nên ở trong 3NF.)
- Từ dưới lên :Data mart được tạo trước, sau đó được kết hợp thành kho dữ liệu. (Cách tiếp cận này gần với những gì Ralph Kimball, một chuyên gia về kho dữ liệu và mô hình chiều, ủng hộ.)
Quy trình ETL được sử dụng để thêm dữ liệu “mới” vào hệ thống OLAP một cách thường xuyên. ETL là viết tắt của Extract, Transform and Load. Như tên gợi ý, chúng tôi sẽ trích xuất dữ liệu từ một hoặc nhiều cơ sở dữ liệu hoạt động, biến đổi nó để phù hợp với cấu trúc kho của chúng tôi và tải dữ liệu vào DWH.
Mô hình thứ nguyên , là một phần của thiết kế kho dữ liệu, dẫn đến việc tạo ra mô hình chiều. Có hai loại bảng liên quan:
-
Bảng thứ nguyên được sử dụng để mô tả dữ liệu chúng tôi muốn lưu trữ. Ví dụ:một nhà bán lẻ có thể muốn lưu trữ ngày tháng, cửa hàng và nhân viên tham gia vào một giao dịch mua cụ thể. Mỗi bảng thứ nguyên là danh mục riêng (ngày, nhân viên, cửa hàng) và có thể có một hoặc nhiều thuộc tính . Đối với mỗi cửa hàng, chúng tôi có thể lưu vị trí của cửa hàng đó ở cấp thành phố, khu vực, tiểu bang và quốc gia. Đối với mỗi ngày, chúng tôi có thể lưu trữ năm, tháng, ngày trong tháng, ngày trong tuần, v.v. Điều này liên quan đến phân cấp thuộc tính trong bảng thứ nguyên.
Trong giản đồ hình sao, chúng tôi thường thấy rằng một số thuộc tính là tập hợp con của các thuộc tính khác trong cùng một bản ghi. Sự dư thừa này là có chủ ý và được thực hiện với danh nghĩa hiệu suất tốt hơn. Chúng tôi có thể sử dụng các thứ nguyên ngày, vị trí và đại lý bán hàng để tổng hợp (phần biến đổi của quy trình ETL) và lưu trữ dữ liệu bên trong DWH. Trong mô hình thứ nguyên, điều rất quan trọng là phải xác định đúng thứ nguyên và chọn cách tạo chi tiết phù hợp.
- Bảng dữ kiện chứa dữ liệu chúng tôi muốn đưa vào báo cáo, được tổng hợp dựa trên các giá trị trong các bảng thứ nguyên có liên quan. Bảng dữ kiện chỉ có các cột lưu trữ giá trị và khóa ngoại tham chiếu đến bảng thứ nguyên. Kết hợp tất cả các khóa ngoại tạo thành khóa chính của bảng dữ kiện. Ví dụ:một bảng dữ kiện có thể lưu trữ một số địa chỉ liên hệ và số doanh thu từ những địa chỉ liên hệ này.
Với thông tin này, bây giờ chúng ta có thể đi sâu vào mô hình dữ liệu giản đồ hình sao.
Giản đồ Ngôi sao
Lược đồ sao là mô hình đơn giản nhất được sử dụng trong DWH. Bởi vì bảng dữ kiện nằm ở trung tâm của lược đồ với các bảng thứ nguyên xung quanh nó, nó trông gần giống như một ngôi sao. Điều này đặc biệt rõ ràng khi bảng dữ kiện được bao quanh bởi các bảng năm thứ nguyên. Một biến thể của giản đồ hình sao là lược đồ con rết , trong đó bảng dữ kiện được bao quanh bởi một số lượng lớn các bảng kích thước nhỏ.
Lược đồ hình sao được sử dụng rất phổ biến trong các quầy dữ liệu. Chúng ta có thể liên hệ chúng với cách tiếp cận mô hình dữ liệu từ trên xuống. Chúng tôi sẽ phân tích hai giản đồ hình sao (data mart) và sau đó kết hợp chúng để tạo thành một mô hình duy nhất.
Ví dụ về giản đồ sao:Bán hàng
Báo cáo bán hàng là một trong những báo cáo phổ biến nhất hiện nay. Như chúng tôi đã đề cập trước đây, trong hầu hết các trường hợp, chúng tôi có thể tạo báo cáo bán hàng từ hệ thống trực tiếp. Nhưng khi dữ liệu hoặc quy mô doanh nghiệp khiến điều này trở nên quá cồng kềnh, chúng tôi sẽ phải xây dựng kho dữ liệu hoặc trung tâm dữ liệu để hợp lý hóa quy trình. Sau khi thiết kế giản đồ sao của chúng tôi, một ETL quy trình sẽ lấy dữ liệu từ (các) cơ sở dữ liệu hoạt động, chuyển đổi dữ liệu sang định dạng thích hợp cho DWH và tải dữ liệu vào kho.
Mô hình được trình bày ở trên bao gồm một bảng dữ kiện (màu đỏ nhạt) và bảng năm kích thước (màu xanh lam nhạt). Các bảng trong mô hình là:
-
fact_sales
- Bảng này chứa các tham chiếu đến các bảng kích thước cộng với hai dữ kiện (giá và số lượng bán). Lưu ý rằng tất cả năm khóa ngoại cùng nhau tạo thành khóa chính của bảng. -
dim_sales_type
- Đây là bảng thứ nguyên kiểu bán hàng chỉ có một thuộc tính, “type_name
”. -
dim_employee
- Đây là bảng kích thước nhân viên lưu trữ các thuộc tính cơ bản của nhân viên:họ tên và năm sinh. -
dim_product
- Đây là bảng kích thước sản phẩm chỉ có hai thuộc tính (ngoài khóa chính):tên sản phẩm và loại sản phẩm. -
dim_time
- Bảng này xử lý thứ nguyên thời gian. Nó chứa năm thuộc tính bên cạnh khóa chính. Dữ liệu cấp thấp nhất là doanh số bán hàng theo ngày (action_date
).action_week
thuộc tính là số của tuần trong năm đó (tức là tuần đầu tiên của tháng 1 sẽ có số 1; tuần cuối cùng của tháng 12 sẽ có số 52, v.v.)actual_month
vàactual_year
thuộc tính lưu trữ tháng và năm theo lịch khi bán hàng xảy ra. Chúng có thể được trích xuất từ action_date
thuộc tính.action_weekday
Thuộc tính lưu trữ tên của ngày diễn ra chương trình giảm giá. -
dim_store
- Đây là một kích thước cửa hàng. Đối với mỗi cửa hàng, chúng tôi sẽ lưu thành phố, khu vực, tiểu bang và quốc gia nơi đặt cửa hàng đó. Ở đây, chúng ta có thể nhận thấy rõ rằng giản đồ hình sao không được chuẩn hóa.
Ví dụ về giản đồ sao:Đơn đặt hàng cung cấp
Có rất nhiều điểm tương đồng giữa mô hình này, được hiển thị bên dưới và mô hình bán hàng.
Mô hình này nhằm lưu trữ lịch sử của các đơn hàng đã đặt. Chúng tôi có một bảng dữ kiện và bốn bảng kích thước. Các bảng thứ nguyên dim_employee
, dim_product
và dim_time
giống hệt như trong mô hình bán hàng. Tuy nhiên, các bảng sau khác nhau:
-
fact_supply_order
- chứa dữ liệu tổng hợp về các đơn hàng đã đặt. -
dim_supplier
- là bảng kích thước lưu trữ dữ liệu nhà cung cấp theo cách giống nhưdim_store
lưu trữ dữ liệu trong mô hình bán hàng.
Ưu điểm và nhược điểm của lược đồ hình sao
Có rất nhiều lợi ích khi sử dụng lược đồ hình sao. Bảng dữ kiện liên quan đến mỗi bảng thứ nguyên theo đúng một mối quan hệ và chúng tôi không cần bất kỳ từ điển bổ sung nào để mô tả bảng thứ nguyên. Điều đó đơn giản hóa các truy vấn và giảm thời gian thực hiện truy vấn. Chúng tôi có thể tạo cùng một báo cáo trực tiếp từ hệ thống OLTP của mình, nhưng truy vấn sẽ phức tạp hơn nhiều và nó có thể ảnh hưởng đến hiệu suất tổng thể của hệ thống. Truy vấn mẫu sau cho mô hình bán hàng sẽ trả về số lượng của tất cả các loại sản phẩm kiểu điện thoại được bán tại các cửa hàng ở Berlin vào năm 2016:
SELECT dim_store.store_address, SUM(fact_sales.quantity) AS quantity_sold FROM fact_sales INNER JOIN dim_product ON fact_sales.product_id = dim_product.product_id INNER JOIN dim_time ON fact_sales.time_id = dim_time.time_id INNER JOIN dim_store ON fact_sales.store_id = dim_store.store_id WHERE dim_time.action_year = 2016 AND dim_store.city = 'Berlin' AND dim_product.product_type = 'phone' GROUP BY dim_store.store_id, dim_store.store_address
Nhược điểm lớn nhất của giản đồ hình sao là dư thừa. Mỗi thứ nguyên được lưu trữ trong một bảng thứ nguyên riêng biệt và điều này gây ra hiện tượng không chuẩn hóa. Trong ví dụ của chúng tôi, thành phố thuộc về một vùng hoặc tiểu bang, thuộc về một quốc gia; chúng tôi không lưu trữ mối quan hệ đó như một quy tắc trong cơ sở dữ liệu của mình, nhưng chúng tôi liên tục lặp lại nó. Điều này có nghĩa là chúng tôi sẽ sử dụng nhiều dung lượng đĩa hơn và có rủi ro về tính toàn vẹn của dữ liệu.
Lược đồ Thiên hà
Chúng ta có thể xem hai mô hình trước như hai ổ chứa dữ liệu, một cho bộ phận bán hàng và một cho bộ phận cung ứng. Mỗi bảng chỉ bao gồm một bảng dữ kiện và một vài bảng chiều. Nếu muốn, chúng ta có thể kết hợp hai ổ chứa dữ liệu này thành một mô hình. Loại lược đồ này, chứa một số bảng dữ kiện và chia sẻ một số bảng thứ nguyên, được gọi là giản đồ thiên hà . Chia sẻ bảng thứ nguyên có thể làm giảm kích thước cơ sở dữ liệu, đặc biệt khi thứ nguyên được chia sẻ có nhiều giá trị có thể có. Lý tưởng nhất là trong cả hai kho dữ liệu, các thứ nguyên được xác định theo cùng một cách. Nếu không đúng như vậy, chúng tôi sẽ phải điều chỉnh kích thước để phù hợp với cả hai nhu cầu.
Một lược đồ thiên hà, được xây dựng từ hai siêu thị dữ liệu mẫu của chúng tôi, được hiển thị bên dưới:
Lược đồ hình sao là một cách tiếp cận để tổ chức kho dữ liệu. Nó rất đơn giản và thường được sử dụng nhất trong các data mart. Nếu chúng ta không phải lo lắng về dung lượng ổ đĩa và chúng ta quan tâm tốt đến tính toàn vẹn của dữ liệu, thì lược đồ hình sao là lựa chọn khả thi đầu tiên và tốt nhất. Nếu không, chúng ta nên nghĩ đến một cách tiếp cận khác. Một là lược đồ bông tuyết mà chúng ta sẽ thảo luận trong một bài viết sắp tới.