Chuyển đến nội dung chính

Snowflake và Streamlit: Hướng dẫn toàn diện xây dựng ứng dụng dữ liệu

Hướng dẫn toàn diện cách xây dựng, triển khai và tối ưu hóa ứng dụng Streamlit trực tiếp trong Snowflake. Tận dụng framework Python mã nguồn mở phổ biến nhờ tích hợp với nền tảng đám mây mạnh mẽ.
· 15 phút đọc

Khám phá cùng AI

Snowflake là một nền tảng dữ liệu đám mây phổ biến và mạnh mẽ, còn Streamlit là một framework Python mã nguồn mở được thiết kế để xây dựng ứng dụng web dữ liệu. Streamlit in Snowflake (SiS) là giải pháp tích hợp cho phép bạn xây dựng và triển khai ứng dụng dữ liệu trực tiếp trong hệ sinh thái Snowflake. Thay vì phải xoay sở với nhiều công cụ riêng lẻ, bạn có thể dùng Python và hạ tầng của Snowflake để nhanh chóng tạo các ứng dụng tương tác.

Hướng dẫn này sẽ đưa bạn đi qua khái niệm Streamlit in Snowflake, các tính năng chính, các bước thiết lập, chiến lược triển khai, bảo mật, mẹo hiệu năng và các trường hợp sử dụng thực tế. Kết thúc, bạn sẽ có lộ trình rõ ràng để xây dựng và ra mắt ứng dụng dữ liệu đầu tiên. Hãy đảm bảo xem lại những điều căn bản về Snowflake và giao diện của nó. Tôi cũng khuyến nghị bạn thử Streamlit trong Python bên ngoài Snowflake để hiểu rõ chức năng qua hướng dẫn Streamlit này.

Streamlit in Snowflake là gì?

Streamlit in Snowflake giúp bạn xây dựng các ứng dụng tương tác kết nối trực tiếp với dữ liệu trên Snowflake mà không cần rời khỏi nền tảng.

Tổng quan về Streamlit in Snowflake

Streamlit in Snowflake kết hợp sự đơn giản của Streamlit với khả năng mở rộng của Snowflake. Trước đây, việc xây dựng ứng dụng cần máy chủ bên ngoài, API và tích hợp phức tạp. Streamlit chắt lọc chức năng cốt lõi thành một số API hướng đối tượng và tích hợp Python. Việc triển khai sau đó được chuyển giao cho Snowflake qua Snowsight.

Điều này loại bỏ nhu cầu về hạ tầng bổ sung và cung cấp một môi trường hợp nhất tích hợp liền mạch với Snowpark, Cortex AI và dữ liệu Snowflake của bạn. Nhờ đó, các lập trình viên Python và đội ngũ dữ liệu có thể làm việc từ cùng một nguồn mà không cần tốn công chuyển dữ liệu hay mã.

Bối cảnh lịch sử

Năm 2022, Snowflake mua lại Streamlit để đưa phát triển ứng dụng tương tác đến gần hơn với dữ liệu doanh nghiệp. Snowflake vẫn duy trì tầm nhìn mã nguồn mở của Streamlit: cho phép nhà phát triển dùng Python để tạo ứng dụng web đẹp mắt, đồng thời tích hợp với một trong những nền tảng dữ liệu mạnh mẽ nhất hiện có. Điều này cho phép doanh nghiệp linh hoạt sử dụng Streamlit với ít lo ngại về bảo mật hơn và hợp nhất việc phát triển ứng dụng.

Triết lý cốt lõi

Triết lý của SiS tập trung vào việc duy trì mức độ bảo mật và quản trị mà bạn kỳ vọng từ Snowflake, đồng thời mang lại sự dễ dùng của Streamlit để xây dựng ứng dụng web dữ liệu. Vì toàn bộ dữ liệu vẫn nằm trong Snowflake, bạn có được các đảm bảo về an ninh và an toàn như mong đợi.

