高流量网站的标准化或非标准化

2024-03-08

像 stackoverflow 这样的高流量网站的数据库设计和规范化的最佳实践是什么?

应该使用规范化数据库来保存记录还是使用规范化技术或两者的组合?

设计一个规范化数据库作为记录保存的主数据库以减少冗余,同时维护另一个非规范化形式的数据库用于快速搜索是否明智?

or

主数据库是否应该非规范化,但在应用程序级别使用规范化视图以实现快速数据库操作?

或者其他一些方法?


加入对性能的影响经常被高估。 Oracle 等数据库产品旨在非常高效地连接。当真正的罪魁祸首是糟糕的数据模型或糟糕的索引策略时,连接通常被认为表现不佳。人们还忘记了非规范化数据库在插入或更新数据时表现非常糟糕。

要记住的关键是您正在构建的应用程序的类型。大多数著名网站与常规企业应用程序不同。这就是为什么 Google、Facebook 等不使用关系数据库。最近关于这个话题的讨论很多我在博客上写过 http://radiofreetooting.blogspot.com/2009/07/no-sql-so-what.html.

因此,如果您正在构建一个主要用于提供大量半结构化内容的网站,您可能不希望使用关系数据库(无论是非规范化数据库还是其他数据库)。但是,如果您正在构建一个高度交易性的网站(例如在线银行),您需要一种能够保证数据安全性和完整性的设计,并且做得很好。这意味着至少是第三范式的关系数据库。

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

高流量网站的标准化或非标准化 的相关文章

随机推荐

  • 按绝对值排序而不改变数据

    我正在寻找一种简单的方法来按特定列的绝对值对 pandas 数据框进行排序 但实际上不更改数据框中的值 类似的东西sorted df key abs 所以如果我有一个像这样的数据框 a b 0 1 3 1 2 5 2 3 1 3 4 2 4
  • 在 ES6 模块中通过字符串访问导出函数

    考虑以下 exports handleEvent event export function handleEvent event do something with event 这在使用 babel 转译节点模块时有效 因为它将所有内容粘贴
  • 在 XSLT 1.0 中将 EDT 转换为 GMT

    我的输入值为 2017 年 9 月 12 日星期二 15 03 22 EDT 或 2017 09 12T15 03 22 0000000 我需要类似 2017 09 12T19 03 22Z 是否可以在 XSLT 1 0 中将 EDT 日期
  • 在 Android 中隐藏键盘的最佳方法

    我想知道在 EditText 输入文本后隐藏键盘的最佳方法 1 setonfocuschangelistener 是否仅在按下完成按钮或焦点从一个 EditText 更改为另一个时触发此侦听器 当我使用这个方法时 我无法隐藏键盘 2 set
  • SSMS 2012 智能感知行为

    SSMS 2012 中智能感知的行为似乎已更改 因此它的行为与 Visual Studio 或 SSMS 2008 不同 以前我总是按空格键 这会插入智能感知中当前突出显示的单词 但在 SSMS 2012 中我必须按 TAB 或按向下键然后
  • 如何使用 python 传递字符串+ web url并接收响应[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我正在使用 Python 和谷歌翻译
  • iOS 的 BLE 外设名称不正确

    我正在编写一个 iOS 应用程序来与 BLE 设备通信 设备可以在连接之间更改名称 不能在 BLE 连接期间 但 iOS 拒绝更改设备名称 例如 当设备名称为 SadName 时 我可以连接到该设备 我断开连接 关闭应用程序等 然后将设备的
  • 检查空值并在不存在时分配另一个值的最短方法

    我拉着varchar值来自数据库并想要设置string如果它们是 我将它们分配为 null 我目前正在这样做 if string IsNullOrEmpty planRec approved by true this approved by
  • 如何在 CSS 中组合变换?

    我有一个 CSS 动画 它使用变换来相对于其当前位置移动 CSS fish animation fishanimation 4s ease in out infinite alternate keyframes fishanimation
  • Android espresso - 如何检查 Listview 底部 TextView 的值?

    在上面的附图中 它是一个带有TextView 交付报告 的ListView Its status can be Sent or Sending or Failed 我想检查 已发送 条件 这意味着断言消息已成功发送 由于这是一个对话 新消息
  • CSS 声明 - 元素类型和 ID 还是只是 ID?

    我应该如何使用 CSS 声明 这边走 div main content width 900px border 1px solid CCC margin 20px 0 20px 0 padding 40px overflow hidden 或
  • 我可以用算术运算的方式编写关系运算符吗?

    所以我有一个相当复杂的函数 template
  • 从 csv 导入时如何获取记录为 NULL 的缺失值

    我有多个大型 csv 文件 每个文件在许多地方都有缺失值 当我将 csv 文件导入 SQLite 时 我希望将缺失值记录为 NULL 因为另一个应用程序希望缺失数据由 NULL 指示 我当前的方法无法产生预期的结果 CSV 文件 test
  • 是否可以从另一个类库中的静态类获取ConnectionString?

    我已在 appsettings json 文件中添加了连接字符串 我需要访问后台操作所需的连接字符串 但为了使用连接字符串 我必须通过同一解决方案中不同项目的静态类进行访问 我无法使用ConfigurationManager Connect
  • 当 TFS 团队查询结果发生更改时发出警报

    是否可以创建一个 TFS 警报 在某个查询的结果发生更改时通知用户 Example 我有一个查询 结果找到 10 个工作项 这些工作项之一已更改 它不再满足此查询 查询结果应为 9 我想要一条通知 告诉我查询结果已更改 也指已更改的工作项
  • 将 Spark 特征向量转换为数组

    我有一个特征列 它使用 Spark 的 VectorAssembler 打包成向量向量 如下所示 data是输入 DataFrame 类型为spark sql DataFrame val featureCols Array feature
  • 保存具有 Parse.files 数组的 Javascript 对象会导致“将循环结构转换为 JSON”错误

    当我尝试上传要解析的解析文件数组时 我遇到了 parse com 不喜欢的问题 我目前有一个数组 arr 其中填充有 base64 字符串图像数据 for var i 0 i
  • 基于Spring Security的Token认证

    我正在尝试使用 spring security 为 HTTP api 启用基于令牌的身份验证 环顾四周 我看到了有关实现过滤器和处理程序的答案 例如 Spring Security 通过 token 进行身份验证 https stackov
  • Python networkx 图:不要将旧图与新图绘制在一起

    下面是我的代码 import networkx as nx for i in range 2 G nx DiGraph if i 0 G add edge A B elif i 1 G add edge A C import matplot
  • 高流量网站的标准化或非标准化

    像 stackoverflow 这样的高流量网站的数据库设计和规范化的最佳实践是什么 应该使用规范化数据库来保存记录还是使用规范化技术或两者的组合 设计一个规范化数据库作为记录保存的主数据库以减少冗余 同时维护另一个非规范化形式的数据库用于