#228 - Tìm hiểu về mô hình Data Platform hiện đại
Thân chào các bạn độc giả,
Trong số này, chúng ta cùng tìm hiểu về:
Migration dữ liệu ở quy mô lớn tại Stripe;
Mô hình Data Platform hiện đại;
AlloyDB: sự kết hợp giữ SQL truyền thống và khả năng thực thi các truy vấn phân tích vượt trội.
Tại góc lập trình, chúng ta sẽ tham khảo một cách giải đề bài Max Consecutive Ones III tuần trước, và xem giới thiệu đề bài tuần này Possile Bipartition.
Ngoài ra, ngôn ngữ mới Carbon và Gather town cũng được giới thiệu tại góc Code & Tools.
Những bài viết hay
(by nghialuu)
Mỗi nhóm kỹ sư đều sẽ có lúc phải đối mặt với một thách thức phổ biến: thiết kế lại các mô hình dữ liệu (data model) để hỗ trợ các tính năng phức tạp hơn và các abstraction rõ ràng hơn. Điều này có nghĩa là phải migrate hàng triệu record/object trên môi trường production và refactor lại hàng nghìn dòng code. Đối với một dịch vụ API quy mô lớn như Stripe, việc migration trên production còn phải đảm bảo hệ thống không có downtime và dữ liệu vẫn phải chính xác. Tác giả mô tả cách Stripe migrate hàng trăm triệu object với phương pháp phổ biến là chia thành 4 giai đoạn:
Ghi song song (dual writing): Ghi dữ liệu và cả bảng (table) mới và cũ để giúp chúng đồng bộ với nhau.
Thay đổi tất cả phần đọc trong codebase để chỉ đọc từ bảng mới.
Thay đổi tất cả phần ghi trong codebase để chỉ ghi vào bảng mới.
Xóa tất cả data liên quan đến bảng cũ.
Trong bài viết, tác giả lấy một ví dụ thực tế ở Stripe và miêu tả chi tiết từng giai đoạn, kết hợp thêm với nhiều kỹ thuật như xử lí dữ liệu lớn offline với Hadoop và MapReduce, chỉ thay đổi nhỏ với ít hơn vài trăm dòng code, sử dụng Github Scientist để luôn xác thực tính nhất quán của dữ liệu đang được migrate. Cách tiếp cận này tỏ ra rất hiệu quả ở nhiều đợt migration tại Stripe. Mời các bạn đọc bài viết để hiểu thêm nhé.
The Building Blocks of a Modern Data Platform
(by steven.do)
Ngày nay mỗi khi search trên Google từ khóa "modern data platform", sẽ có hàng tá kết quả quảng cáo từ rất nhiều công ty đã tuyên bố rằng họ là đơn vị duy nhất cung cấp một nền tảng data platform thực sự. Vậy một "modern data platform" thực sự là gì vậy? Và nó đã thay đổi và có ý nghĩa như thế nào ở thời điểm hiện tại ?
Một cách ngắn gọn có thể hiểu một modern data platform là tập hợp các công cụ và năng lực theo đó khi được kết hợp với nhau cho phép tổ chức có thể đạt được mục tiêu là về cơ bản trở thành một tổ chức ra quyết định dựa trên data (data-driven organisation).
Thông qua bài viết này, tác giả sẽ phân tích ý nghĩa và các thay đổi cần thiết giữa một modern data platform trong thực tế ngày nay so với các data platform trước đây. Tác giả nêu ra 3 đặc điểm cốt lõi, và 6 khối chức năng cơ bản mà một modern data platform cần có cùng một vài công cụ hữu ích mà bạn nên biết.
Ba đặc điểm mà một modern data platform cần có theo ý kiến của tác giả bao gồm:
Platform có thể tự hỗ trợ cho nhiều nhóm người dùng khác nhau. Người dùng có thể dễ dàng khám phá và phân tích data mà họ quan tâm trên platform. Ngoài ra platform có thể giúp người dùng hiểu được ngữ cảnh của data ( vd: có mô tả về column data, lịch sử cập nhât..). Giảm thiểu sự can thiệp của đội ngũ IT khi thu thập và khai phá các insight của data.
Platform cần đảm bảo tính "linh hoạt" của data. Data luôn cần sẵn sàng trong datalake hoặc data warehouse, và khả năng xử lý tính toán trên một lượng data cũng cần phải có thể tự động scale tùy thuộc vào độ lớn của dữ liệu.
Platform phải được cài đặt nhanh chóng và linh hoạt khi thiết lập, và có thể thanh toán tùy vào hạng mức sử dụng của người dùng.
Mô hình các khối chức năng hình thành lên một modern data platform theo ý kiến của tác giả sẽ bao gồm 06 khối chức năng:
Khối chức năng thu thập data (Data Ingestion)
Khối chức năng lưu trữ và xử lý data (Data Storage and Processing)
Khối chức năng chuyển đổi data (Data Transformation)
Khối chức năng hỗ trợ BI và Phân tích
Khối chức năng phân loại và quản trị data (Data Catalogs and Governance)
Khối chức năng quản trị truy cập và data riêng tư (Data privacy and access governance)
Ngoài ra, thông qua bài viết tác giả cũng giới thiệu thêm về một số công cụ hỗ trợ việc xử lý data theo thời gian thực, kiểm tra chất lượng data và các công cụ hỗ trợ data sciences và thu thập event (Event Collectors).
Techtalk
Introducing AlloyDB, a PostgreSQL-compatible cloud database service
(by MS)
Là một kĩ sư dữ liệu hay thậm chí là một kĩ sư phần mềm, có lẽ ở một thời điểm nào đó, bạn đã từng đặt ra câu hỏi rằng liệu có một database nào có đầy đủ tính năng của một database SQL truyền thống, nhưng hoàn toàn có thể chạy tốt các truy vấn về phân tích (analytical queries). Mới đây Google đã đưa ra câu trả lời đó cho bạn với AlloyDB. AlloyDB hiện mới được ra mắt dưới dạng thử nghiệm (Preview) và cũng sẽ không phải là một sản phẩm miễn phí. Nhưng đây chắc chắn là một sự lựa chọn thú vị đáng để cân nhắc và có thể mang lại những lợi ích nhất định cho doanh nghiệp của bạn.
AlloyDB là một dịch vụ cơ sở dữ liệu tương thích 100% với PostgreSQL. AlloyDB kết hợp những gì tốt nhất của Google với một trong những công cụ cơ sở dữ liệu nguồn mở phổ biến nhất, PostgreSQL, để có hiệu suất, quy mô và tính khả dụng vượt trội. AlloyDB có những tính năng tiêu biểu như:
Hoàn toàn tương thích với PostgreSQL, cung cấp tính linh hoạt cao cho các workload của bạn.
Hiệu suất vượt trội, nhanh hơn 4 lần so với PostgreSQL tiêu chuẩn trong việc xử lý các workload liên quan đến transaction.
Khả năng xử lý các truy vấn về phân tích (analytical queries) nhanh gấp 100 lần so với PostgreSQL tiêu chuẩn.
Quản lý đơn giản với hệ thống autopilot được hỗ trợ bởi machine learning.
Tính khả dụng cao (High availability) với 99.99% uptime SLA.
Qua video giới thiệu của Andi Gutmans đến từ GCP, hãy cùng tìm hiểu kĩ hơn điều gì đã khiến AlloyDB trở nên đặc biệt như vậy.
Góc Lập Trình
Đề ra tuần này: Possible Bipartition
(by ndaadn)
Cho trước một nhóm gồm n người từ 1 đến n và một mảng dislike bao gồm các cặp số [a,b] thể hiện người a ghét người b. Xác định xem có thể chia nhóm n người này thành 2 nhóm sao cho trong 2 nhóm này không có ai ghét nhau hay không?
Ví dụ:
Input: n = 4, dislikes = [[1,2],[1,3],[2,4]]
Output: true
Giải thích, có thể chia thành 2 nhóm, nhóm 1: [1,4] và nhóm 2: [2,3].
Lời giải đề bài tuần trước: Max Consecutive Ones III
Bài toán chỉ cho phép đổi nhiều nhất k số 0 thành số 1, và yêu cầu tìm độ dài lớn nhất của chuỗi số 1 liên tiếp có thể tạo được. Nếu ta diễn đạt yêu cầu của bài toán bằng một cách khác như sau: “Tìm mảng con dài nhất của mảng cho trước, sao cho mảng con đó có đúng k số 0”, thì có thể nhận ra ngay hướng giải quyết của bài toán.
Ta có thể sử dụng kỹ thuật sliding window để tìm lời giải như sau: gọi 2 biến left và right lần lượt là vị trí bắt đầu của mảng con, điều ta cần thực hiện là dịch chuyển right và sau đó là left sao cho giữ nguyên điều kiện mảng con từ left đến right chứa đúng k số 0.
Sau đây là lời giải cho bài toán cài đặt bằng ngôn ngữ Java.
Độ phức tạp thời gian của giải thuật trên là O(N), độ phức tạp không gian là O(1).
Code & Tools
Carbon Language: An experimental successor to C++: Carbon là một ngôn ngữ lập trình kế thừa của C++, giống như Java có Kotlin, JavaScript có TypeScript, và hiện đang trong giai đoạn thử nghiệm. Carbon ban đầu được phát triển trong nội bộ Google, nay được open-source, với mục tiêu phát triển một ngôn ngữ hiện đại và cung cấp trải nghiệm tuyệt vời cho lập trình viên.
Gather Town: Covid-19 tạo ra sự thay đổi lớn trong cách thức làm việc tại các doanh nghiệp, khi các nhân viên thường xuyên làm việc trực tuyến từ xa thay vì phải liên office liên tục. Gather Town là ứng dụng cho phép người dùng thiết lập không gian làm việc trực tuyến phù hợp với nhu cầu và sở thích cá nhân.
Feedback
Bạn đánh giá nội dung số newsletter này thế nào?
(1 = Rất tệ / 5 = Rất tốt)
(Việc đánh giá của các bạn là rất quan trọng, sẽ giúp chúng tôi liên tục cải thiện nội dung newsletter tốt hơn)
Grokking mang lại cho các bạn những kiến thức mới mẻ và hữu ích thông qua:
Tech Talk: Là một hoạt động thường xuyên của Grokking từ những ngày đầu thành lập. Tại đây các diễn giả chia sẻ kiến thức xoay quanh Computer Science và Software Engineer. Các buổi Tech Talk đều được record và upload lên kênh youtube.
Knowledge Graph: Tập hợp những nguồn kiến thức phong phú với hơn 1000 bài viết chọn lọc, các đầu sách, khóa học, v.v… Các bài viết đều được gán nhãn để giúp bạn đọc dễ dàng tìm kiếm.
Webinar: Là chương trình kết nối các kỹ sư Việt Nam và các kỹ sư đang làm việc tại các công ty công nghệ hàng đầu thế giới.
Dijkstra: Một ấn phẩm được xuất bản bởi các thành viên của Grokking. Với những bài viết đào sâu vào kỹ thuật và kiến thức khoa học máy tính.
Kipalog: Nền tảng chia sẻ kiến thức dành cho các lập trình viên.
Newsletter: Những bài viết hay về công nghệ sẽ được gửi tới bạn hàng tuần qua email.
Chúc các bạn sẽ tìm được nhiều điều mới mẻ khi đến với Grokking và xin hẹn gặp lại các bạn vào tuần sau.
Quotes
“Punishments include such things as flashbacks, flooding of unbearable emotions, painful body memories, flooding of memories in which the survivor perpetrated against others, self-harm, and suicide attempts.”
― Alison Miller, Healing the Unimaginable: Treating Ritual Abuse and Mind Control