Điểm cộng lớn là tập trung đảm bảo framework Python vẫn giữ nguyên và mang lại trải nghiệm tương tự trên Snowflake như khi dùng ngoài Snowflake. Điều này giúp SiS dễ tiếp cận cho những nhà phát triển đã dùng Streamlit trước đây hoặc bất kỳ ai có kinh nghiệm Python, muốn tận dụng kỹ năng sẵn có để xây dựng ứng dụng web cho dữ liệu trên Snowflake.

Các tính năng và khả năng chính của Streamlit in Snowflake

Streamlit in Snowflake giữ những đặc tính đám mây cốt lõi của Snowflake như quản lý hoàn toàn và cộng tác dễ dàng. Đồng thời có chức năng trực quan hóa và lặp nhanh của Streamlit trong khi được tích hợp với hạ tầng.

Dịch vụ được quản lý hoàn toàn

Snowflake quản lý toàn bộ hạ tầng phía sau, nghĩa là bạn không phải lo về máy chủ, khả năng mở rộng hay tính ổn định. Ứng dụng chạy với tính tương tác thời gian thực, tự động mở rộng theo mức sử dụng và hưởng lợi từ độ tin cậy tích hợp sẵn của Snowflake.

Tích hợp với hạ tầng Snowflake

Các ứng dụng Streamlit trong Snowflake kết nối gốc với Snowpark, Cortex AI và cơ sở dữ liệu. Ví dụ, bạn có thể tích hợp Cortex AI Analyst vào ứng dụng Streamlit, cho phép người dùng đặt câu hỏi ngôn ngữ tự nhiên về dữ liệu và nhận câu trả lời ngay trong bảng điều khiển.

Các tính năng khác của Snowflake như bộ nhớ đệm tích hợp giúp giảm truy vấn dư thừa, trong khi cải tiến giao diện như chế độ tối và thành phần tùy chỉnh giúp nâng cao trải nghiệm người dùng. Xác thực và kết nối an toàn được xử lý tự động thông qua các giao thức xác thực của Snowflake. Độ nhạy dữ liệu có thể được quản lý bằng kiểm soát dựa trên vai trò của Snowflake.

Điều này đơn giản hóa công việc quản lý dữ liệu và giúp nhà phát triển tập trung xây dựng công cụ.

Trực quan hóa tương tác và lặp nhanh

Một trong những điểm mạnh lớn nhất của Streamlit là khả năng biến một script Python đơn giản thành ứng dụng tương tác chỉ trong vài phút. Trên Snowflake, bạn có thể xem trước và lặp trực tiếp trên ứng dụng, cập nhật mã và thấy kết quả tức thời mà không phải chờ triển khai dài dòng.

Chia sẻ và cộng tác

Ứng dụng Streamlit có thể được chia sẻ trực tiếp với người dùng trong Snowflake. Điều này giúp bạn dễ dàng chia sẻ ứng dụng cho các nhóm khác nhau bằng vai trò hoặc cho từng cá nhân. Cộng tác được tích hợp trong quy trình, cho phép nhiều thành viên cùng phát triển, kiểm thử và triển khai ứng dụng.

Bắt đầu với Streamlit in Snowflake

Bắt đầu với SiS khá đơn giản, bạn có thể tạo ứng dụng đầu tiên trong vài phút. Chúng ta chỉ cần đảm bảo bạn có quyền phù hợp và kiến thức cần thiết.

Điều kiện tiên quyết

Để xây dựng ứng dụng Streamlit trong Snowflake, bạn cần tài khoản Snowflake đang hoạt động với quyền truy cập Snowsight, giao diện web. Giới thiệu về Snowflake này có thể hướng dẫn bạn điều hướng Snowsight. Bạn nên có kiến thức cơ bản về Python. Cũng đáng để ôn lại qua khóa học nhập môn Python để củng cố kiến thức.

Khi đã có quyền truy cập Snowflake, hãy đảm bảo bạn có các quyền sau:

  • Quyền cơ sở dữ liệu: USAGE
  • Quyền schema: USAGE, CREATE STREAMLIT, CREATE STAGE

Thiết lập tài khoản và cấu hình môi trường

