Courses
Snowflake là gì?
Nếu ai đó yêu cầu tôi mô tả Snowflake trong ít từ nhất có thể, tôi sẽ chọn những từ này:
- Kho dữ liệu
- Dữ liệu quy mô lớn
- Đa đám mây
- Tách biệt
- Khả năng mở rộng
- Linh hoạt
- Đơn giản
Nếu họ muốn tôi diễn giải thêm, tôi sẽ xâu chuỗi các từ như sau:
Snowflake là một nền tảng đám mây dữ liệu AI cực kỳ phổ biến. Nó nổi bật so với các đối thủ nhờ khả năng xử lý dữ liệu và khối lượng công việc quy mô lớn nhanh chóng và hiệu quả hơn. Hiệu năng vượt trội đến từ kiến trúc độc đáo với lớp lưu trữ và lớp tính toán tách biệt, giúp nền tảng cực kỳ linh hoạt và có khả năng mở rộng. Bên cạnh đó, nó tích hợp nguyên bản với nhiều nhà cung cấp đám mây. Dù sở hữu các tính năng tiên tiến, Snowflake vẫn đơn giản để học và triển khai.
Nếu họ muốn biết chi tiết hơn nữa, thì tôi sẽ viết hướng dẫn này. Nếu bạn hoàn toàn mới, khóa học Giới thiệu về Snowflake của chúng tôi là điểm khởi đầu tuyệt vời.
Vì sao nên dùng Snowflake?
Snowflake phục vụ hơn 8.900 khách hàng trên toàn cầu và xử lý 3,9 tỷ truy vấn mỗi ngày. Những thống kê sử dụng như vậy chắc chắn không phải là trùng hợp.
Dưới đây là các lợi ích nổi bật của Snowflake khiến nền tảng này hấp dẫn:
1. Kiến trúc dựa trên đám mây
Snowflake hoạt động trên đám mây, cho phép các công ty tăng giảm tài nguyên theo nhu cầu mà không phải lo hạ tầng vật lý (phần cứng). Nền tảng cũng xử lý các tác vụ bảo trì thường kỳ như cập nhật phần mềm, quản lý phần cứng và tinh chỉnh hiệu năng. Điều này giảm gánh nặng vận hành, giúp tổ chức tập trung vào điều quan trọng: khai thác giá trị từ dữ liệu.
2. Đàn hồi và mở rộng
Snowflake tách biệt lớp lưu trữ và lớp tính toán, cho phép người dùng mở rộng tài nguyên tính toán độc lập với nhu cầu lưu trữ. Tính đàn hồi này giúp xử lý hiệu quả nhiều loại khối lượng công việc với hiệu năng tối ưu mà không phát sinh chi phí không cần thiết.
3. Tính đồng thời và hiệu năng
Snowflake dễ dàng xử lý mức độ đồng thời cao: nhiều người dùng có thể truy cập và truy vấn dữ liệu mà không bị suy giảm hiệu năng.
4. Chia sẻ dữ liệu
Các biện pháp bảo mật của Snowflake cho phép chia sẻ dữ liệu với các tổ chức khác, bộ phận nội bộ, đối tác bên ngoài, khách hàng hoặc các bên liên quan khác. Không cần các quy trình chuyển dữ liệu phức tạp.
5. Du hành thời gian
Snowflake dùng thuật ngữ thú vị “Time Travel” cho tính năng quản lý phiên bản dữ liệu. Mỗi khi có thay đổi trong cơ sở dữ liệu, Snowflake sẽ chụp một ảnh chụp nhanh. Điều này cho phép người dùng truy cập dữ liệu lịch sử tại nhiều thời điểm khác nhau.
6. Hiệu quả chi phí
Snowflake cung cấp mô hình trả phí theo mức sử dụng nhờ khả năng mở rộng tài nguyên linh hoạt. Bạn chỉ trả tiền cho những gì bạn dùng.
Tất cả những lợi ích này kết hợp lại khiến Snowflake trở thành một nền tảng đám mây dữ liệu AI rất đáng lựa chọn.
Giờ hãy cùng xem kiến trúc nền tảng của Snowflake – yếu tố mở khóa các tính năng trên.
Kho dữ liệu là gì?
Trước khi đi sâu vào kiến trúc của Snowflake, hãy điểm lại về kho dữ liệu để đảm bảo chúng ta cùng hiểu đúng.
Kho dữ liệu là một kho lưu trữ tập trung, chứa lượng lớn dữ liệu có cấu trúc và được tổ chức từ nhiều nguồn cho một công ty. Nhiều vai trò (nhân viên) trong tổ chức sử dụng dữ liệu bên trong để rút ra các insight khác nhau.
Ví dụ, các nhà phân tích dữ liệu phối hợp cùng đội marketing có thể chạy thử nghiệm A/B cho chiến dịch mới bằng cách dùng bảng doanh số. Chuyên viên nhân sự có thể truy vấn thông tin nhân viên để theo dõi hiệu suất.
Đó là vài ví dụ về cách các công ty trên toàn cầu sử dụng kho dữ liệu để thúc đẩy tăng trưởng. Nhưng nếu không được triển khai và quản trị đúng cách bằng các công cụ như Snowflake, kho dữ liệu sẽ chỉ dừng ở khái niệm hoành tráng.
Bạn có thể tìm hiểu thêm qua khóa học Kho dữ liệu của chúng tôi.
Kiến trúc Snowflake
Kiến trúc độc đáo của Snowflake, được thiết kế cho các truy vấn phân tích nhanh hơn, bắt nguồn từ việc tách biệt lớp lưu trữ và lớp tính toán. Sự phân tách này góp phần tạo nên những lợi ích chúng ta đã đề cập.
Lớp lưu trữ
Trong Snowflake, lớp lưu trữ là thành phần then chốt, lưu dữ liệu một cách hiệu quả và có khả năng mở rộng. Dưới đây là vài đặc điểm chính:
- Dựa trên đám mây: Snowflake tích hợp liền mạch với các nhà cung cấp đám mây lớn như AWS, GCP và Microsoft Azure.
- Định dạng dạng cột: Snowflake lưu dữ liệu theo định dạng cột, tối ưu cho truy vấn phân tích. Không giống các định dạng theo hàng truyền thống như Postgres, định dạng cột phù hợp cho tổng hợp dữ liệu. Với lưu trữ dạng cột, truy vấn chỉ truy cập đúng các cột cần thiết, nên hiệu quả hơn. Ngược lại, định dạng theo hàng đòi hỏi truy cập toàn bộ các hàng trong bộ nhớ ngay cả cho các phép tính đơn giản như tính trung bình.
- Phân vùng vi mô (micro-partitioning): Snowflake dùng kỹ thuật micro-partitioning để lưu bảng trong bộ nhớ theo các khối nhỏ. Mỗi khối thường là bất biến và chỉ vài megabyte, giúp tối ưu hóa và thực thi truy vấn nhanh hơn nhiều.
- Cloning không sao chép: Snowflake có tính năng độc đáo cho phép tạo các bản sao ảo của dữ liệu. Việc nhân bản diễn ra tức thời và không tiêu tốn thêm bộ nhớ cho đến khi có thay đổi trên bản sao mới.
- Quy mô và đàn hồi: Lớp lưu trữ mở rộng theo chiều ngang, nghĩa là có thể xử lý lượng dữ liệu tăng bằng cách bổ sung nhiều máy chủ để phân tán tải. Ngoài ra, việc mở rộng này diễn ra độc lập với tài nguyên tính toán, lý tưởng khi bạn muốn lưu trữ dữ liệu lớn nhưng chỉ phân tích một phần nhỏ.
Giờ hãy xem lớp tính toán.
Lớp tính toán
Đúng như tên gọi, lớp tính toán là động cơ thực thi truy vấn của bạn. Nó phối hợp với lớp lưu trữ để xử lý dữ liệu và thực hiện nhiều tác vụ tính toán. Dưới đây là chi tiết về cách lớp này vận hành:
- Kho ảo (Virtual Warehouses): Bạn có thể hình dung Kho Ảo như các đội máy tính (nút tính toán) chuyên xử lý truy vấn. Mỗi thành viên phụ trách một phần truy vấn, giúp việc thực thi cực nhanh và song song. Snowflake cung cấp Kho Ảo với nhiều kích thước và mức giá khác nhau (gồm XS, S, M, L, XL).
- Kiến trúc đa cụm, đa nút: Lớp tính toán dùng nhiều cụm với nhiều nút để đạt mức đồng thời cao, cho phép nhiều người dùng truy cập và truy vấn dữ liệu đồng thời.
- Tối ưu hóa truy vấn tự động: Hệ thống Snowflake phân tích mọi truy vấn và nhận diện mẫu để tối ưu dựa trên dữ liệu lịch sử. Các tối ưu phổ biến gồm cắt tỉa dữ liệu không cần thiết, dùng siêu dữ liệu và chọn lộ trình thực thi hiệu quả nhất.
- Bộ nhớ đệm kết quả: Lớp tính toán có bộ đệm lưu kết quả của các truy vấn thường xuyên chạy. Khi chạy lại cùng truy vấn, kết quả được trả về gần như tức thì.
Những nguyên tắc thiết kế này giúp Snowflake xử lý tốt nhiều loại khối lượng công việc đòi hỏi cao trên đám mây.
Lớp dịch vụ đám mây
Lớp cuối cùng là các dịch vụ đám mây. Vì lớp này tích hợp vào mọi thành phần của kiến trúc Snowflake, có rất nhiều chi tiết về cách nó vận hành. Bên cạnh các tính năng liên quan đến những lớp khác, nó còn đảm nhiệm các trách nhiệm sau:
- Bảo mật và kiểm soát truy cập: Lớp này thực thi các biện pháp bảo mật, bao gồm xác thực, phân quyền và mã hóa. Quản trị viên dùng kiểm soát truy cập dựa trên vai trò (RBAC) để xác định và quản lý vai trò, quyền của người dùng.
- Chia sẻ dữ liệu: Lớp này triển khai các giao thức chia sẻ dữ liệu an toàn giữa các tài khoản và thậm chí cả tổ chức bên thứ ba. Bên tiêu thụ dữ liệu có thể truy cập mà không cần di chuyển dữ liệu, thúc đẩy hợp tác và thương mại hóa dữ liệu.
- Hỗ trợ dữ liệu bán cấu trúc: Một lợi ích khác biệt của Snowflake là khả năng xử lý dữ liệu bán cấu trúc như JSON và Parquet, dù là một nền tảng quản trị kho dữ liệu. Snowflake có thể dễ dàng truy vấn dữ liệu bán cấu trúc và tích hợp kết quả với các bảng hiện có. Tính linh hoạt này không thường thấy ở các công cụ RDBMS khác.
Giờ khi đã có cái nhìn tổng quan về kiến trúc Snowflake, hãy viết vài câu lệnh SQL trên nền tảng này.
Thiết lập Snowflake SQL
Snowflake có phiên bản SQL riêng gọi là Snowflake SQL. Sự khác biệt giữa nó và các biến thể SQL khác cũng giống như khác nhau giữa các giọng tiếng Anh.
Nhiều truy vấn phân tích bạn thực hiện trong các biến thể như PostgreSQL không thay đổi, nhưng có một số khác biệt ở các lệnh DDL (Ngôn ngữ Định nghĩa Dữ liệu).
Giờ, hãy xem cách chạy vài truy vấn!
Snowsight: Giao diện web

