当前位置:  开发笔记 > 数据库 > 正文

数据库EAV优点/缺点和替代品

如何解决《数据库EAV优点/缺点和替代品》经验,为你挑选了1个好方法。

我一直在寻找一个数据库解决方案,允许用户定义的字段和值(允许无限数量).乍一看,EAV似乎是合适的,但经过一些阅读后我不再确定了.

EAV的优点和缺点是什么?

是否有替代数据库方法来允许用户定义的属性/字段和值?



1> Daniel Vassa..:

这不是一个详尽的答案,而只是关于这个主题的几点.

由于问题也标记有[sql]标记,因此,我要说,通常,关系数据库并不特别适合使用EAV模型存储数据.您仍然可以在SQL中设计EAV模型,但您必须牺牲关系数据库可以提供的许多优势.您不仅无法强制执行参照完整性,还可以使用SQL数据类型来实现值并强制执行必需属性,但即使是非常基本的查询也很难编写.事实上,为了克服这个限制,一些EAV解决方案依赖于数据复制,而不是加入相关的表,你可以想象,这些表有很多缺点.

如果你真的需要无模式设计,"允许无限数量的属性",你最好的选择可能是使用NoSQL解决方案.尽管EAV相对于关系数据库的弱点也适用于NoSQL替代方案,但您将获得使用传统SQL数据库难以实现的其他功能.例如,通常NoSQL数据存储可以比关系数据库更容易扩展,仅仅因为它们旨在解决某种可伸缩性问题,并且它们故意丢弃使扩展变得困难的功能.

许多云计算平台(例如亚马逊,谷歌和微软提供的平台)都具有基于EAV模型的数据存储,其中任意数量的属性可以与给定实体相关联.如果您正在考虑将您的应用程序部署到云中,您可能会将此视为业务优势和技术优势,因为大型供应商之间的激烈竞争将价值成本比推向非常高的水平,通过不断推进功能,降低财务和实施成本.


我不知道EAV是如何成为技术优势的:它的构建,查询和插入更加复杂,而且可读性非常低.什么是简单快速的"select*from"变成了一个缓慢的怪物sql查询.我甚至没有谈论尝试基于EAV模型进行一些报告.
推荐阅读
手机用户2402851155
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有