我应该使用 mySQL 还是 MongoDB [关闭]

2023-11-22

目前有很多关于 NoSQL 的讨论,据我了解,Mongodb 就是其中之一,对我来说,NoSQL 似乎是 SQL,只是与我们所知道的 mySQL 不同。

可以这样想,它们都存储数据,一个通过具有所谓限制的固定数据库来存储数据,而另一个则在它认为存储数据的最佳时间并且可能没有限制或很少的情况下存储数据。

然而,这对于正在进行转换或考虑进行转换的 Web 开发人员来说是令人困惑的。就我而言,我在一家大型电信公司工作,像这样的转换是需要真正考虑的事情,我们不能依赖于没有物理存在的东西。

也许我没有理解NoSQL的含义,也许我的意思是正确的。

我目前正在重写我们使用的整个 CMS,并且很高兴知道我应该花时间查看 noSQL 还是保留 MySQL(目前似乎没有任何问题)

我们的客户详细信息中只有 5000 行,而备份中有 14000 行,它会被备份,以防万一主表决定搞砸。


您是否被迫选择其中之一?如果不是,为什么要通过必须做“这个”或必须做“那个”来限制解决业务需求的潜在解决方案。我将软件工程的工作流程步骤等同于医生的工作流程步骤。

医生必须做出许多决定才能确保手术成功。这包括诊断、确定切口点以及选择其行业所需的工具;手术刀、骨锯等来完成手术。如果你告诉医生只能用弩来做手术,那么最终的结果对病人或医生来说都不会很好(医疗事故)。

因此,远离笨拙的类比,以下是我选择同时使用两者的几个原因(以在线书店为例):

  • ISBN、作者姓名、出版日期等图书数据存储在 RDBMS(假设为 MySQL)中。通过将此类数据存储在 MySQL 中,我可以运行任意数量的查询来呈现给用户。例如,我可以运行一个查询,返回姓氏带有字母 Z、出版日期为 2005 年的作者出版的所有书籍,按 ISBN 降序排列。在为您的公司(或客户)创建有用的功能时,这种类型的数据操作至关重要。

  • 书籍资产(例如封面艺术)使用 NoSQL 解决方案存储在文件系统上。这解决了两个问题。首先,我不希望大量数据使我的 MySQL 数据库(blob)膨胀,因此我将这些数据存储在文件系统上。其次,书籍的封面艺术与任何实际的书籍数据无关(人们真的希望所有书籍的封面艺术都是蓝色的吗?)。我们根本不能放弃一本书的封面艺术,因为当用户浏览我们的在线库存时,它可能会决定销售的成败。

最后,我向您的建议是选择成功完成操作所需的任何和所有工具,并以一种便于将来添加新功能的方式。

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

