paint-brush
Cách sử dụng MinIO làm bảng bên ngoài để mở rộng Snowflaketừ tác giả@minio
8,197 lượt đọc
8,197 lượt đọc

Cách sử dụng MinIO làm bảng bên ngoài để mở rộng Snowflake

từ tác giả MinIO6m2023/08/03
Read on Terminal Reader

dài quá đọc không nổi

MinIO là một kho lưu trữ đối tượng gốc trên đám mây, hiệu suất cao. Nó sẽ hoạt động trên tất cả các loại Kubernetes (up-stream, EKS, AKS, GKE, v.v.) cũng như trên các máy ảo như máy ảo đám mây công cộng, VMWare, v.v. và trên phần cứng kim loại trần. Nhờ đó, MinIO có thể trở thành kho dữ liệu toàn cầu cho khách hàng của Snowflake - bất kể dữ liệu của họ nằm ở đâu.
featured image - Cách sử dụng MinIO làm bảng bên ngoài để mở rộng Snowflake
MinIO HackerNoon profile picture
0-item
1-item
2-item

Bông tuyết hiện là tiêu chuẩn thực tế cho các nền tảng kho dữ liệu đám mây. Nó được thiết kế để hỗ trợ nhiều tác vụ dữ liệu khác nhau từ đường ống, ETL, phân tích và quản trị. Theo truyền thống, tất cả dữ liệu cần được chuyển vào Snowflake để doanh nghiệp tận dụng các khả năng của Snowflake.


Tuy nhiên, Snowflake đã hiểu rằng các doanh nghiệp muốn tích hợp dữ liệu của họ ở bất cứ đâu mà không cần phải di chuyển dữ liệu. Do đó, với việc giới thiệu hỗ trợ bảng bên ngoài, giờ đây các doanh nghiệp sẽ có thể đạt được điều đó.


Điều này có tác động thực sự, cả về tính kinh tế của việc triển khai Snowflake, mà còn về lượng dữ liệu có sẵn cho Nền tảng Snowflake để phân tích và khoa học dữ liệu.


Tính khả dụng của các bảng bên ngoài sẽ không thay đổi vị trí nơi Snowflake chạy - nó sẽ vẫn chạy độc quyền trong ba đám mây công cộng chính (AWS, GCP, Azure). Tuy nhiên, nó sẽ loại bỏ yêu cầu rằng tất cả dữ liệu phải được lưu trữ trong Snowflake để Snowflake hoạt động trên đó.


MinIO có lẽ là người hưởng lợi lớn nhất từ sự thay đổi này. MinIO là một kho lưu trữ đối tượng gốc trên đám mây, hiệu suất cao. Nó sẽ hoạt động trên tất cả các loại Kubernetes (up-stream, EKS, AKS, GKE, v.v.) cũng như trên các máy ảo như máy ảo đám mây công cộng, VMWare, v.v. và trên phần cứng kim loại trần. Nhờ đó, MinIO có thể trở thành kho dữ liệu toàn cầu cho khách hàng của Snowflake - bất kể dữ liệu của họ nằm ở đâu.


Để đảm bảo rằng dữ liệu phù hợp có sẵn cho đúng người dùng, bắt buộc phải có kiểm soát truy cập chi tiết trên các kho dữ liệu nhiều đám mây này. Khả năng tích hợp của MinIO với các IDP bên thứ 3 và các khả năng Kiểm soát truy cập dựa trên chính sách (PBAC) tinh vi của nó đảm bảo rằng đây không phải là điều đáng suy nghĩ.


Mặc dù Snowflake sẽ hỗ trợ các điểm cuối S3 (bao gồm các kho lưu trữ đối tượng khác), các kho lưu trữ đối tượng đó không có khả năng chạy ở tất cả những nơi mà doanh nghiệp lưu giữ dữ liệu của mình. Ví dụ: các thiết bị không chạy trên đám mây công cộng hoặc trên OpenShift hoặc Tanzu. Để đạt được chiến lược nhất quán, dữ liệu ở mọi nơi, doanh nghiệp sẽ cần áp dụng MinIO.


