Phần 5: Chuyển đổi Schema EAV — Cái bẫy lớn nhất của Magento

Cấu trúc EAV schema chính là lý do khiến phần lớn các dự án chuyển đổi khỏi Magento chuốc lấy thất bại. Nhìn từ bên ngoài, nó có vẻ dễ xơi: dữ liệu của sản phẩm bị băm ra rải rác ở catalog_product_entity, catalog_product_entity_varchar, catalog_product_entity_int, catalog_product_entity_decimal, catalog_product_entity_datetime, và catalog_product_entity_text. Sáu cái bảng, viết một cái job ETL đơn giản, làm một cuối tuần là xong. Nhưng rồi bạn phát hiện ra rằng attribute_id = 75 mang ý nghĩa “tên sản phẩm” (product name) trong cái database của bạn, nhưng nó lại mang nghĩa “màu sắc” (color) trong cái database trên môi trường staging. Mỗi một mã ID thuộc tính (attribute ID) được sinh ra tự động ngay tại thời điểm cài đặt (install time) và nó hoàn toàn khác biệt giữa các môi trường với nhau. Bất kỳ script ETL nào dám cả gan gán cứng (hardcode) các mã attribute ID này sẽ lập tức đẻ ra một đống dữ liệu rác bẹp dí (corrupted data) khi mang lên chạy ở production. ...

6 tháng 5, 2026 · 14 phút · Lê Tuấn Anh

Mở Rộng MySQL: Read Replicas, Sharding & TiDB

🇬🇧 Read the English version of this article on tanhdev.com Mở rộng MySQL (MySQL scalability) là khả năng gia tăng thông lượng của database — số lượt đọc mỗi giây, số lượt ghi mỗi giây, hoặc khối lượng dữ liệu — mà không cần phải viết lại ứng dụng. Một điểm khác biệt vô cùng quan trọng: scale đọc (read scaling - thêm replicas) và scale ghi (write scaling - sharding hoặc distributed SQL) đòi hỏi các phương pháp tiếp cận kiến trúc hoàn toàn khác nhau. Chọn sai hướng đi sẽ tạo ra technical debt (nợ kỹ thuật) phải mất nhiều tháng mới có thể giải quyết. ...

10 tháng 6, 2026 · 23 phút · Tuan Anh

MySQL Horizontal Scaling: Vitess & GORM Sharding

🇬🇧 Read the English version of this article on tanhdev.com Ngóc mọc lướt Khi ứng dụng của bạn vươn mình chạm ngõ ngóc mọc hàng triệu người dùng, một vọc lướt cỗ máy database ngóc mọc đơn độc (single database instance) lướt sớm muộn rọc vọc mọc cũng sẽ tự mình phình ngóc mọc lướt thành cái bọc cổ chai lướt rọc to ngóc mọc tướng nhất trong trọn ngóc mọc vọc bộ kiến trúc. Hòng rọc vọc đục để lướt vọc mọc giải quyết ngóc vọc mọc, việc vọc lướt rọc ngóc mọc mở rộng quy mô database MySQL (MySQL database scaling) rọc vọc mọc lướt lọt ngóc mọc thành vọc lướt rọc ngóc mọc điều rọc vọc bắt lướt mọc buộc (mandatory). Bạn vọc lướt rọc ngóc mọc phải vọc Bung Rộng DB mọc lướt cho Microservices (Scale DB for Microservices) vọc lướt sài mọc ngóc rọc các kỹ lướt mọc ngóc rọc thuật Horizontal Scaling (Bung Rộng Ngang). ...

1 tháng 6, 2026 · 16 phút · Tuan Anh

Kiến Trúc Shopee Flash Sale: Ngắt Họng & Redis

🇬🇧 Read the English version of this article on tanhdev.com Điểm đúng boong 0 giờ mùa 11.11, cái rớ con nghiện Shopee tuốt tuột dải Đông Nam Á với Đài Loan đè ngón vô xào chung 1 cái nút bấm nẩy. Độc trong 10 giây nòng châm hỏa (first 10 seconds) của 1 cái mùa săn sale chớp nhoáng (flash sale), 1 cái trang quầy rác (single product page) có thể bị cả triệu mống (millions of concurrent sessions) nã liên thanh — bu xâu nhào zô giành mớ 1,000 nhúm đồ lổn nhổn nhét kho (inventory). Thẩy lố 1 cục (One oversell), đứt bóng 1 cục máy (server crash), hay cái cục kho quẹt chết lâm sàng (database deadlock) lọt chỏm ở khúc đó hất đổ 1 sớ ná thở đâm chọc móc tiền (cascade of chargebacks), rớ con dân nhảy đổng (angry users), dìm mặt ụp bãi rác tờ đầu mốc nhép giang hồ bới (front-page news headlines). ...

1 tháng 6, 2026 · 19 phút · Tuan Anh

Scale MySQL: Replication, Sharding & Kiến trúc TiDB (Distributed SQL)

🇬🇧 Read the English version of this article on tanhdev.com Mở rộng quy mô (scaling) một cơ sở dữ liệu quan hệ là một trong những thử thách khắc nghiệt nhất trong thiết kế hệ thống. Khi ứng dụng tăng trưởng từ hàng nghìn lên hàng triệu người dùng hoạt động, cơ sở dữ liệu không còn chỉ là một công cụ lưu trữ đơn thuần mà trở thành điểm nghẽn (bottleneck) chính của toàn bộ kiến trúc hệ thống. ...

26 tháng 5, 2026 · 19 phút · Tuan Anh