我应该使用 mySQL 还是 MongoDB [关闭] 的相关文章

  • 从 mongo shell 查找 mongoDB 上 2 个文档之间的差异

    我正在使用 mongodb 2 4 4 我想比较 2 个文档 然后仅使用 mongo shell 打印它们的差异 有没有办法比较它们 就像是 db collection compare first doc objectID blablalb
  • 是否有工具可以将 Neo4j 图转储为 Cypher 并从 Cypher 重新加载它?

    每个熟悉 MySQL 的人都可能使用过 mysqldump 命令 它可以生成代表 MySQL 数据库中的架构和数据的 SQL 语句文件 这些 SQL 文本文件通常用于多种用途 备份 播种副本 在安装之间复制数据库 将产品数据库复制到临时环境
  • 哈希 MySQL 数据库架构

    我想对 MySQL 数据库模式 没有数据 进行哈希 签名 以便对其进行校验和 以确保它不被其他人修改 我怎样才能实现它 据我了解您的问题 您需要表校验和 checksum table table 所以 我想 只需对空表进行校验和
  • 如何在 Node.js 中使用 Winston 将日志存储到 mysql 数据库

    我正在使用 winston 为我的应用程序进行日志记录 我已经使用这个完成了文件传输 class LoggerHelper extends BaseHelper constructor cApp super cApp this props
  • PHP 5.4 PDO 无法使用旧的不安全身份验证连接到 MySQL 4.1+

    我知道有很多类似的问题 事实上我已经阅读了所有 9 个问题 但是 他们都没有解决我的问题 我有一个共享托管包 最低限度 我的包中包含域名和托管 MySQL 服务器的单独 IP 地址 为了开发 我正在使用http localhost 与 PH
  • 使用 PHP 将文件上传到 MySql DB

    我希望用户通过我在后端使用 MySql 用 PHP 开发的 web 应用程序上传文件 我想将文件存储在数据库中 我在这样做时遇到了问题 此外 一旦文件存储在数据库中 我们如何下载它 并在 web 应用程序中正确显示它 文件类型和文件的其他属
  • 如何获取 JDBC 中 UPDATE 查询影响的所有行?

    我有一项任务需要使用更新记录PreparedStatement 一旦记录被更新 我们知道更新查询返回计数 即受影响的行数 但是 我想要的不是计数 而是受更新查询影响的行作为响应 或者至少是受影响的行的 id 值列表 这是我的更新查询 UPD
  • 选择每组最新的项目[重复]

    这个问题在这里已经有答案了 可能的重复 检索每组中的最后一条记录 https stackoverflow com questions 1313120 retrieving the last record in each group 我有 2
  • pyodbc 无法正确处理 unicode 数据

    我确实使用 pyodbc 成功连接了 MySQL 数据库 并且它可以很好地处理 ascii 编码的数据 但是当我打印使用 unicode utf8 编码的数据时 它引发了错误 UnicodeEncodeError ascii codec c
  • MyBatis 枚举的使用

    我知道以前有人问过这个问题 但我无法根据迄今为止找到的信息实施解决方案 所以也许有人可以向我解释一下 我有一个表 状态 它有两列 id 和 name id是PK 我不想使用 POJO Status 而是使用枚举 我创建了这样一个枚举 如下所
  • Wordnet sqlite 同义词和示例

    我正在尝试获取给定 wordid 的同义词和示例列表 经过大量的试验和错误 我可以获得所有同义词集的样本 但不是实际的同义词 这是我的查询 它给出了以下结果 select senses wordid senses synsetid sens
  • 服务器发现和监控引擎已弃用

    我在 Node js 应用程序中使用 Mongoose 这是我的配置 mongoose connect process env MONGO URI useNewUrlParser true useUnifiedTopology true u
  • 如何查找所有mysql表之间的所有关系?

    如何找到MySQL所有表之间的所有关系 例如 如果我想知道大约有 100 个表的数据库中表的关系 有什么办法知道这个吗 从编程角度来说 更好的方法是从以下位置收集数据 INFORMATION SCHEMA KEY COLUMN USAGE表
  • 通过 PDO 将双精度数插入 MySQL 时精度损失

    我遇到了这种非常烦人的行为 我想知道我是否做错了什么 或者这是否是故意的 如果是的话 为什么 每当我在 php 5 3 中有一个 double 类型的变量 并且想将其插入到数据库 MYSQL 5 0 的 double 类型字段中时 该值总是
  • 如何处理PDO异常[重复]

    这个问题在这里已经有答案了 我正在尝试与PDOphp 上的类 但我在找到处理错误的正确方法时遇到了一些麻烦 我编写了以下代码
  • Symfony/Doctrine 重新排列数据库列

    当我使用doctrine schema update命令行生成表时 Doctrine 或Symfony 似乎想要添加一个命令来重新排列我的列 将键放在它出现的前面 我想知道是否 更希望在哪里 我可以禁用环境的这个 功能 所以当我去生成我的表
  • 将 mongo 数组转换为具有键值对的对象

    我有一个包含字符串数组的 mongo 文档 我需要将这个特定的字符串数组转换为包含键值对的对象数组 以下是我目前的做法 id ObjectId 57e3720836e36f63695a2ef2 platform A1 available C
  • MySQL解释更新

    作为我大学复习的一部分 我试图回答以下问题 至少在表的一个属性上创建索引 employees 数据库 您可以在其中使用 MySQL EXPLAIN 工具 清楚地显示好处 在条款或检索方面 和负面 在 更新条款 创建相关索引的信息 对于第一部
  • 如何在 MySQL 中启用严格 sql_mode?

    我怎样才能启用严格sql mode在 MySQL 中 我想从 SQL 中获取数据并在中处理相同的数据strict mode 我现在的sql mode is mysql gt SELECT sql mode sql mode NO ENGIN
  • 使用多个 WHERE 子句更新 Codeigniter 中的批次

    我查看了 CI 用户指南来了解如何处理update batch 并且它似乎只接受一个索引来匹配要更新的行 但在我的例子中 我需要指定两个索引 例如lang and id page我一起用作索引 这样的lang en id page 115是

