关系数据库用户试图了解非关系数据库以及如何实施 CRUD

Relational Database User trying to understand Non-Relational and how to implement CRUD

我目前正在参与一个应用程序项目,我负责设置后端。
我习惯使用的是 MYSQL 数据库 + php 用于清理和管理发送到前端的数据,我在这方面有更多的经验。但是,由于某些偏好我的老板们,在这个项目中,我发现自己正在研究 IBM 的 Bluemix 和 Cloudant 软件。 Cloudant 是一个 NoSQL 数据库(如 CouchDB),我严重缺乏关于 noSQL 的经验。到目前为止,我所做的只是创建一些 JSON 文档和一些基本视图

我需要弄清楚的是如何在 NoSQL 数据库上执行 CRUD(创建、读取、更新、删除)操作,或者至少它看起来像什么。

除此之外,我需要知道是否有办法在没有外部源的情况下在 NoSQL 数据库上实施安全措施(实施安全和反黑客功能),或者我是否需要学习如何重新路由如果我想清理数据,首先通过某种 php 函数处理数据,然后再将其发送到我的数据库所在的 Cloudant 服务器。

如果我对问题的解释不够清晰,请告诉我。如果需要,我会尽力以不同的方式陈述。

一般来说,没有什么能与 ANSI 等同于没有SQL 数据库。换句话说,NoSQL 数据库不如 SQL 数据库标准化。所有标准都开始出现。您可以将其视为一项仍在开发中的技术。

您通常拥有的是一个 API 和 put_recorddelete_record 等方法,或者是一个逻辑上等效的 REST 接口。另外,一般来说,您 CRUD 是整个记录,而不是部分记录。

看看参考:Cloudant - Reading and Writing

话虽如此,如果您关心避免供应商锁定,我建议您从要使用的 NoSQL 的具体实现中抽象出来。所以我建议你使用 PHP 函数包装 CRUD 函数,如果你想更改 NoSQL 数据库风格,以后可以替换这些函数。

这种方法还有一个额外的好处,它可以为您提供一个抽象来实现您自己的安全性。一些重要的 NoSQL 数据库没有多租户的概念或只是实现了它。同样,这是一项正在开发中的技术。

当您的思维方式是关系思维方式时,您倾向于将数据库视为可以帮助您尽可能保证数据一致性的东西。但是 NoSQL 数据库不是那样的。将它们视为一个简单的文档存储库(例如,在 JSON 或 XML 结构中),没有交叉引用。

那么显而易见的问题可能是:为什么会有人想要这样的东西?可能的答案之一是因为 NoSQL 数据库可能包含合并数据的集合。然后您可以检索聚合以节省不必要的重新处理或重新检索数据的时间。

至于安全性,大多数(如果不是全部)NoSQL 数据库都有一些非常好的身份验证机制。