Bắt đầu bằng cách đăng nhập vào Snowsight và chọn hoặc tạo cơ sở dữ liệu và schema nơi ứng dụng của bạn sẽ chạy. Vào My Workspace và mở một tệp SQL mới. Hãy tạo một vai trò tên streamlit_creator có quyền truy cập vào streamlit_schema trên streamlit_database. Ngoài ra, chúng ta sẽ tạo một warehouse tên streamlit_wh làm nguồn tính toán chính cho ứng dụng Streamlit.

CREATE ROLE streamlit_creator;
CREATE DATABASE streamlit_db;
USE DATABASE streamlit_db;
CREATE SCHEMA streamlit_schema;
CREATE WAREHOUSE streamlit_wh WITH WAREHOUSE_SIZE = ‘XSMALL’;
GRANT USAGE ON SCHEMA streamlit_db.streamlit_schema TO ROLE streamlit_creator;
GRANT USAGE ON DATABASE streamlit_db TO ROLE streamlit_creator;
GRANT USAGE ON WAREHOUSE streamlit_wh TO ROLE streamlit_creator;
GRANT CREATE STREAMLIT ON SCHEMA streamlit_db.streamlit_schema TO ROLE streamlit_creator;
GRANT CREATE STAGE ON SCHEMA streamlit_db.streamlit_schema TO ROLE streamlit_creator;

Xây dựng ứng dụng Streamlit đầu tiên của bạn

Để cụ thể, hãy cùng đi qua một ứng dụng đơn giản. Khi tài khoản Snowflake và quyền đã sẵn sàng, trong Snowsight điều hướng tới PROJECTS >> Streamlit. Trong cửa sổ này, nhấp + Streamlit App ở góc trên bên phải.

Điền Tên ứng dụng bằng bất kỳ tên nào bạn muốn. Cập nhật vị trí ứng dụng để dùng STREAMLIT_DB và STREAMLIT_SCHEMA. Sau đó chọn “Run on warehouse” rồi chọn “STREAMLIT_WH” làm App Warehouse.

Trình soạn thảo sẽ mở ra với một script nhỏ mặc định. Ứng dụng cũng sẽ tự động chạy và hiển thị bản xem trước.

Hãy thử thêm một chút dữ liệu mà chúng ta quan tâm vào ứng dụng. Đặt đoạn mã nhỏ này ở cuối phần mã hiện có:

	from snowflake.snowpark.functions import sum as sf_sum
	st.title("Simple Sales Dashboard")
	st.write("This app displays sales by part using Snowflake data.")

	# Query sample dataset
	df = (
	    session.table("SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.LINEITEM")
	    .group_by("L_PARTKEY")
	    .agg(sf_sum("L_QUANTITY").alias("TOTAL_SALES"))
	    .limit(10)
	    .order_by("TOTAL_SALES", ascending=False)
	    .to_pandas()
	)

	# Plot chart
	st.bar_chart(data=df, x="L_PARTKEY", y="TOTAL_SALES")

	# Show table
	st.dataframe(df)

	

Sau đó nhấn nút “Run” ở góc trên bên phải. Bản xem trước trong ứng dụng sẽ cập nhật và xử lý dữ liệu từ bảng mẫu. Bạn sẽ thấy cả bảng dữ liệu và biểu đồ cột. Từ đây, bạn có thể tùy chỉnh truy vấn, thêm bộ lọc hoặc nâng cấp giao diện với các widget của Streamlit.

Bạn sẽ nhận thấy ở đây có việc sử dụng Snowpark. Nếu bạn chưa dùng, Snowpark là thư viện của Snowflake cho phép xử lý dữ liệu Snowflake bằng các ngôn ngữ lập trình như Python. Tôi rất khuyến nghị bài giới thiệu Snowpark này, vì việc đưa dữ liệu vào Streamlit thường cần dùng Snowpark để giao tiếp với các cơ sở dữ liệu Snowflake của bạn.

Chiến lược và phương pháp triển khai

Có vài cách khác nhau để triển khai Streamlit in Snowflake. Dễ nhất là dùng Snowsight, giao diện web, nhưng bạn cũng có thể dùng công cụ dòng lệnh (CLI). Ngoài ra, bạn có thể thêm công cụ workflow để hỗ trợ tổ chức dự án và mở rộng triển khai.

