Đây không phải là một câu trả lời đầy đủ mà chỉ là một vài điểm về chủ đề.
Vì câu hỏi này cũng được gắn thẻ với thẻ [sql]
, hãy để tôi nói rằng, nói chung, relational databases không đặc biệt phù hợp để lưu trữ dữ liệu sử dụng mô hình EAV. Bạn vẫn có thể thiết kế một mô hình EAV trong SQL, nhưng bạn sẽ phải hy sinh nhiều lợi thế mà một cơ sở dữ liệu quan hệ sẽ cung cấp. Không chỉ bạn sẽ không thể thực thi tính toàn vẹn tham chiếu, sử dụng các kiểu dữ liệu SQL cho các giá trị và thực thi các thuộc tính bắt buộc, nhưng ngay cả các truy vấn rất cơ bản cũng có thể trở nên khó viết. Trong thực tế, để khắc phục hạn chế này, một số giải pháp EAV dựa vào sao chép dữ liệu, thay vì tham gia với các bảng có liên quan, như bạn có thể tưởng tượng, có nhiều hạn chế.
Nếu bạn thực sự yêu cầu thiết kế schemaless, "cho phép một số lượng không giới hạn các thuộc tính", đặt cược tốt nhất của bạn có lẽ là sử dụng giải pháp NoSQL. Mặc dù các điểm yếu của EAV so với các cơ sở dữ liệu quan hệ cũng áp dụng cho các lựa chọn NoSQL, bạn sẽ được cung cấp các tính năng bổ sung khó đạt được với các cơ sở dữ liệu SQL thông thường. Ví dụ, thường kho dữ liệu NoSQL có thể được thu nhỏ dễ dàng hơn nhiều so với các cơ sở dữ liệu quan hệ, đơn giản chỉ vì chúng được thiết kế để giải quyết một số vấn đề về khả năng mở rộng.
Nhiều nền tảng điện toán đám mây (như được cung cấp bởi Amazon, Google và Microsoft) có các kho dữ liệu dựa trên mô hình EAV, trong đó một số thuộc tính tùy ý có thể được liên kết với một thực thể nhất định. Nếu bạn đang xem xét việc triển khai ứng dụng của mình lên đám mây, bạn có thể coi đây là lợi thế kinh doanh, cũng như kỹ thuật, vì cạnh tranh gay gắt giữa các nhà cung cấp lớn đang đẩy tỷ lệ giá trị lên chi phí rất cao, bằng cách liên tục đẩy mạnh các tính năng và đẩy chi phí tài chính và triển khai xuống.
Nguồn
2010-02-08 19:30:26
Xem http://stackoverflow.com/search?q=%5bdatabase%5d%20%2beav&tab=newest –