Hơn nữa, Snowflake đã trở thành nhiệm vụ quan trọng trong doanh nghiệp. Nhiều đến mức khả năng phục hồi hiện đang được kiến trúc hóa trong các hệ thống này. Khả năng phục hồi đó không chỉ giải thích cho sự cố khu vực trong đám mây, nó còn giải thích cho sự cố toàn bộ đám mây.


Sự phụ thuộc vào đám mây của SIngle đã được chứng minh là kiến trúc kém như tôi đã viết trước đây. MinIO, với khả năng có sẵn ở mọi nơi và sao chép giữa các đám mây riêng, công cộng và biên, cung cấp giải pháp thực sự duy nhất cho tính khả dụng của dữ liệu trên nhiều đám mây.

Đơn giản để sử dụng

Vì vậy, nó đơn giản như thế nào đối với người dùng cuối? Hãy tưởng tượng bạn có một thùng trong MinIO có tên là 'Bucket1'. Bạn có thể thiết lập nó để có thể chạy bất kỳ lệnh SnowSQL nào trên nó giống như nó chỉ là một bảng khác.


Ví dụ: Chọn * từ Bucket1;



Giống như hầu hết mọi thứ trong Snowflake, việc kết nối với dữ liệu của bạn được lưu trữ trên MinIO cũng tương đối đơn giản.


Đây là những gì bạn cần để bắt đầu:

Thiết lập bông tuyết

Hỗ trợ bảng bên ngoài cần được bật cho môi trường Snowflake của bạn. Nếu bạn gặp lỗi như 'tiền tố URL không hợp lệ được tìm thấy trong: ' s3compat://snowflake/ ', điều đó có thể có nghĩa là nó chưa được bật. Vui lòng liên hệ với đại diện Snowflake của bạn để kích hoạt nó.

Thiết lập MinIO

Chỉ có một vài yêu cầu đối với thiết lập MinIO để nó hoạt động với Snowflake.


  1. MinIO phải được thiết lập để cho phép truy cập kiểu DNS và nhóm phải được cung cấp công khai.
  2. Hiện tại, khu vực này phải được đặt thành NULL hoặc giống như khu vực của phiên bản Snowflake (ví dụ: 'us-west-2'). Bạn sẽ nhận được thông báo lỗi từ truy vấn Snowflake để bạn biết nó đang mong đợi khu vực nào.


Trong ví dụ bên dưới, nhóm “snowflake” có 4 đối tượng trong đó và một đối tượng khác trong thư mục/tiền tố phụ “sn1”. Bông tuyết sẽ lấy tất cả các đối tượng này.


Để tích hợp tính năng này với Snowflake, nếu máy chủ MinIO ở https://play.min.io , bạn có thể truy cập nhóm tại https://snowflake.play.min.io


Các tệp mẫu có sẵn tại https://docs.snowflake.com/en/user-guide/getting-started-tutorial-prerequisites.html#sample-data-files-for-loading




Có hai cách để tích hợp bộ chứa MinIO với Snowflake. Cái đầu tiên là "Khu vực tổ chức" và cái thứ hai là một bảng bên ngoài. Hãy nhìn vào cả hai

Truy cập khu vực tổ chức

Là một phần của quy trình ETL, dữ liệu thường được chọn và chuẩn bị từ nguồn dữ liệu hoặc hồ dữ liệu, được chuyển vào khu vực tổ chức rồi tải vào Kho để có thể chạy các truy vấn đối với dữ liệu đó.


Theo truyền thống, các khu vực tổ chức cho Bông tuyết này nằm trong chính Bông tuyết, vì vậy đây là quy trình:


Hồ dữ liệu (tại chỗ, đám mây công cộng, v.v.) -> Dàn dựng bông tuyết -> Bảng nội bộ bông tuyết


Giờ đây, các doanh nghiệp có thể thiết lập MinIO làm khu vực tổ chức và di chuyển dữ liệu trực tiếp vào bảng Snowflake nội bộ để chạy các truy vấn đối với nó.


Điều này làm như sau


  • Đơn giản hóa dòng chảy
  • Cho phép dữ liệu có sẵn nhanh hơn để phân tích nhằm đáp ứng nhu cầu kinh doanh
  • Đảm bảo rằng không có bản sao dữ liệu không cần thiết, giúp ích cho cả quản trị và chi phí.