Triển khai qua Snowsight

Như đã trình bày ở phần trước, cách đơn giản nhất là qua Snowsight, giao diện web của Snowflake. Điểm cộng là chế độ chia đôi màn hình để chỉnh sửa và xem trước ứng dụng theo thời gian thực. Thiết lập này lý tưởng cho nhà phát triển muốn phản hồi tức thời trong quá trình phát triển.

Triển khai qua CLI

Với các kịch bản nâng cao hơn, công cụ CLI cho phép bạn triển khai ứng dụng theo lập trình. Điều này đặc biệt hữu ích khi tích hợp triển khai ứng dụng vào pipeline tích hợp liên tục và phân phối liên tục (CI/CD). Theo cách tiếp cận nhà phát triển có cấu trúc, ứng dụng có thể được lưu trong thư mục dự án dưới dạng tệp .py như các ứng dụng Streamlit thông thường, cùng với các tệp .yml để kiểm soát môi trường và lệnh Snowflake. Nhờ vậy, chúng ta có thể dùng GitHub để theo dõi thay đổi, chạy kiểm tra tự động và triển khai liền mạch.

Tích hợp với dbt và công cụ workflow

Một lựa chọn khác là kết hợp ứng dụng Streamlit với các công cụ workflow như dbt (data build tool), vốn được Snowflake hỗ trợ tự nhiên. Ví dụ, dbt có thể quản lý workflow ETL cốt lõi chảy vào ứng dụng Streamlit của bạn. Ngay trong cùng một dự án dbt, bạn có thể tự động triển khai lại Streamlit khi cần để phù hợp với workflow dbt. Điều này cho phép bạn tổ chức các workflow dữ liệu phức tạp gọn gàng trong dự án và mở rộng triển khai song hành với workflow.

Kiến trúc và triển khai kỹ thuật

Hãy nói về cách Streamlit in Snowflake vận hành thực tế.

Kiến trúc kỹ thuật

Ứng dụng Streamlit in Snowflake chạy trong môi trường dựa trên container an toàn, được Snowflake quản lý hoàn toàn. Thiết kế này đảm bảo ứng dụng được cách ly, đồng thời duy trì kết nối an toàn tới nguồn dữ liệu và dịch vụ của Snowflake. Khi độ phức tạp ứng dụng tăng hoặc kích thước cơ sở dữ liệu lớn hơn, Snowflake sẽ quản lý việc mở rộng ở backend.

Quản lý warehouse

Khi bạn khởi chạy ứng dụng, nó tiêu thụ tài nguyên tính toán từ warehouse đã cấu hình. Giống như truy vấn SQL, kích thước warehouse ảnh hưởng cả hiệu năng và chi phí, nên việc lập kế hoạch tài nguyên rất quan trọng. Nhà phát triển thường thấy hữu ích khi gắn một warehouse riêng cho ứng dụng Streamlit để dễ theo dõi. Ngoài ra, Snowflake dùng các internal stage để lưu trữ tệp an toàn, ngăn dữ liệu rò rỉ ra ngoài nền tảng. Điều này đơn giản hóa việc đưa dữ liệu vào ứng dụng trong khi vẫn đảm bảo an toàn dữ liệu.

Gói Python và môi trường

Môi trường Python trong SiS được quản lý và tuyển chọn vì lý do bảo mật. Chỉ các gói đã được phê duyệt mới khả dụng và bị hạn chế cài đặt gói bên ngoài. Thêm vào đó, một số thứ như script, style, font và nhúng iframe bị hạn chế vì lý do an toàn. Nếu bạn cần chức năng vượt ngoài phạm vi cung cấp, có thể phải triển khai qua Snowpark UDF hoặc dựa vào thư viện Python hiện có mà Snowflake hỗ trợ.

Mô hình bảo mật và phân quyền

May mắn là SiS tận dụng nhiều hạ tầng bảo mật sẵn có của Snowflake, như kiểm soát truy cập dựa trên vai trò, chia sẻ và bảo mật mạng.

