【问题标题】:System architecture - Java Backend, Database, Mobile Apps系统架构 - Java 后端、数据库、移动应用
【发布时间】:2012-09-13 14:31:01
【问题描述】:

我正在使用 Spring、Hibernate 和 RDBMS 构建 Java 后端有一段时间了。此外,我还经常开发适用于 iOS 和 Android 的移动应用程序。

因此,我拥有一整套技术可用于这项任务,但我正在寻找更先进的技术,以更好地满足要求。我对此有一些想法,但我最好先解释一下我当前的系统是如何工作的,然后我希望我即将推出的系统是什么样子。

目前正在使用

  • Spring 框架将所有东西连接在一起
  • 使用实体 bean 休眠以实现持久性
  • MySQL 或其他作为 RDBMS
  • 使用 Dozer 创建的 DTO 对象
  • RESTful API 公开服务
  • DTO 以 JSON 格式传输

此设置有效。但我有一种感觉,就是工作量太大,使用其他技术可以让生活变得更简单。

我在寻找什么

在移动网站上,我想接收可以轻松缓存的当前屏幕的数据。 JSON 是已经序列化的东西,可以很容易地在移动应用程序中保存到磁盘,而无需使用另一个数据库。那么问题来了,我怎样才能将数据存储在后端,以便我可以更轻松地接收它,而不使用实体 bean、DTO 和 Dozer 在它们之间进行转换?难道没有另一个已经提供 JSON 的数据库解决方案吗?比如 OrientDB 或 Neo4J 等图形数据库呢?

我绝对想使用 Java 和 Spring,并且我愿意替代 Hibernate、RDBMS 和实体 bean 和 DTO。

期待您的回答!

【问题讨论】:

    标签: java database mobile architecture


    【解决方案1】:
    1. 您当前的设计(此设置有效)具有良好系统应具备的细节。 分层和良好的关注点分离
    2. 如果我正确理解您的要求,那么您的论点是,如果我的最终数据格式是 JSON,那么为什么不以 JSON 格式存储数据,这样您就可以摆脱中间层的大量管道代码/工作。
    3. 它将直接使您能够从存储中获取数据并将其传递给请求客户端。简而言之,这些就是您的要求。如果我错了,请纠正我。
    4. 现在 JSON 更多的是文本符号,而不是存储格式。 Jason 通常被 MVC 架构的 View 层使用,因为它很容易使用 Javascript 在屏幕上呈现。
    5. 鉴于终端客户端将是移动应用程序,您使用直接提供 JSON 的 NoSQL DB 的理由是可信的。
    6. 整体架构看起来不错,并且针对移动访问进行了高度优化。
    7. 现在推出 NoSQL JSON 存储,以下是支持 JSON 接口的 Document Store NoSQL DBs

      我。 CouchDB

      二。 JasDB

      iii.SchemaFreeDB

    8.您可以评估其中的任何一个以满足您的需求。

    【讨论】:

      【解决方案2】:

      (完全披露 - 我是 Kinvey 的工程师,BaaS 提供商)

      您可能会考虑的一个选项是使用后端即服务。大多数 BaaS 提供商使用 JSON 通过网络传输数据,这听起来符合您的要求。

      此外,您通常会获得许多常见的移动应用程序功能(即推送通知、文件存储和 CDN 基础架构、用户管理等)。如果您正在构建多个应用程序,每个应用程序都有自己的后端,这可能特别有用;而不是每次都重新发明轮子,只需启动一个新的后端。

      最后但重要的一点是定价。很大程度上取决于您的用例,但据我所见,BaaS 提供商通常比在 AWS 或其他云提供商上推出您自己的解决方案便宜得多,尤其是因为大多数提供商都提供免费套餐。

      【讨论】:

        【解决方案3】:

        尽管这个问题有点老了,但也许是 RDBMS 的一个快速替代方案:MongoDB。它是一个文档级锁定的文档数据库。它的扩展性非常好

        要点:它使用 JSON 作为其文档存储(实际上是 Binary JSON 又名 BSON,但这只是一个超集)。将文档插入数据库就像

        db.collection.insert(JSON);
        

        在 mongo shell 和

        DBObject bson = (DBObject) JSON.parse(JSONstr);
        collection.insert(bson);
        

        在 java 驱动程序中。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2016-02-20
          • 2011-01-28
          • 1970-01-01
          • 1970-01-01
          • 2018-05-23
          • 2012-10-11
          • 2013-08-20
          相关资源
          最近更新 更多