Knowledge hub công nghệ ứng dụng thực chiến tại Việt Nam Weekly digest · Đăng ký →
Data Engineering

Data Engineer Nên Dùng Python Hay SQL Để Chuyển Đổi Dữ Liệu?

Nếu bạn theo dõi lĩnh vực dữ liệu nói chung và Data Engineer nói riêng. Bạn có thể nhận thấy hai trường phái: Một bên…

NNguyễn Quân
Theo dõi
dùng Python hay SQL cho Data Engineer

Nếu bạn theo dõi lĩnh vực dữ liệu nói chung và Data Engineer nói riêng. Bạn có thể nhận thấy hai trường phái: Một bên sử dụng SQL và một bên sử dụng Python để xử lý dữ liệu. Điều này có thể gây khó khăn và bối rối khi bạn phải chọn công cụ phù hợp giữa công việc hoàn thành công việc nhanh chóng và sử dụng công cụ chính xác.

1. Vấn đề đặt ra là?

Nếu bạn:

  • Đang gặp khó khăn trong việc hiểu khi nào nên sử dụng Python và khi nào nên sử dụng SQL cho dữ liệu biến đổi tác vụ
  • Không được thuyết phục bởi những lời khuyên như “Chỉ cần dùng Python” hoặc “Chỉ cần dùng SQL”
  • Muốn biết rõ hơn về các sắc thái và đánh dấu khi sử dụng Python hoặc SQL trong quá trình biến đổi dữ liệu

Thì bài viết này dành cho bạn. Hiểu cách thức tương tác giữa bộ thực thi và mã hóa, cũng như các thay đổi mà bạn có thể lựa chọn, sẽ giúp bạn có được một mô hình tư duy để đưa ra quyết định về khách hàng, có tính toán về công cụ nào phù hợp với trường hợp cụ thể của bạn.

Kết thúc bài viết này, bạn sẽ hiểu cách máy thực thi ảnh hưởng đến hiệu suất của quy trình. Bạn sẽ có một danh sách các tiêu chí để cân nhắc khi sử dụng Python hoặc SQL để xử lý dữ liệu nhiệm vụ. Với danh sách kiểm tra này, bạn có thể tận dụng tối đa lợi ích của mỗi công cụ.

Khi nào nên sử dụng Python và khi nào nên sử dụng SQL cho dữ liệu thay đổi biến tác vụ
Khi nào nên sử dụng Python và khi nào nên sử dụng SQL cho dữ liệu thay đổi biến tác vụ

2. Mã là giao diện của máy thực thi

Python, Dataframe, SQL

Như bạn có thể thấy từ hình ảnh trên, dữ liệu chuyển đổi mã hóa của bạn sẽ được thực thi trong một trong các máy thực thi này.

Mã của bạn là giao diện thân thiện với kỹ sư để tương tác với bộ máy thực thi. Mặc dù bạn có thể viết mã trực tiếp trên bộ máy thực thi (trong Rust, C++, JVM), nhưng các giao diện như dataframe/SQL/Python cung cấp cao cấp các đối tượng vật thể, giúp xử lý hầu hết các tác vụ xử lý dữ liệu (không hạn chế như JOIN trong SQL).

Không phải tất cả các giao diện đều tương thích với mọi bộ máy thực thi (ví dụ: Python clean sẽ chạy trong CPython, vv).

Lưu ý: Ibis là một dự án nhắm cung cấp giao diện cho nhiều bộ máy thực thi khác nhau (gọi là backend).

3. Cách chọn bộ thực thi và mã giao diện

Trong phần này, chúng tôi sẽ xem xét các tiêu chí để chọn bộ máy thực thi và mã giao diện.

Mặc dù tầng thuộc tính quen thuộc và cơ sở hạ tầng hiện rất quan trọng, nhưng chúng tôi cho rằng đây là một dự án mới để có thể đánh giá khách hàng về các tiêu chí.

Chúng tôi cũng giả định rằng mã Python và SQL đều đạt chất lượng tốt, vì trong cả hai ngôn ngữ đều có thể viết mã không tốt. Nếu không có định nghĩa này, sẽ không thể so sánh các mã giao diện.

3.1. Choose the machine xác thực dựa trên công việc khối lượng của bạn

Trước khi chọn mã giao diện, bạn cần chọn bộ thực thi. Bộ máy thực thi là phần quan trọng nhất trong quá trình chuyển đổi dữ liệu, vì nó đảm bảo trách nhiệm thực hiện biến đổi dữ liệu.

3.1.1. Các loại máy thực thi