Quy trình mới sẽ là: Dữ liệu trong MinIO (tại chỗ, đám mây công cộng, v.v.) -> Bảng nội bộ Snowflake


Các ví dụ sau đây được hiển thị trong bảng điều khiển Bông tuyết, nhưng có thể chạy ví dụ tương tự thông qua Snowflake CLI.

Đối với play.min.io , hãy sử dụng
AWS_KEY_ID='Q3AM3UQ867SPQQA43P2F'
AWS_SECRET_KEY='zuf+tfteSlswRu7BJ86wekitnifILbZam1KYY3TG'





Tài liệu tham khảo cho lệnh Snowflake CREATE STAGE có sẵn tại đây: https://docs.snowflake.com/en/sql-reference/sql/create-stage.html

Truy cập bảng bên ngoài

Các truy vấn trong Snowflake phải được thực hiện trên các bảng nội bộ. Điều này có nghĩa là tất cả dữ liệu - ngay cả đối với các truy vấn đặc biệt - phải được chuyển sang Snowflake. Điều này dẫn đến cả chi phí cũng như không thể truy vấn kịp thời.


Giờ đây, các doanh nghiệp có thể truy cập trực tiếp dữ liệu trong các bộ chứa MinIO bằng cách sử dụng các khả năng truy cập bảng bên ngoài mới do Snowflake giới thiệu.


Thời gian dành cho truy vấn ban đầu sẽ phụ thuộc vào lượng dữ liệu đang được truyền, nhưng các lần đọc được lưu vào bộ đệm ẩn và các truy vấn tiếp theo có thể nhanh hơn cho đến lần làm mới tiếp theo.


Sử dụng cách tiếp cận bảng bên ngoài, dữ liệu không cần phải sao chép và bộ chứa có thể được sử dụng làm bảng bên ngoài cho các truy vấn, tham gia, v.v.


Tuy nhiên, đổi lại, lợi ích là rất lớn.


  • Điều này mở rộng khả năng của nhà kho mà không phát sinh chi phí di chuyển.
  • Hiện đã có khả năng chạy phân tích trên dữ liệu thời gian thực.
  • Hoàn toàn có thể tránh được việc di chuyển dữ liệu chỉ để chạy một truy vấn đặc biệt.
  • Có thể phân tích trong các trường hợp không thể di chuyển dữ liệu vì lý do tuân thủ hoặc các lý do kinh doanh khác.
  • Bạn vẫn nhận được tất cả các lợi thế của các khả năng của Snowflake với cùng các tài nguyên đã quen thuộc với nền tảng Snowflake


Một ví dụ đã được biểu diễn ở dưới:



Tài liệu tham khảo cho lệnh Snowflake CREATE EXTERNAL TABLE có sẵn tại đây: https://docs.snowflake.com/en/sql-reference/sql/create-external-table.html

Sử dụng Snowflake CLI (SnowSQL)

Các lệnh tương tự có thể được thực hiện bằng Snowflake CLI (SnowSQL).


Bạn có thể tìm hướng dẫn về cách cài đặt SnowSQL trên nền tảng của mình tại đây: https://docs.snowflake.com/en/user-guide/snowsql-install-config.html


Sự khác biệt duy nhất là bạn phải bắt đầu với lệnh


$ snowsql -a <account_identifier> -u <user_name>


Định danh tài khoản có định dạng <tên tổ chức>-<tên tài khoản>. Bạn có thể tìm thấy điều này từ trang Quản trị trong bảng điều khiển Snowflake.



Bản tóm tắt

Và đó là nó.


Nếu bạn là khách hàng của MinIO đang tìm cách thêm các khả năng của Snowflake hoặc nếu bạn là khách hàng của Snowflake đang muốn mở rộng khả năng của nó cho dữ liệu được lưu trữ bên ngoài Snowflake, hãy dùng thử. Dù bằng cách nào thì bạn cũng có thể thu được nhiều hơn từ khoản đầu tư hiện tại của mình.


Cũng được xuất bản ở đây .