Kiểm soát truy cập dựa trên vai trò (RBAC)

Snowflake sử dụng hệ thống RBAC cho ứng dụng Streamlit và dữ liệu của chúng. Truy cập dữ liệu yêu cầu đặc quyền USAGE cho bất kỳ ứng dụng Streamlit và dữ liệu nền tảng của nó. Chỉ các vai trò có đặc quyền CREATE STREAMLIT mới được xây dựng ứng dụng, và quyền sở hữu ứng dụng gắn với quyền cấp schema. Điều này đảm bảo kiểm soát rõ ràng ai có thể phát triển và quản lý ứng dụng.

Chia sẻ và kiểm soát truy cập

Chia sẻ ứng dụng cũng được kiểm soát tương tự. Bạn có thể cấp hoặc hạn chế quyền truy cập dựa trên vai trò người dùng. Với việc thực thi SQL, nó tuân theo cùng cơ chế quyền dựa trên vai trò. SQL được chạy thông qua ứng dụng Streamlit và không cho phép nhà phát triển chạy truy vấn trên cơ sở dữ liệu nếu không có quyền phù hợp.

Bảo mật mạng và nội dung

Về phía mạng, Snowflake áp dụng các chính sách bảo mật nội dung (CSP) nghiêm ngặt. Những chính sách này ngăn ứng dụng tải các script, style hoặc tài nguyên bên ngoài trái phép, giảm rủi ro rò rỉ dữ liệu hoặc tích hợp không an toàn. Bằng cách tối thiểu hóa thư viện bên ngoài được nhập vào môi trường, rủi ro lỗ hổng bảo mật được giảm bớt và quyền riêng tư của dữ liệu, người dùng được bảo vệ.

Tối ưu hóa hiệu năng Streamlit trên Snowflake

Khi ứng dụng của bạn trở nên phức tạp hơn, tối ưu hóa đúng cách rất quan trọng để duy trì hoạt động ổn định.

Tối ưu truy vấn và bộ nhớ đệm

Xây dựng ứng dụng hiệu quả đòi hỏi chú ý cả truy vấn lẫn tài nguyên tính toán. Nên thử nghiệm truy vấn bên ngoài ứng dụng Streamlit (trên warehouse tương tự) để hiểu mức tính toán cần thiết. Viết truy vấn SQL tối ưu là điều cốt yếu để tránh nút thắt cổ chai.

Các hàm bộ nhớ đệm tích hợp của Streamlit là st.cache_data và st.cache_resource giúp giảm tính toán lặp lại và tải lại dữ liệu. Tuy nhiên, một điểm lưu ý là st.cache_data và st.cache_resource chưa được hỗ trợ đầy đủ. Chúng chỉ cho phép bộ nhớ đệm theo phiên, nghĩa là mỗi khi người dùng mở phiên mới, truy vấn và dữ liệu sẽ cần tải lại. Hãy ghi nhớ điều đó và tối ưu truy vấn tối đa có thể.

Lựa chọn và cấu hình warehouse

Lựa chọn warehouse đóng vai trò lớn trong độ phản hồi của ứng dụng. Warehouse lớn hơn giúp tăng tốc nhưng cũng tăng chi phí. Với ứng dụng lưu lượng cao, warehouse chuyên dụng có thể là lựa chọn tốt nhất. Ngược lại, ứng dụng nhẹ thường có thể chạy trên warehouse nhỏ mà không gặp vấn đề hiệu năng.

Kiến trúc ứng dụng

Kiến trúc ứng dụng cũng quan trọng. Tải dữ liệu theo tiến trình và quản lý trạng thái có thể giúp ứng dụng phản hồi tốt hơn, đặc biệt khi làm việc với bộ dữ liệu lớn. Cố gắng không tải toàn bộ ứng dụng cùng lúc nếu có nhiều thành phần. Chỉ tải những gì người dùng cần tại từng thời điểm. Thiết kế ứng dụng với ràng buộc tài nguyên trong đầu giúp tránh các vấn đề như giới hạn kích thước thông điệp hoặc bộ nhớ.

