【问题标题】:Database: relational/not relational/object oriented... What to choose?数据库:关系/非关系/面向对象...选择什么?
【发布时间】:2010-03-30 03:27:29
【问题描述】:

我正在移植一个我为应用引擎制作的网站,以便在专用服务器上运行。它是用java编码的,我正在寻找一个数据库来替换谷歌数据存储。

我的第一个想法是 MySql,因为每个人都使用它,但我不喜欢 SQL,我认为使用 OODB 或其他任何东西我会感觉更舒服。

使用谷歌数据存储,我可以修改我的模型,完全不用担心数据库定义。我知道使用 MySql 是不可能的。我不想错过。

如果我使用 OODB,我应该使用哪个?与MySql相比性能如何?

好吧,任何想法或提示都会对我有所帮助,因为我对数据库一无所知。

编辑:关于网站处理的数据,它是一个 Twitter 风格的微博网站,但帖子有它的 cmets。关于数据量,只有未来才能证明,但我正在构建它,就好像它会变得流行一样,当然。

编辑 2:该应用程序现在使用 JDO/JPA,我只是围绕应用引擎数据存储低级 api 做了一个小层。

编辑 3: 我想知道我是否可以使用 db4o?网站使用db4o是正确的选择吗?

【问题讨论】:

  • 有关要存储的数据的大小和形状的任何详细信息,还是您更愿意将其留给 NoSQL-SQL 辩论?
  • 那么,您的功能需求和用例是什么?我对 MySQL 有偏见,所以对于“开源传统 RDBMS”,我推荐 Postgres 或 Firebird。虽然 DB4O 更适合玩,但是像 AR/Hibernate/iBatis 这样的层以千千万万的风格存在(即,一些基于 SQL 的映射器/接口)。另一方面,学习 SQL(和一些关系理论)不会有什么坏处。
  • 好吧,我添加了一些关于我希望处理的数据的信息
  • 我很好奇...为什么要迁移? GAE 出了什么问题?我是从考虑开发针对 GAE 平台的人的角度来提问的。
  • GAE 很棒,但我无法处理没有全文搜索。

标签: database database-design


【解决方案1】:

我不知道 google 数据存储区的功能,但我想给我两欧分。 在不了解您当前和未来的预期数据使用模式的情况下,很难说。很清楚的一件事是知识。那里的所有 SQL 解决方案(尤其是 MySQL 和 Postgres)都是可靠的,并记录了性能、使用和怪癖。你知道你正在遇到什么,你可能遇到的任何麻烦,很可能已经发生并且已经解决了。使用其他解决方案,您可以更加独立。

请考虑到这一点。不是一个完整的答案,只是一个意见。

【讨论】:

    【解决方案2】:

    好吧,经过一番研究,我发现 db4o 不是网站的好选择,因为它无法处理高并发(我联系了支持,他们就是这么告诉我的)

    最好的选择似乎是MongoDB,因为它与谷歌的数据存储底层api非常相似:它是无模式的,面向文档的,查询功能相对强大,速度快,可扩展性好,支持全索引。

    我分析了很多选项,这似乎是本案的最佳选择。

    【讨论】:

      【解决方案3】:

      在您的应用引擎版本中,您使用的是 JDO 还是 JPA API?如果是这样,您可以继续使用带有 SQL 后端的那些。 Datanucleus 支持许多不同的 JDO 和 JPA api 后端。

      【讨论】:

      【解决方案4】:

      根据谷歌:

      Google App Engine 包括 支持两种不同的 API 数据存储标准:Java Data Objects (JDO) 和 Java 持久性 API (JPA)。这些 接口由提供 DataNucleus Access Platform,一个 几个开源实现 Java 持久性标准,具有 App Engine 数据存储区的适配器。

      http://code.google.com/appengine/docs/java/gettingstarted/usingdatastore.html

      基于此,我建议查看 JDO 和 DataNucleus 以提供数据持久性。尤其是因为您需要与 App Engine 提供的功能基本相同的功能。

      【讨论】:

      • 我再编辑一下问题,我没有用过JDO/JPA,我只是在底层api周围做了一个小层:code.google.com/appengine/docs/java/javadoc/com/google/…
      • 您应该尝试 JDO 和 DataNucleus 来解决您的问题。我认为您不会找到 Google 的 com.google.appengine.api.datastore 包的克隆。
      • 我不是在寻找克隆,我会重写数据库相关代码,这就是我寻找可能的数据库的原因。
      猜你喜欢
      • 2010-10-19
      • 2011-03-23
      • 1970-01-01
      • 1970-01-01
      • 2014-08-05
      • 1970-01-01
      • 2011-08-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多