【问题标题】:JSON (client-side) <-> Java (server-side) <-> JSON (NoSQL DB)JSON(客户端)<-> Java(服务器端)<-> JSON(NoSQL DB)
【发布时间】:2013-05-16 20:07:05
【问题描述】:

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

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

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

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

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

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

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

【问题讨论】:

  • 这个过程对我来说似乎是标准的。我会研究 CouchDB,它存储常规 JSON 文档,所以这里没有服务器端转换。如果您需要序列化/反序列化 POJO,您可以使用 Jackson 或 GS​​ON。

标签: java json nosql data-conversion


【解决方案1】:

想到的一种可能的优化:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-19
    • 1970-01-01
    • 2017-06-19
    • 1970-01-01
    • 2013-09-23
    相关资源
    最近更新 更多