Trường hợp sử dụng và ví dụ ứng dụng của Streamlit in Snowflake

Vượt ra ngoài các bảng điều khiển và ứng dụng dữ liệu đơn giản, Streamlit in Snowflake có thể tận dụng các công cụ mạnh mẽ cho machine learning, AI, BI và NLP. Hãy điểm qua một vài trường hợp sử dụng.

Business intelligence và trực quan hóa dữ liệu

Với các đội phân tích, Streamlit in Snowflake là cách để xây dựng bảng điều khiển tương tác và công cụ báo cáo. Kết nối với cơ sở dữ liệu Snowflake cho phép cập nhật thời gian thực giúp ra quyết định tốt hơn. Bạn có thể nhanh chóng triển khai các ứng dụng tương tự hướng tới các phòng ban và nhóm khác nhau. Ví dụ gồm có bộ theo dõi tồn kho, bảng điều khiển sử dụng compute, hoặc tóm tắt hiệu suất cho lãnh đạo. Chẳng hạn, chúng ta có thể xây dựng phân tích trung tâm cuộc gọi với tích hợp Snowflake Cortex và Snowpark vào ứng dụng Streamlit bằng cách lấy bản ghi văn bản cuộc gọi và tạo phân tích về các cuộc gọi.

Machine learning và AI

Để thực sự khai thác dữ liệu, ứng dụng Streamlit có thể được thiết kế cho machine learning và insight AI. Ví dụ, các đội ML có thể triển khai ứng dụng tương tác phục vụ mô hình dự báo nhu cầu, phân khúc khách hàng hoặc phát hiện bất thường. Với Cortex AI, nhà phát triển cũng có thể tạo ứng dụng RAG (retrieval augmented generation) hoặc công cụ AI hội thoại. Một triển khai hay là bổ sung các mô hình PyTorch cung cấp gợi ý mua thêm có mục tiêu dựa trên hồ sơ từng khách hàng, tất cả được đóng gói trong một ứng dụng suy luận trực quan.

NLP và phân tích nâng cao

Để rút trích insight từ phản hồi dạng văn bản như chat và email, xử lý ngôn ngữ tự nhiên là hướng đi phù hợp. Sử dụng thư viện như spaCy, NLTK, hoặc xử lý văn bản bằng Cortex AI nội bộ của Snowflake, chúng ta có thể lấy toàn bộ thông tin văn bản này và xây dựng công cụ phân tích cảm xúc, nhận dạng thực thể có tên và các giải pháp NLP khác. Ví dụ, chúng ta có thể dùng Snowflake Cortex để xử lý phần lớn phân tích NLP như tóm tắt và phân tích cảm xúc. Dữ liệu này sau đó cung cấp cho cơ sở dữ liệu để tạo phân tích về đánh giá và chat hỗ trợ bằng Streamlit in Snowflake.

Ứng dụng thu thập và nhập liệu

Ứng dụng Streamlit cũng phù hợp cho thu thập dữ liệu và quản lý chất lượng, như công cụ gán nhãn (annotation) hoặc giao diện nhập liệu cộng tác. Mặc dù tải lên dữ liệu bị giới hạn 200MB, chúng ta có thể cung cấp nơi để người dùng tải lên bộ dữ liệu nhỏ hoặc tài liệu để xử lý hay tóm tắt trong ứng dụng. Khả năng là vô tận!

Tích hợp với hệ sinh thái Snowflake

Sự hiện diện của Streamlit trong Snowflake trở nên mạnh mẽ nhờ vô số tích hợp bạn có được trong hệ sinh thái như Snowpark và chia sẻ dữ liệu.

Tích hợp với Snowpark

Snowpark giúp việc phân tích bằng Python với Snowflake trở nên dễ dàng. Nó hỗ trợ xử lý dữ liệu nâng cao, tính toán phân tán và hàm tùy chỉnh. Vì chúng ta có thể dùng dataframe Snowpark gốc trong ứng dụng Streamlit in Snowflake, ta có thể tận dụng điều này dễ dàng với rất ít chi phí bổ sung. Sử dụng các thủ tục lưu trữ và UDF trong môi trường Snowflake trở nên đơn giản với đối tượng udf của Snowpark.

