使用哪一个?数据库中的 EAV 或 Blob?

2024-02-20

我目前正在努力重新设计我们应用程序的数据系统。基本上,它的设计目的是让人们可以添加他们想要的所有自定义字段,而只有一些常量/始终存在的字段。

我们当前的设计给我们带来了很多维护问题。我们所做的是动态地(在运行时)为每个字段向数据库添加一列。我们必须有一个元表和其他东西来维护所有这些动态列。

现在我们在看EAV,但看起来也好不了多少。基本上,我们有许多不同类型的字段,因此会有一个 StringValues、IntegerValues 等表......这使事情变得更糟。

我想知道在数据库中使用 JSON 或 XML blob 是否可能是更好的解决方案,特别是因为在大多数用例中,当我们从这些表中检索任何内容时,我们需要整行。问题是我们还需要能够为这些数据创建报告。没有任何解决方案真正使自定义查询看起来很容易。当报告运行时,在这样的 blob 数据库中进行搜索肯定会成为性能噩梦。

每个“行”需要有大约 15 到 100 个(可能更多)与其关联的属性/列。

我们使用 SQL Server 2008,与数据库连接的应用程序是 C# Web 应用程序(即 ASP.Net)。

你怎么认为?使用 EAV 或 blob 或完全使用其他东西? (另外,是的,我知道像 MongoDB 这样的无模式数据库在这里会很棒,但我无法说服我的老板使用它)


xml 数据类型怎么样?可以针对此类型进行高级查询。