Có ba loại chính của máy thực thi:

  • Ngôn ngữ máy chủ: Một quy trình nhận mã của bạn và yêu cầu thực thi logic này. Ví dụ: CPython, JVM, BEAM, vv
  • Hệ thống xử lý bài hát (MPP): Hệ thống sử dụng nhiều nút để xử lý dữ liệu. Ví dụ: Spark, Clickhouse, Ray, Snowflake, BigQuery, vv
  • Hệ thống xử lý dữ liệu một nút: Khi MPP có thể chạy trên một nút duy nhất, việc khởi động và dừng MPP tạo ra nhiều chi phí không cần thiết đối với khối lượng dữ liệu nhỏ hơn. Hệ thống một nút được thiết kế để xử lý dữ liệu trên một máy duy nhất, ví dụ: DuckDB, Polars, vv

3.1.2. Tiêu chí để chọn bộ thực thi

Chọn bộ máy thực thi rất quan trọng vì nó sẽ ảnh hưởng đến loại xử lý dữ liệu mà bạn có thể thực hiện, kích thước dữ liệu mà bạn có thể xử lý và mã hóa giao diện mà bạn có thể sử dụng.

Dưới đây là các tiêu chí quan trọng cần xem xét khi chọn bộ máy thực thi:

  • Hiệu suất : MPP và hệ thống xử lý một nút gần như luôn hoạt động tốt hơn so với việc phát triển tùy chọn chỉnh sửa trong Python. Điều này thường làm cho các hệ thống này được ưu tiên hóa tối đa để xử lý kết quả hiệu ứng dữ liệu.
  • Loại biến đổi : MPP hoạt động tốt với các loại biến đổi SQL tác vụ (các thao tác trên từng hàng, JOIN, tập hợp, và Windows); tuy nhiên, chúng tôi không tốt khi cần thực hiện các vòng lặp phức tạp, đệ quy, v.v. Các thuật toán ML yêu cầu vòng lặp và đệ quy tạo ra các hệ thống dựa trên khung dữ liệu/SQL khó thực hiện hiệu quả.
  • Chi phí : MPP rất quyến rũ khi vận hành, đặc biệt nếu bạn thuê nhà cung cấp để quản lý (ví dụ: Databricks, Snowflake, vv), và họ tính phí dựa trên lượng xử lý dữ liệu, có thể nhanh chóng tăng tốc.
  • Dữ liệu kích thước : MPP được thiết kế để xử lý dữ liệu TB/PB hàng. Hệ thống xử lý một nút hoạt động tốt với khoảng dữ liệu 100GB (ước tính). Python tĩnh sẽ gặp khó khăn khi xử lý dữ liệu lớn trừ khi bạn sử dụng bộ xử lý độc lập serverless.
  • Vị trí dữ liệu : If data của bạn nằm trong một MPP (ví dụ như bảng trong Snowflake). Sẽ dễ dàng hơn nếu xử lý nó trực tiếp trong Snowflake thay vì chuyển dữ liệu ra hệ thống khác.

3.2. Choose the code giao diện cho người dùng sẽ duy trì quy trình

Thông tin giao diện trong kỹ thuật dữ liệu bao gồm Python tĩnh (hoặc các ngôn ngữ khác như Go, Rust, vv), Dataframe và SQL.

4. Kết luận

Vui lòng sử dụng tiêu chuẩn nêu để cân nhắc giữa các tùy chọn và bạn sẽ có thể xác định rõ ràng công cụ phù hợp nhất cho trường hợp của mình. Ngoài ra, nếu bạn đang quan tâm đến fullstack để trở thành Data Engineer chuyên nghiệp ở tương lai. Bạn nên tham khảo  Khóa học Data Engineer tại Cole, nơi mầm thơm có rất nhiều tài năng, được nhiều người và nhiều doanh nghiệp tin tưởng để hợp tác đào tạo nhân viên, và nhiều học viên đã tìm được công việc với trình độ lương mong ước sau khi hoàn thành khóa học. 

N
Tác giả Cole Blog

Nguyễn Quân

Viết về công nghệ, dữ liệu và định hướng nghề thực chiến.

Tác giả trên Cole Blog, phụ trách các bài viết giúp người đi làm học nhanh hơn, hiểu rõ hơn và áp dụng công nghệ vào công việc hiệu quả hơn.

18bài viết12.4kfollowers96klượt đọc

Bài viết khác từ tác giả này

Thảo luận

Đăng nhập để bình luận
Gửi bình luận
C
Cole BlogGợi ý thảo luận

Anh có thể đặt câu hỏi, góp ý hoặc lưu lại insight quan trọng sau khi đọc bài.