Chia sẻ dữ liệu và tự động hóa

Chia sẻ dữ liệu trong Snowflake rất đơn giản, và với giao diện Snowsight, chỉ cần vài cú nhấp. Thêm vào đó là Snowflake Tasks và các tính năng theo sự kiện, nhà phát triển có thể dễ dàng tự động hóa workflow. Ví dụ, bạn có thể kích hoạt cập nhật ứng dụng khi dữ liệu mới đến, thực hiện kiểm tra dữ liệu để đảm bảo không có gì hỏng và giữ dữ liệu luôn mới.

Khi kết hợp với dbt, bạn có thể tạo workflow đầu-cuối nơi các biến đổi dữ liệu chảy trực tiếp vào ứng dụng Streamlit, đảm bảo cập nhật thời gian thực cho người dùng.

Hóa đơn và cân nhắc chi phí

Như mọi nền tảng đám mây khác, hóa đơn và chi phí là quan trọng. Một ứng dụng Streamlit đắt đỏ sẽ ít được sử dụng hơn, nên cân nhắc chi phí từ trước sẽ đảm bảo quá trình phát triển suôn sẻ.

Hiểu về chi phí cho Streamlit in Snowflake

Chi phí cho Streamlit in Snowflake giống như các tiến trình khác trong Snowflake. Nếu bạn có cơ sở dữ liệu/schema riêng cho Streamlit, bạn sẽ có chi phí lưu trữ thông thường gắn với dữ liệu đó. Như đã đề cập, bạn rất có thể muốn tạo một warehouse riêng cho dịch vụ Streamlit in Snowflake để theo dõi chi phí tính toán. Kích thước warehouse lớn, mức độ đồng thời của ứng dụng (nhiều phiên người dùng) và khối lượng dữ liệu sẽ là các yếu tố chính chi phối chi phí.

Tối ưu hóa sử dụng tài nguyên

Để kiểm soát chi tiêu, chọn kích thước warehouse phù hợp là quan trọng. Ứng dụng nhỏ với tải nhẹ nên tránh dùng warehouse quá lớn không cần thiết. Bộ nhớ đệm của Streamlit giúp giảm truy vấn lặp lại trong phiên, từ đó giảm mức sử dụng compute. Snowflake cũng cung cấp công cụ giám sát theo dõi mức tiêu thụ để bạn điều chỉnh chi phí dựa trên dữ liệu.

Hạn chế và lưu ý

Dù Streamlit in Snowflake rất mạnh, vẫn có một số hạn chế cần lưu ý, đặc biệt liên quan đến gói bên ngoài và tải lên tệp.

Hạn chế chính sách bảo mật nội dung (CSP)

Nền tảng áp dụng chính sách bảo mật nội dung nghiêm ngặt để đảm bảo an toàn dữ liệu. Những thứ như script tùy chỉnh, style, và các nội dung yêu cầu domain bên ngoài có khả năng bị chặn. Đảm bảo bất kỳ thành phần nào bạn dùng không yêu cầu gọi ra ngoài. Điều này cải thiện đáng kể độ an toàn cho ứng dụng, nhưng cũng hạn chế một phần khả năng tùy biến nếu bạn quen với các triển khai Streamlit riêng.

Hạn chế truyền dữ liệu và bộ nhớ đệm

Xử lý bộ dữ liệu lớn có thể là thách thức do một số hạn chế trong bộ nhớ đệm và truyền thông điệp. Hạn chế chính của bộ nhớ đệm là theo phiên chứ không theo người dùng. Vì vậy, người dùng quay lại ứng dụng và bắt đầu phiên mới sẽ phải tải lại dữ liệu. Hãy cân nhắc kỹ người dùng của bạn và liệu họ có phải khởi động phiên mới nhiều lần hay không. Nếu có, nghĩ cách tối thiểu hóa tải dữ liệu giữa các phiên.

