0

在我的工作中,我们使用 Oracle 作为我们的数据库。效果很好。我不是主要的数据库管理员,但我确实使用它。我喜欢的一件事是数据库有一个使用 PL/SQL 的内置逻辑层,它可以处理与保存数据和检索数据相关的逻辑。我真的很喜欢这个,因为它让我们的 MVC 应用程序(PHP/Zend 框架)变得更轻,并且更容易将另一个平台与数据联系起来,例如桌面或移动。

虽然,我有一个个人项目,我想使用 couchdb 或 mongodb,我想尝试实现类似的目标。在 mvc/framework 之外,我想要一个主要应用程序与之对话的 API 层。他们实际上并不直接与数据库对话。他们为 mongo 指定设计文档 (couchdb) 或类似的东西,以获得结果。该 API 层将验证传入的数据,并确保数据本身被正确保存和更新。例如保存一个新用户,在框架中我只需要发送一个带有需要保存的键/值的json对象,api层将数据保存在需要的适当位置。

这个 API 可能会有一个 UI,但仅用于管理目的并让我的生活更轻松。一般来说,它总是会回复 json 字符串,或者在某些情况下是预渲染/缓存的 html。因为无论如何每个 api 层都是特定于应用程序的。

我想知道是否有人做过这样的事情,或者有任何关于网络的提示,我可以做到这一点。我目前正在寻找用 python 编写我的应用程序,前端可能是 Angularjs 之类的。虽然我也在寻找 node.js 作为后端。

4

1 回答 1

1

我们在我目前的工作中做这件事。我们在后端有 MongoDB,在它之上有一个 RESTful API,然后在前端有 PHP/Zend。

我们的大部分数据都是只读的,所以我们将这些数据导入 MongoDB,然后 RESTful API(Java 中)就可以提供它。

使用这种方法需要考虑的一些事情:

  1. 在您的 API 中编写通用排序/分页逻辑。您将需要此数据列表。用户可以传入诸如http://yourapi.com/entity/1?pageSize=10&page=3之类的内容。

  2. 确保在 Mongo 中创建适当的索引以匹配人们将查询的内容。假设您正在存储用户。在 Mongo 中的用户 id 字段上创建索引,或者只使用已在所有调用中索引的 _id 字段。

  3. 确保在给定文档中包含所有相关数据。Mongo 不像您在 Oracle 中习惯的那样进行连接。请记住,建模数据与文档数据库非常不同。

  4. 您似乎想编写一个与数据库无关的层(中间层 API)。这是一个很好的目标。请注意不要让 Mongo 特定的术语渗入您公开的 API。Mongo 具有特定的运算符/概念,您需要使用更通用的术语来掩盖它们。例如,他们有一个 $set 运算符。不要直接暴露。

最后,在对 CouchDB 和 Mongo 有相当多的经验之后,我肯定会选择 Mongo。

于 2013-02-19T03:10:31.303 回答