Soft delete, multi-tenancy, named filters in EF 10, and the required navigation trap that quietly drops rows.
Nguồn: https://mwaseemzakir.substack.com/p/global-query-filters-in-ef-core. 8 Sync News chỉ tóm tắt và dẫn link; bản quyền nội dung thuộc tác giả và nguồn gốc.
gRPC-Web được ra đời để cho phép các ứng dụng trình duyệt gọi dịch vụ gRPC mà không cần …
Đang tải bình luận…
Bài viết giải thích thiết kế hệ thống từ đơn giản (máy chủ đơn) đến phức tạp (hàng triệu người dùng), bao gồm API, cơ sở dữ liệu, caching, CDN, load balancing và hạ tầng sản xuất.
Bài viết giúp bạn hiểu rõ cách xây dựng cơ sở hạ tầng thực tế từ những nguyên tắc cơ bản nhất, từ đó tránh những sai lầm thường gặp khi mở rộng hệ thống khi còn mới mẻ.
PostgreSQL mặc định bọc mỗi câu lệnh trong một giao dịch riêng khi không có BEGIN…COMMIT rõ ràng. Tuy nhiên, khi gửi nhiều câu lệnh trong một chuỗi truy vấn đơn (thông qua PQexec hoặc các hàm plpgsql) hoặc sử dụng các tiện ích như COPY và CREATE INDEX CONCURRENTLY, máy chủ sẽ ẩn ý tạo một giao dịch duy nhất bao gồm tất cả các câu lệnh đó. Điều này có thể dẫn đến việc giữ khóa lâu hơn, tiêu thụ ID giao dịch tăng nhanh và làm khó khăn việc rollback một phần công việc khi lỗi xảy ra. Do đó, lập trình viên cần kiểm tra xem ứng dụng của mình có vô tình nhóm nhiều câu lệnh vào một giao dịch ngầm không và cân nhắc sử dụng BEGIN…COMMIT cụ thể khi cần kiểm soát granularity. Theo dõi pg_stat_activity để phát hiện các giao dịch mở dài hạn cũng là biện pháp phòng ngừa tốt.
Bài này giúp lập trình viên hiểu rõ cách Postgres tự động tạo giao dịch nhiều câu lệnh, tránh lỗi và tối ưu hiệu năng.
Bài viết mô tả sự cố xảy ra với khách hàng sử dụng phiên bản Beta đầu tiên của Doltgres khi họ nâng cấp lên phiên bản 1.0. Theo báo cáo post‑mortem, lỗi nằm ở script nâng cấp không đúng cách xử lý dữ liệu metadata từ các bản Beta, dẫn đến việc hệ thống coi bảng người dùng là tạm thời và xóa chúng trong quá trình chuyển đổi. Hệ quả là những khách hàng Beta đầu tiên mất toàn bộ dữ liệu đã lưu trữ trong Doltgres sau khi nâng cấp, khiến họ phải khôi phục từ bản sao lưu hoặc bắt đầu lại từ đầu. Đội phát triển đã xác định nguyên nhân là thiếu kiểm tra phiên bản trong hàm migration và đã sửa bằng cách thêm điều kiện kiểm tra trước khi thực hiện các thao tác thay đổi schema. Bài học được rút ra là cần luôn chạy thử nghiệm nâng cấp trên dữ liệu thực tế từ tất cả các phiên bản hỗ trợ và tự động hóa kiểm tra tính tương thích ngược trước khi phát hành phiên bản ổn định.
Bài báo tiết lộ lỗi nghiêm trọng khiến người dùng Beta sớm của Doltgres có nguy cơ mất dữ liệu khi nâng cấp lên phiên bản 1.0.
Đội ngũ gRPC-Rust vừa hoàn thành bản preview phía client và đang chuẩn bị cho các bước phát triển tiếp theo. Họ cần giải quyết các vấn đề về tính ổn định của API, tích hợp hoàn toàn với mô hình async/await của Rust và nâng cấp lớp mã hoá TLS dựa trên thư viện native-tls. Khi các tính năng này ổn định, nhà phát triển sẽ có thể xây dựng dịch vụ gRPC hoàn toàn bằng Rust mà không cần phụ thuộc vào bản triển khai C++, giảm latency và tối ưu hoá sử dụng bộ nhớ. Dự án cho thấy giá trị của việc phát hành preview sớm để thu thập phản hồi cộng đồng trước khi khóa API, giúp giảm nguy cơ thay đổi phá vỡ sau này. Lộ trình cũng nhấn mạnh tầm quan trọng của việc duy trì sự tương thích ngược với protobuf và cung cấp công cụ codegen tự động qua tonic-build.
Bài này cung cấp lộ trình phát triển tiếp theo của gRPC-Rust giúp lập trình viên nắm định hướng công nghệ và lên kế hoạch phát triển hệ thống hiệu quả.
ORMs vẫn cần thiết vì chúng cung cấp lớp trừu tượng an toàn, hiệu quả để tương tác với cơ sở dữ liệu, trong khi LLMs chỉ sinh code tiềm ẩn rủi ro lỗi, kém tối ưu và khó bảo trì. ORMs giúp chuẩn hóa truy vấn, tránh SQL injection và tối ưu hóa hiệu suất thông qua caching, điều mà code do LLM sinh ra khó đảm bảo.
Lập trình viên nên đọc bài này để hiểu cách ORM và SQL vẫn giữ vai trò quan trọng trong quản lý dữ liệu cơ bản, giúp tránh rủi ro lỗi và tối ưu hóa hiệu suất khi ứng dụng lớn cần kiểm soát trực tiếp dữ liệu.
Trong các phiên bản Eloquent trước Laravel 13.27, việc lấy pessimistic lock thường yêu cầu truy vấn lại model bằng primary key sau khi gọi lockForUpdate(). Laravel 13.27 giới thiệu phương thức refreshForUpdate() để tải lại instance hiện tại trong cùng một transaction mà không cần thực hiện truy vấn SELECT mới. Khi dùng lockForUpdate() rồi gọi refreshForUpdate(), Eloquent sẽ chạy một truy vấn SELECT ... FOR UPDATE dựa trên các giá trị hiện tại của model, giữ lock và đồng bộ trạng thái attributes. Điều này giảm thiểu số lượng query và tránh nguy cơ mất lock do thay đổi primary key giữa hai truy vấn. Đối với các tác vụ cần xử lý đồng thời như cập nhật tồn kho hoặc xử lý thanh toán, sử dụng refreshForUpdate() giúp code ngắn gọn hơn và an toàn hơn.
Laravel 13.27 giới thiệu refreshForUpdate() giúp bạn lấy lại mô hình dưới lockForUpdate() mà không cần phải truy vấn lại bằng khóa chính.
Khi bảng dữ liệu đạt hàng triệu bản ghi, việc dùng Skip và Take trong .NET để phân trang trở nên chậm và tiêu tốn tài nguyên. Nguyên nhân là cách tính toán vị trí bằng cách duyệt toàn bộ các bản ghi trước khi lấy phần cần thiết, làm tăng thời gian truy vấn. Hệ quả là độ trễ tăng, tiêu thụ bộ nhớ cao và khả năng mở rộng giảm sút khi số người truy cập tăng. Để giải quyết, bài viết giới thiệu ba phương án thay thế: Offset pagination, Keyset pagination và Cursor pagination, mỗi loại có cách tính toán và chỉ số riêng. Nếu bạn đang cân nhắc có nên đọc bài gốc, hãy xem cách bài phân tích lợi thế và nhược điểm của mỗi phương án để chọn giải pháp phù hợp với truy vấn của mình.
Bài này giúp lập trình viên .NET chọn phương pháp phân trang tối ưu khi bảng dữ liệu lớn thay vì dùng Skip và Take.
Đọc tin ở đây, luyện code, học theo lộ trình và luyện IELTS trên các sản phẩm anh em — tất cả kết nối với nhau trong hệ sinh thái 8 Sync.
Cổng chính của hệ sinh thái: giới thiệu sản phẩm, blog và bảng giá trọn bộ.
Khám pháHọc theo lộ trình rõ từng chặng: video, quiz chấm tự động, certificate và mentor đang làm nghề.
Xem lộ trình1.000+ bài DSA, đề tiếng Việt, chấm tự động 7 ngôn ngữ — nhiều bài FREE, chạy ngay trên trình duyệt.
Luyện miễn phíChấm bốn kỹ năng IELTS bằng AI, phản hồi chi tiết theo rubric.
Dùng thử miễn phíAI IDE 22 MB cho dev Việt.
Tải miễn phíBộ nhớ tổ chức cho AI agent.
Khám pháAI trực Fanpage, tự sàng lọc lead.
Dùng thử