View profile

#123 - Những điều bạn cần biết về Domain-Driven Design

Revue
 
Grokking Webinar #05 về chủ để Engineering Manager đã diễn ra tốt đẹp với những chia sẻ bổ ích từ hai
 

Grokking Newsletter

May 31 · Issue #123 · View online
Tuyển tập những bài viết hay cùng sự kiện bổ ích dành cho kĩ sư phần mềm tại Việt Nam.

Grokking Webinar #05 về chủ để Engineering Manager đã diễn ra tốt đẹp với những chia sẻ bổ ích từ hai anh Lê Nguyễn Tường Vũ và Huỳnh Thảo Hạnh Duy.
Nếu bạn không có cơ hội theo dõi trực tuyến vào thứ 7 vừa rồi, bạn có thể thao khảo offline tại đây.

Những bài viết hay
Những điều bạn cần biết về Domain-Driven Design Những điều bạn cần biết về Domain-Driven Design
Making Vue 3 – Increment
Go and CPU Caches
Things we learned about sums
Góc Database
Trong thế giới relational, việc scale các hệ thống database theo chiều ngang là một bài toán khá khó, đặc biệt là vừa phải đảm bảo availability và consistency. Hai phương pháp phổ biến để scale relational database thường được áp dụng là:
- Multi-master replication: thao tác ghi sẽ diễn ra ở một node master, sau đó sẽ được sync qua cho các master khác theo hình thức đồng bộ hoặc bất đồng bộ.
- High-availability cluster: tạo ra 2 hoặc nhiều cluster riêng biệt, mỗi cluster chỉ có 1 master và sẽ được dùng để thay thế khi một trong các cluster chết đi.
Tuy nhiên, cả hai cách trên đều có nhược điểm đi kèm như phải thoả hiệp tính nhất quán dữ liệu, tốn nhiều tài nguyên để fail-over dẫn đến chi phí cao, … nên để giải quyết bài toán hiệu quả hơn, đội ngũ đằng sau Google Spannner đã đưa ra một số cách tiếp cận khác như:
- Kỹ thuật split trong đó dữ liệu được chia ra lưu trên nhiều read-write replica.
- Quá trình sync dữ liệu giữa các read-write replica dựa trên nguyên tắc QUORUM. Nguyên tắc này khá tương đồng với một vài database khác như Cassandra, ScyllaDB.
- Sử dụng hệ thống lưu trữ file phân tán của Google - Colossus để decouple tầng lưu trữ, từ đó các replica có thể phục hồi dễ dàng khi xảy ra sự cố.
- Và một vài kỹ thuật khác …
Tin tức khác về database:
Có thể bạn chưa biết
B-Tree là cấu trúc dữ liệu phổ biến để xây dựng index trong database với đặc điểm:
  • Một node của B-tree tương ứng với một page của Index File. (Page là đơn vị lưu trữ vật lý nhỏ nhất trong database).
  • Kích thước mỗi page giống nhau.
  • Một page trong Index File tương ứng là một node của B-Tree.
  • Giá trị khoá tìm kiếm và pointer địa chỉ đến data file được lưu trữ trong một node lá của B-Tree trong Index file.
  • Một page thì chứa nhiều row.
  • Khi một node lá của B-Tree đầy thì thực hiện tách node để lưu thêm khoá mới.
Có một thông số là Fill factor = X là phần trăm dung lượng tối đa được phép lưu trữ khoá tìm kiếm của một node lá B-Tree. Khi dung lượng đang sử dụng của một node lá B-Tree trên X phần trăm nào đó thì sẽ tiến hành tạo một node mới để lưu khoá tìm kiếm. Dãy gía trị thông thường của Fill factor là [0,100].
Ví dụ nếu Fill factor = 90 nghĩa là khi dung lựơng lưu trữ một node lá của B-Tree đạt mức 90% thì tách node mới. Tìm hiểu cụ thể hơn về fillfactor tại đây.
Code & Tools
Sẽ thế nào nếu bạn biết rằng, chỉ cần một Email ID của bạn, hacker có thể lấy toàn bộ các tài khoản trên các website hay ứng dụng mà bạn đang sử dụng.
Đây chính là một lỗ hổng trong tính năng “Sign in with Apple” cho phép các hacker làm điều đó. Một developer đã nhận được phần thưởng 100.000$ từ Apple sau khi phát hiện lỗ hổng này.
Security
Quote
Everything is designed. Few things are designed well.
Brian Reed
Để giúp cải thiện chất lượng nội dung của newsletter, mong bạn dành ít thời gian phản hồi cũng như đóng góp ý tưởng giúp team thông qua link khảo sát hàng tuần tại đây nhé.
Did you enjoy this issue?
If you don't want these updates anymore, please unsubscribe here.
If you were forwarded this newsletter and you like it, you can subscribe here.
Powered by Revue
Charmington La Pointe, 181 Cao Thang, Dist 10, Ho Chi Minh city, Viet Nam