📻News
(by lpv)
PostgreSQL 16 Beta 1 Released!
Phiên bản mới của PostgreSQL chứa các tính năng mới và cải tiến hiệu suất trong thực thi truy vấn, tăng khả năng xử lý song song cho các truy vấn FULL và RIGHT JOIN, tối ưu hóa cho windows query và nhiều cải tiến khác.
2023 State Of Data + AI
Những xu hướng về Data và AI được thực hiện bởi DataBrick.
📰Những bài viết hay
(by lpv)
Are clouds having their on-prem moment?
Mặc dù public cloud vẫn đang phát triển mạnh mẽ nhưng hiện cũng có một số công ty đang dần chuyển sang mô hình on-prem private clouds (nguồn). Mô hình này được triển khai dựa trên cơ sở hạ tầng của doanh nghiệp, cho phép các doanh nghiệp tự quản lý và vận hành các ứng dụng và dữ liệu của mình trên nền tảng đám mây của riêng mình. Qua đó giúp doanh nghiệp giảm thiểu chi phí và tăng tính linh hoạt trong việc quản lý ứng dụng và dữ liệu.
Trong bài viết này, tác giả đã giới thiệu về xu hướng dịch chuyển sang sử dụng on-prem private clouds của các công ty hiện nay và những lợi ích của việc triển khai mô hình này. Đồng thời Kubernetes cũng đóng vai trò quan trọng trong việc kiểm soát mô hình on-prem private clouds.
Sau hơn 1 thập kỷ xa rời những giá đỡ máy chủ, các công ty dần nhận thấy có những lợi thế nhất định khi triển khai hệ thống cơ sở hạ tầng cục bộ cho một số mục tiêu nhất định. Những gì cũ, lại trở nên mới, nhưng lúc này chúng ta đã có thêm nhiều hương vị để lựa chọn.
Mời các bạn đọc thêm bài viết tại đây.
Indexes in PostgreSQL
Bài viết này nhằm mục đích cung cấp cái nhìn sâu sắc về index trong PostgreSQL, những ưu điểm và nhược điểm của các loại index khác nhau. Bên cạnh đó, tác giả cũng giới thiệu một số cách tối ưu trên index như: Cách xác định những index không cần thiết, index trùng lặp, v.v…
Chi tiết bài viết tại đây.
How RocksDB Works
Trong nhiều năm qua, RocksDB đang được sử dụng rộng rãi tại nhiều nơi. RocksDB đang chạy trên production tại Meta, Microsoft, Netflix v.v… Tại Meta, RocksDB hoạt động như một storage engine cho MySQL. Ngoài ra, một số startup cũng được xây dựng từ RocksDB như PingCAP, Rockset, v.v…
Trong bài viết này, chúng ta cùng tìm hiểu về kiến trúc tổng qua của RocksDB. Phần cấu trúc dữ liệu cốt lõi của RocksDB là Log-structured merge-tree (LSM-Tree). Đây là 1 cây dữ liệu dạng cây được tổ chức theo nhiều cấp độ ( multiple levels), trong đó dữ liệu ở mỗi cấp sẽ được sắp xếp theo khoá (keys). Cấp cao nhất của cây LSM được gọi là MemTable. Đó là một bộ đệm (in-memory buffer) chứa các khóa và giá trị trước khi chúng được ghi vào đĩa. Tất cả các thao tác insert và update sẽ luôn đi qua memtable. Trong trường hợp xảy ra sự cố quy trình hoặc khởi động lại ứng dụng, dữ liệu được lưu trữ trong bộ nhớ sẽ bị mất. Để tránh mất dữ liệu, RocksDB ghi tất cả các bản cập nhật vào Write-ahead Log (WAL) trên disk. Bằng cách này, cơ sở dữ liệu có thể khôi phục trạng thái ban đầu của memtable khi khởi động.
Ngoài ra, còn nhiều kỹ thuật khác mà các bạn có thể đọc tại đây.
👨💻Góc lập trình
(by ndaadn and phucnh)
Đề ra tuần này: Divide Intervals Into Minimum Number of Groups
Cho danh sách các đoạn intervals
, mỗi đoạn biểu diễn bởi cặp số [left, right]
. Tìm cách chia tối thiểu các đoạn trong danh sách thành các nhóm sao cho các nhóm không chứa các đoạn giao nhau.
Ví dụ:
Input: intervals = [[5,10],[6,8],[1,5],[2,3],[1,10]]
Output: 3
Giải thích:
Nhóm 1: [1, 5], [6, 8].
Nhóm 2: [2, 3], [5, 10].
Nhóm 3: [1, 10].
Lời giải tuần trước: Remove All Occurrences of a Substring
Một hướng giải quyết đơn giản cho bài toán đó là lặp đi lặp lại việc tìm kiếm lần xuất hiện đầu tiên của chuỗi con part
và xoá nó khỏi chuỗi ban đầu cho đến khi chuỗi con không còn xuất hiện nữa. Cài đặt tham khảo bằng ngôn ngữ Java như sau:
public class Solution {
public String removeOccurrences(String s, String part) {
StringBuilder sb = new StringBuilder(s);
while (true) {
int index = sb.indexOf(part);
if (index == -1) {
break;
}
sb.delete(index, index + part.length());
}
return sb.toString();
}
}
Độ phức tạp của giải thuật là O(N^2) với N
là độ dài chuỗi s
.
📖Learning
(by lpv)
Rust là một ngôn ngữ đang bắt đầu nhận được sự quan tâm từ cộng đồng lập trình viên thời gian gần đây. Bạn đã có thể sử dụng Rust để xây dựng thư viện cho kernel Linux, hay viết một extension cho PostgreSQL. Và nếu bạn chưa biết bắt đầu từ đâu, thì Android Team vừa cho ra mắt một khóa học Rust trong … 3 ngày ;)
Trong khóa học này sẽ cover những nội dung cơ bản và cần thiết để bắt đầu lập trình như cú pháp, concurrency, error handling, v.v… Và tất nhiên là đi kèm một số nội dung liên quan tới Android.
Các bạn có thể thử dành vài ngày cuối tuần để trải nghiệm khóa học này tại: Comprehensive Rust.
🛠️Code & Tools
“Measuring programming progress by lines of code is like measuring aircraft building progress by weight.” - Bill Gates
Học Rust trong 3 ngày: Nội dung đâu rồi ?