Mặc dù không có giới hạn rõ ràng về kích thước truy vấn hay lượng dữ liệu trong bộ nhớ, thông điệp có giới hạn 32 MB. Điều này có nghĩa hiển thị dataframe lớn và bản đồ cực kỳ phức tạp có thể là yếu tố hạn chế. Hãy cân nhắc điều gì là thiết yếu để hiển thị cho người dùng và điều gì có thể tinh gọn.

Hạn chế tải lên tệp và lưu trữ bên ngoài

Tải lên tệp hoạt động được nhưng giới hạn ở 200MB. Bạn cũng sẽ không thể làm việc trực tiếp với external stage và cần chuyển dữ liệu vào Snowflake trước. Vì vậy, kéo trực tiếp từ Apache Iceberg sẽ không hoạt động, nhưng lấy từ data lake nội bộ cho dữ liệu đó thì có.

Ngoài ra, chức năng tải lên tệp bị giới hạn về dung lượng và hiện chưa hỗ trợ external stage, hạn chế cách ứng dụng xử lý tệp.

Kết luận

Streamlit in Snowflake mang đến cách thức mạnh mẽ và tích hợp để xây dựng, triển khai ứng dụng dữ liệu tương tác mà không cần rời môi trường Snowflake. Nó kết hợp bảo mật, khả năng mở rộng và tính dễ dùng, đồng thời hỗ trợ tích hợp nâng cao với Snowpark, Cortex AI và dbt.

Mặc dù có những hạn chế, như giới hạn về tài nguyên bên ngoài và tải lên tệp, lợi ích về lặp nhanh, hạ tầng được quản lý và chia sẻ liền mạch khiến SiS trở thành nền tảng mang tính chuyển đổi cho các đội dữ liệu. Những người mới có thể bắt đầu nhỏ—thử nghiệm với bảng điều khiển đơn giản—và mở rộng tới các ứng dụng AI và phân tích sẵn sàng cho doanh nghiệp. Để biết thêm về Snowflake, hãy xem các nội dung sau:

Câu hỏi thường gặp về Snowflake Streamlit

Snowflake Streamlit là gì và khác gì so với Streamlit thông thường?

Snowflake Streamlit là phiên bản Streamlit được quản lý hoàn toàn, chạy gốc bên trong Snowflake, loại bỏ nhu cầu về máy chủ hay hạ tầng riêng. Streamlit thông thường yêu cầu bạn tự chạy/lưu trữ.

Cần biết Python ở mức nào để bắt đầu?

Kiến thức Python cơ bản là đủ. Nếu bạn có thể viết hàm, import thư viện và hiểu dataframe (ví dụ với Pandas), bạn có thể nhanh chóng xây dựng ứng dụng đơn giản.

Sự khác nhau chính giữa triển khai qua Snowsight và CLI là gì?

Snowsight trực quan và thân thiện cho người mới, phù hợp để tạo nguyên mẫu. CLI phù hợp hơn cho tự động hóa, quản lý phiên bản và pipeline CI/CD.

Chạy ứng dụng Streamlit trong Snowflake có ảnh hưởng đến mức tiêu thụ credit không?

Có. Vì ứng dụng Streamlit truy vấn dữ liệu từ Snowflake, việc chạy chúng sẽ tiêu tốn credit tính toán, tương tự như chạy truy vấn. Tối ưu truy vấn giúp quản lý chi phí.

Có thể tích hợp ứng dụng Snowflake Streamlit với GitHub hoặc CI/CD không?

Có. Sử dụng Snowflake CLI, bạn có thể tích hợp triển khai ứng dụng vào pipeline CI/CD (ví dụ GitHub Actions), giúp tự động cập nhật khi mã thay đổi.

Tim Lu

Tác giả

Tim Lu

Tôi là một nhà khoa học dữ liệu có kinh nghiệm về phân tích không gian, học máy và đường ống dữ liệu. Tôi đã làm việc với GCP, Hadoop, Hive, Snowflake, Airflow và các quy trình khoa học/kỹ thuật dữ liệu khác.

Chủ đề

Liên quan