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

Làm phẳng Mô hình EAV bằng SQL và Node.js

🇬🇧 Read the English version of this article on tanhdev.com Khi dọn nhà rời khỏi Magento 2, chướng ngại vật đầu tiên luôn luôn là cái database schema. Magento chẳng thèm lưu dữ liệu thành các hàng phẳng phiu sạch sẽ — nó xài một mô hình gọi là Entity-Attribute-Value (EAV), băm vằm dữ liệu rải rác ra hàng chục cái bảng khác nhau kèm theo tính năng kế thừa theo cấp độ store (store-scope inheritance). Việc hiểu được mớ bòng bong này trước khi cắm đầu vào viết SQL sẽ cứu rỗi bạn vài ngày thanh xuân. ...

9 tháng 3, 2024 · 10 phút · Tuan Anh