2

我目前正在为我的应用程序使用面向文档的 NoSQL 数据库。

我想到这一举措的主要动机是:

  1. 我的服务器端向其客户端发出 JSON。
  2. 我的服务器端是基于 Java 的。
  3. 使用关系数据库意味着我需要从 DB 中的关系数据 -> Java 代码中的对象数据 -> JSON 文档进行转换以供客户端使用(反之亦然)。
  4. 步骤 3 中涉及的 ORM 开销似乎足以避免。
  5. 我的数据库架构可能会发生变化,我想轻松地适应它们。
  6. 缓存(比如使用 Redis 或 NoSQL DB 本身)与底层 NoSQL 数据库很好地映射。
  7. 使用 NoSQL 数据库进行扩展和分发感觉很自然。

因此,鉴于决策制定的背景,我最终得到以下数据转换:
JSON(到/从客户端)<-> Java(在服务器端)<-> NoSQL 数据库中的 JSON 文档。

我的问题是,是否可以最小化这些转换(对于 Java 服务器端)?(可能如果我在服务器端使用 Node.js,我可以一直使用 JSON,但我不能在服务器端从 Java 更改)。

我正在做的事情是通常的方式还是有可能进行优化(关于数据转换)?

尽管可能有一些库/包有助于将 Java 对象转换为 NoSQL DB 中的 JSON 文档(如 Morphia、Ektorp、Mongolink 等),但我的问题是是否有可能首先避免此类转换。

4

1 回答 1

0

想到的一种可能的优化:

对于为将 JSON 返回给客户端而执行的大多数数据库“读取”,无需从 JSON 文档转换为专门的 Java 对象,然后再转换回 JSON 以发送给客户端。对于此类读取操作,在 Java 服务器端,DBObject(它是用于保存从 NoSQL DB 检索的 JSON 文档的通用 Java 对象)可能就足够了。

其他读取是那些需要操作从数据库中检索到的数据的读取,因此需要将其转换为特定于域的对象类型。但在我看来,这种转变是不可避免的。

于 2013-05-22T01:01:19.203 回答