Để bắt đầu với Snowsight, hãy truy cập trang dùng thử Snowflake 120 ngày và tạo tài khoản. Nhập thông tin cá nhân và chọn bất kỳ nhà cung cấp đám mây nào được liệt kê. Bạn sẽ nhận thời gian dùng thử 120 ngày thay vì 30 ngày như thông thường. Gói dùng thử cũng bao gồm tín dụng trị giá $400.
Khi đăng ký dùng thử, khuyến nghị người dùng chọn AWS và khu vực US-Oregon West. Một trong những lý do là Oregon là một trong những khu vực có chi phí hạ tầng AWS thấp nhất, do đó tín dụng dùng thử kéo dài hơn.
Sau khi xác minh email, bạn sẽ được chuyển đến trang Worksheets. Worksheets là môi trường lập trình tương tác, thời gian thực, nơi bạn có thể viết, thực thi và xem kết quả các truy vấn SQL.

Để chạy một vài truy vấn, chúng ta cần một cơ sở dữ liệu và một bảng (chúng ta sẽ không dùng dữ liệu mẫu trong Snowsight). Để bắt đầu, tôi gợi ý bạn thử tạo một cơ sở dữ liệu mới (bạn có thể đặt tên như test_db) và một bảng được đặt tên bằng cách dùng tệp CSV cục bộ. Bạn có thể tải tệp CSV bằng cách chạy mã trong gist GitHub này trong terminal của bạn.
Sau đó, bạn sẽ được chuyển đến một worksheet mới nơi bạn có thể chạy bất kỳ truy vấn SQL nào. Tôi thấy giao diện worksheet khá trực quan và rất hữu dụng. Dành vài phút để làm quen với các bảng điều khiển, nút bấm và vị trí của chúng.
Kết luận và học thêm
Ôi! Chúng ta bắt đầu với những khái niệm đơn giản, nhưng về cuối đã thật sự đi sâu vào các chi tiết rối rắm. Với tôi, đó là một hướng dẫn ổn.
Có lẽ bạn đã đoán được Snowflake còn nhiều thứ hơn những gì chúng ta đề cập. Thực tế, tài liệu Snowflake có các hướng dẫn khởi động nhanh nhưng dài đến 128 phút! Trước khi lao vào chúng, tôi khuyên bạn thực hành thêm với vài tài nguyên khác. Ví dụ như:
- Khóa học Giới thiệu về Snowflake
- Webinar về hiện đại hóa phân tích bán hàng với Snowflake
- Cùng code phân tích dữ liệu trong Snowflake bằng Python
- Hướng dẫn người dùng chính thức của Snowflake
- Snowflake Northstar để tìm hiểu thêm về tầm nhìn dài hạn của Snowflake.
Cảm ơn bạn đã đọc!
Tôi là người sáng tạo nội dung về khoa học dữ liệu với hơn 2 năm kinh nghiệm và là một trong những tài khoản có lượng theo dõi lớn nhất trên Medium. Tôi thích viết các bài chuyên sâu về AI và ML với chút giọng điệu mỉa mai, vì bạn cũng phải làm gì đó để chúng bớt nhàm chán. Tôi đã xuất bản hơn 130 bài viết và một khóa học trên DataCamp, và đang ấp ủ thêm một khóa nữa. Nội dung của tôi đã tiếp cận hơn 5 triệu lượt xem, trong đó có 20 nghìn người trở thành người theo dõi trên cả Medium và LinkedIn.