我们使用 xml 类型并取得了良好的成功。我们在代码级别使用 linq 解析值来完成大部分繁重的工作。我们的架构有些固定,因此这可能不适合您。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用哪一个?数据库中的 EAV 或 Blob? 的相关文章

  • VBA XML V6.0 如何让它等待页面加载?

    我一直在努力寻找答案 但似乎找不到任何有用的东西 基本上 我是从一个网站上拉取的 当您在该页面上时 该网站会加载更多项目 我希望我的代码在加载完成后提取最终数据 但不知道如何让 XML httprequest 等待 Edited Sub p
  • 在 ASP.NET 3.5 中使用 ASMX 文件的 WS-Security

    基本上 我需要设置 ASMX 文件 以便当我在浏览器中将其拉出以显示 WebMethod 规范时 Soap 标头符合以下格式
  • 如何在事务中使用链接服务器插入远程表?

    我的链接服务器设置正确 我能够执行以下查询 插入 远程服务器 表 SELECT FROM 本地服务器 表 然而当我做同样的事情时交易内 开始传输 插入 远程服务器 表 SELECT FROM 本地服务器 表 提交交易 我收到类似的错误 用于
  • 解组转义 XML

    在 Go 中 我将如何解码此 XML 响应 我尝试过建立一个自定义UnMarshal方法在我的Answerstruct 但我运气不太好
  • If else 在 Web 网格列中

    如何在 webgrid 列中添加条件 if else grid GetHtml tableStyle table table bordered columns grid Columns grid Column RealName Name g
  • 必填字段验证器在下拉列表回发时消失

    我在 asp net 中填充两个下拉列表 两者都分配给必填字段验证器 隐藏代码如下 if Page IsPostBack DataTable dt new DataTable dt Columns Add emp dt Columns Ad
  • 通过 XML 将重复事件添加到 Google 日历

    我正在尝试通过协议 API 将重复事件添加到我的日历中 我从在 Google 界面中创建的事件中获取了重复标记的语法 并将其用于我的创建请求中 这是我提交的内容
  • 如何使用 Blazor 在 ASP.NET CORE 中更新数据库后刷新网页

    我正在制作一个小型房间预订网络应用程序 我希望在给定的时间间隔内刷新网页 即给定的一分钟或对数据库进行更改时 我发现StateHasChanged 但我真的不知道如何实现它 这里是新手一克诺比 我尝试将其放在将约会添加到日程表的函数中 va
  • requestValidationMode 2.0 和 4.0 有什么区别

    这是 MSDN 的定义 4 0 默认值 HttpRequest 对象在内部设置一个标志 指示每当访问任何 HTTP 请求数据时都应触发请求验证 这保证了在请求期间访问 cookie 和 URL 等数据之前触发请求验证 配置文件中的页面元素
  • 检查 XML 元素是否存在

    如何验证 XML 文件中是否存在特定元素 假设我有一个不断变化的 XML 文件 我需要在读取 解析它之前验证每个元素是否存在 if doc SelectSingleNode mynode null 应该这样做 显然 其中 doc 是您的 X
  • 实体框架中的批量插入

    我使用批量插入插入大量记录 例如 20K 当我仅插入一个实体时 它会正常工作 但是 当我用来插入多个实体 例如一对多 时 它将仅插入父实体 而不会插入子实体 我的实体和代码 Customer cs public class Customer
  • JSPX 命名空间对于 EL 函数不可见?

    我正在尝试使用 JSPX JSP 的纯 XML 语法 并遇到看起来应该可以工作但实际上却不起作用的情况 我使用 jsp root 元素中的命名空间声明导入标签库 然后稍后将这些用于元素以及 EL 函数
  • 使用 jQuery 将参数从一个 ASP.NET 页面传递到另一页面

    我需要使用 jQuery 将 4 个参数 3 个字符串和一个逗号分隔列表 从 ASP NET 页面传递到另一个 ASP NET 页面 目标页面应该作为单独的窗口启动 这与以下 jQuery 片段配合良好 sourcePageBtn clic
  • Magento 设置脚本中的 ALTER TABLE 不使用 SQL

    乔纳森 戴 https stackoverflow com users 336905 jonathan day says 更新不应采用以下形式 SQL命令 我没遇到过 任何 DDL 或 DML 语句不能 通过 Magento 的配置执行 结
  • 直接将 .aspx 转换为 .pdf [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Nhibernate:连接表并从其他表获取单列

    我有以下表格 create table Users Id uniqueidentifier primary key InfoId uniqueidentifier not null unique Password nvarchar 255
  • 无法加载 SQL Server Compact 的本机组件

    我已经在 Win7 x64 上安装了 SQL Server Compact Edition 4 0 它可以运行于 Asp Net 和桌面应用程序 此 PC 还安装了 Visual Studio 2010 SP1 但是我的 Server 20
  • PostgreSQL - 根据另一个单元格值设置默认单元格值

    如果我有一个专栏说column a任何给定值 我想要另一列column b有一个default value根据 的值column a 换句话说 if column a peter then column b default value do
  • 如何在 ASP.NET MVC 中使用 Html.Action() 将参数传递给 Action?

    我一直在使用Html Action ActionName ControllerName 跨控制器调用子操作 而无需在 Views Shared 中拥有视图 这对于显示会话或 cookie 信息等内容非常有效 我不只是访问 cookie 而是
  • 让 Hibernate 和 SQL Server 与 VARCHAR 和 NVARCHAR 良好配合

    我目前正在大型数据库的某些表中启用 UTF 8 字符 这些表已经是 MS SQL 类型 NVARCHAR 此外 我还有几个使用 VARCHAR 的字段 Hibernate 与 JDBC 驱动程序的交互存在一个众所周知的问题 例如 参见在 h

随机推荐

  • Vaadin:如何显示 MySQL 数据库中的数据?

    我正在开发 Vaadin Flow 版本 14 1 应用程序 但遇到了这个问题 我无法将其直接与 MySQL 数据库连接 我已经与 Maven 设置了 JDBC 连接 还创建了一个名为 Datasource 的单例类 在其中存储我的值和方法
  • 如何使用VBA在Excel中的所有行前面添加单引号

    我有一个电子表格 其中包含带有日期的第一列 我希望文本保留为 May 21 但采用字符串形式 单元格值应该是 May 21 但是当我尝试将其转换为字符串时 它使用 5 位数字 如果我将列保留为日期格式 它会首先自动选择 May 因此即使格式
  • 用于特定文本模式的 PHP 正则表达式

    在我的网站上 我在正文中插入了项目创建的年份 并将其替换为 六年前 或者无论有多长 所以在我的内容中我有 我们自 1998 年开始营业 并在 2011 年前制作了这种包装设计 我试图使用正则表达式将 2011 放入变量中以便稍后搜索和替换
  • 复制矩阵的一行或一列并将其插入到下一行/列中

    我想知道 MATLAB 中是否有一种简单的方法来执行以下操作 我想复制矩阵的行或列并将其插入到下一行 列中 例如 给定一个 3x3 矩阵 1 2 3 4 5 6 7 8 9 我想复制第一行并将其作为第二行插入 1 2 3 1 2 3 4 5
  • 提取模式两端由标识符括起来的多行

    我正在尝试从日志文件中提取特定事件的跟踪 为了查找相关事件 我查找 PATTERN 为了提取事件的完整跟踪 我希望提取由 SEPARATOR 包围的模式两端的行 例如 如果日志文件的内容是 Line1 Line2 SEP Line3 Lin
  • C# 显示隐藏窗口

    我正在开发一个 Excel 插件 在某些时候 我可以接收异步事件 如果 Excel 窗口在这些事件上隐藏 我需要能够显示该窗口 我能够存储Hwnd属性 我相信它必须是一个不可变的 int 引用来标识我的 Excel 窗口 有人可以详细说明这
  • 在 Php 中连接两个表[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我有两张桌子 表1 类别 Id na
  • XML 架构中的数字 ID 类型

    我需要使用 XML 模式定义具有给定模式的 ID 类型 到目前为止我所拥有的是这样的
  • 将 LaTeX 表格直接打印到图像(PNG 或其他)

    有没有办法从 R 中将 LaTeX 表格直接打印到图像文件 以包含在另一个文档 网页中 基本上 我想向一个函数提供 LaTeX 代码 该函数将其作为图像保存到工作目录中 白日梦 有各种 LaTeX 到图像转换器脚本 旨在执行诸如将方程转换为
  • 将 tcp_max_tw_buckets 设置为非常小的值有什么副作用?

    我知道将 tcp max tw buckets 设置为相对较小的数字 例如 30000 或 50000 是很正常的 以避免主机有大量时间等待状态连接并且应用程序无法打开新连接的情况 这是被提及很多次的事情 比如这样的问题 如何减少TIME
  • NodeJS - 来自 app.js 的第三方 Api 调用

    我需要从 NodeJS 后端调用第 3 方 api 并将数据返回到前端的 ajax 调用 下面是我的代码 router post get data function request response var city name reques
  • 如何根据屏幕尺寸将Epub Html拆分为页面

    我正在开发一个读取电子书 epub 格式 的 Android 应用程序 目前我正在使用 Paul Siegeman 的 epublib 库 它确实是一个非常好的 epub 阅读器 但它有一些限制 例如我需要的 你无法水平移动页面 就像阅读一
  • Android 将多张位图合并为一张大图出错,无法回收位图

    我想将 ArrayList 中包含的许多小位图合并为一张大位图 但是 我不知道为什么大位图会循环 这意味着它似乎只复制数组中的第一个元素 我尝试绘制数组中的每个小位图进行测试 它工作正常 但是当我像下面的代码一样运行循环时 它会出错 另外
  • 如何使用LLVM在Windows for ARM上编译C++程序?

    Aim仅使用 LLVM 在 Windows for ARM 上编译 C 程序 WhyLLVM 因为宽松的许可 我开始怀疑我对LLVM的理解是否正确 在主机上做 使用 clang 前端 生成中间表示 该表示与目标无关 使用llc 后端 生成目
  • WebSocket 由于页面重新加载时出现暂停错误而关闭

    我有一个调用函数来重新加载页面的按钮 function doReload window location 大约五分之一的 Safari 11 会在控制台中抛出此错误 WebSocket connection to ws localhost
  • 是否可以使用 tkinter 将中文文本输入到 tk Text 和 Entry 小部件中?

    我正在使用 tkinter 开发一些 GUI 应用程序来操作用户输入的中文文本 我在应用程序中显示中文文本没有问题 在将文本粘贴到应用程序中时操作该文本也没有任何问题 但是当我尝试使用中文输入法将中文文本输入到文本或输入小部件等时 它显示为
  • 使用 send_file 从 Flask 向 React 前端发送文件会返回一串奇怪的字符

    在我当前的程序中 用户在react中选择一个文件 该文件被发送到flask return axios post http localhost 5000 time data headers Content Type multipart for
  • 专用模板类的静态成员初始化

    class A template
  • 强制 (Py)Spark 以平衡的方式将分区分配给所有执行器

    所以我正在加载一个数据框 约 500 万行 约 80 列 其中一列 我们称之为 X 具有约 17000 个唯一字符串值 值计数分布良好且均匀 即 X 的值不会太频繁 我想按 X 对数据进行分组 并为其余列执行一些聚合指标 所以我认为首先在
  • 使用哪一个?数据库中的 EAV 或 Blob?

    我目前正在努力重新设计我们应用程序的数据系统 基本上 它的设计目的是让人们可以添加他们想要的所有自定义字段 而只有一些常量 始终存在的字段 我们当前的设计给我们带来了很多维护问题 我们所做的是动态地 在运行时 为每个字段向数据库添加一列 我