随机推荐

  • .htaccess 重写规则删除 RK=0/RS= 之后的所有内容

    我有一个网站收到大量对不存在页面的请求 所有请求都基于现有页面 但有RK 0 RS 在末尾加上一个随机字符串 例如 请求是 www domain com folder article RK 0 RS M9j32OWsFAC u8I6a0xO
  • 当顶级命名空间包含基类且内部命名空间包含子类时,C# 命名空间和类/子类命名约定

    我正在尝试为特定的工程应用程序设计一个类库 并且我正在尝试确保我的类和命名空间命名约定有意义 我有以下情况 namespace Vehicle class Wheel base class for Wheel objects class E
  • 如何使用 Rselenium 读取 html 表格?

    我正在使用 Rselenium 导航到网页 下面的代码就是这么做的 我没有提供网址 因为我在一家需要 VPN 连接的公司中使用该网址 RSelenium startServer require RSelenium remDr lt remo
  • 如何在python或java中将geotiff转换为jpg?

    我有一个具有 3bands 的 geotiff 图像 band1 2 是实际图像值 band3 是实例角度值 band1 2 是 float32 数据类型 下面的代码是我之前尝试过的 但它不起作用 我认为波段数据的范围太大 所以不 from
  • 使 WebWorkers 成为一个安全的环境

    为了寻求一个能够在浏览器中运行任意 javascript 代码的界面 而不会有一个典型的 yo mama 笑话大小的安全漏洞 Esailija建议使用网络工作者 它们在半沙盒环境中运行 没有 DOM 访问权限并且已经在浏览器内部 并且可以被
  • 如何模拟 Application 类来对 ViewModel 进行单元测试

    我有一个View Model延伸AndroidViewModel class MoveViewModel application Application AndroidViewModel application CoroutineScope
  • 创建 Excel 文件并另存为 PDF。 [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 询问我们的问题推荐或查找工具 库或最喜欢的场外资源与 Stack Overflow 无关 因为它们往往会吸引固执己见的答案和垃圾邮件 反而 描述问题以及迄今为止已采取哪些措施来解决该
  • jquery自动完成自动填充字段与第一个值并突出显示添加的部分

    我使用 jqueryui 自动完成插件和以下代码 this autocomplete source function request response ajax url clinic auto data term this term nam
  • Docker 卷安装在 Azure DevOps Pipeline 中不起作用

    Docker 卷安装在 Azure DevOps Pipeline 中不起作用 请在下面找到我的代码 我尝试了两种方法在管道中运行我的 docker 容器 请参阅下面 都返回空卷 卷安装没有发生 我不确定我在这里犯了什么错误 如果有人能帮助
  • UINavigationBar 标题标签文本

    是否可以让标题文本缩小以适应UINavigationBar in iOS 适用于没有自动布局的纵向 iPhone 应用程序 我正在动态设置标题栏 但有时文本太长 目前它只是用省略号将其截断 即 这是 我希望它能缩小文本 您可以创建自己的标题
  • TensorFlow map_fn 性能和内存使用

    我有一个函数的两个实现 用于计算减去迹线的弗罗贝尼乌斯范数 此函数适用于 4D 张量 x 的第 3 维中的所有向量 然后总结所有结果 我用它作为卷积网络的一部分 TensorFlow的版本是0 9 我的第一个实现使用 tf batch 函数
  • 如何在 SQL Server 中的 case 语句内执行 SUM()

    我想在 case 语句中添加一些计算以动态创建新列的内容 但出现错误 列 Test1 qrank 在选择列表中无效 因为它未包含在聚合函数或 GROUP BY 子句中 这是我正在处理的代码 case when test1 TotalType
  • 如何使用 Phusion Passenger 纠正此 ESM 错误?

    我正在尝试使用 Phusion Passenger 在生产服务器上启动我的 NodeJS API 我使用了最后的 ECM 语法来导入 导出我的模块 然而 当尝试访问我的 api 时 Passenger 返回此错误消息 Error ERR R
  • 绘制时间序列时将 x 轴标签设置为日期

    x read table text Qtr1 Qtr2 Qtr3 Qtr4 2010 1 8 8 0 6 0 3 0 2011 2 0 11 0 7 0 3 5 2012 2 5 14 0 8 0 4 2 2013 3 0 15 2 9 5
  • 如何在 JavaScript 中标准化正数列表?

    我有一个充满正 int 值的数组 如何规范化该列表以使最大值始终为 100 先感谢您 这个想法是首先找到数组中的最大数字 使用apply on Math max 然后求最大数与 100 之间的比率 之后 只需循环数组并将所有数字除以该比率即
  • 如何使用原始索引枚举切片?

    如果我想枚举一个数组 比如说map 我需要使用元素的索引及其值的函数 我可以使用enumerate 功能 例如 import Foundation let array Double 1 2 3 4 let powersArray array
  • constexpr std::array 与 static_assert

    include
  • C++ 控制台输出中的上标

    I d like to have my program output cm2 cm squared 如何制作上标2 正如 Zan 所说 这取决于您的标准输出支持的字符编码 如果它支持 Unicode 您可以使用 U 00B2 如果它支持源文
  • 生成分段迷宫的算法

    I want to generate a maze that looks like this 也就是说 它由一个方向上的路径组成 然后将这些路径连接起来 我一直在寻找一种算法来生成这样的迷宫 但没有成功 具体来说 我don t想要一个这样的
  • 我应该使用 mySQL 还是 MongoDB [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 目前有很多关于 NoSQL