【问题标题】:Relational Database & MyIsam关系数据库和 MyIsam
【发布时间】:2012-09-08 19:27:42
【问题描述】:

刚从大学毕业,我就学会了设计数据库的“正确”方法。例如数据库规范化,如何构建表等。

现在我面临着他们在大学里没有教给我的东西......

看来我可以选择 2 个数据库引擎 - MyISAM 或 InnoDB。

我知道我可以使用 InnoDB 存储引擎构建关系数据库,但是据我所知,我无法使用 MyISAM 存储引擎构建关系数据库,因为我无法链接表。

所以 - 我的问题 - 请告诉我是我只是愚蠢还是只是错过了一个技巧......

如果我不能用 MyISAM 构建关系数据库,那它有什么用呢? 如何使用 MyISAM 确保数据库完整性? 大多数人使用 MyISAM 还是 INNODB? 如何在两个 MyIsam 表之间实施约束?

例如如果我正在建立一个小型在线商店,我将有一张产品表和一张类别表。产品必须属于 1 个类别。我将如何使用 MyIsam 构建它?

【问题讨论】:

  • 只需选择 InnoDB。 MyISAM 是过去的遗物。确实,如果您能提供帮助,您不会想在没有 ACID 和 FK 的情况下生活。
  • 使用 PostgreSQL。 Oracle 正在慢慢扼杀 MySQL,而 PostgreSQL 是后起之秀。
  • 但是如果你必须使用 MySQL,请使用 InnoDB 写入(主数据库),并使用 MyISAM 从(从数据库)读取,因为 Inno 支持事务和密钥,而 MyISAM 支持全文搜索跨度>

标签: mysql database-design relational-database innodb myisam


【解决方案1】:

确实,当前版本的 MySQL 不会强制执行在 MyISAM 表上定义的外键约束,但这并不意味着不能在此类表之间创建 关系(毕竟,只是在一个表中保存标识另一个表中的相关记录的数据):必须更加小心地正确管理它们。

如果强制执行 ACID 合规性对您很重要,那么 InnoDB 就是您的最佳选择;如果您可以牺牲这种合规性以换取在某些情况下提高性能,那么 MyISAM 可能值得一看。如果需要,您甚至可以在同一个数据库中混合和匹配两个存储引擎以实现平衡。

大量资源讨论了 MyISAM 与 InnoDB 的优缺点 - 只需在 Google(或此站点)上搜索即可!

【讨论】:

  • 也许我很傻,但在什么情况下符合 ACID 不重要?像 WORDPRESS 数据库这样的数据库如何摆脱不符合 ACID 的问题?
  • 也许是只读数据库?
  • @Gravy:正如我所说,有时性能问题胜过 ACID 合规性。就个人而言,我倾向于使用 InnoDB 作为规则,MyISAM 作为例外——但我知道其他人可能会有所不同。 Wordpress 实际上并没有指定存储引擎,而是使用服务器的默认值(DBA 可以通过default-storage-engine 选项自定义;如果没有指定默认值,MySQL = 5.5.5 使用 InnoDB )。
  • 可以公平地说,数据库纯粹主义者会使用 InnoDB,而那些不了解关系数据库或只想存档资料的人会使用 MyISAM?
  • @Gravy:我不认为我已经准备好在那个人身上伸出我的脖子!正如我所说,有很多资源讨论 MyISAM 与 InnoDB 的优缺点:我什至不会尝试在这里重现这样的内容,因为它之前已经在 SO 和别处。无论如何,Database Administrators 可能比这里更热门。
【解决方案2】:

关系模型是在 1969-1970 年开发的,目的是帮助阐明构建符合该模型的数据库的案例。没有什么特别的理由为什么应该使用关系模型来对最终将进入分层数据库的数据进行建模。但是,使用关系模型来帮助描述从分层数据库中出来的数据以及在将其交付给 DBMS 客户端之前可能会很有用。

重要的是要认识到数据的关系模型是一种设计工具,而不是真正的分析工具。数据的 ER 模型是专门为数据分析而发明的,而不会将分析偏向于一种特定的实现,例如关系或 SQL 实现。在这样的 ER 模型中,没有外键。重要的是要理解外键是解决方案的一个特征,而不是问题的一个特征。

也许,为了使用 MyISAM 构建一个像样的数据库,您需要重新学习构建数据库的正确方法。你在大学里学到的可能是如何构建关系数据库,假设没有学生需要构建分层数据库。

警告:大多数分层 DBMS 的顶部都贴有“关系层”,因此以关系术语思考的人可以使用该工具,而不必将关系模型搁置一边。至少在某些方面,关系 DBMS 比非关系 DBMS“更好”。 1969-1970 年提出的论点在很大程度上仍然有效。

【讨论】:

    猜你喜欢
    • 2011-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-08
    • 2011-04-04
    • 2015-09-26
    相关资源
    最近更新 更多