数据库:关系/非关系/面向对象......选择什么?

时间:2010-03-30 03:27:29

标签: database database-design

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

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

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

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

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

编辑关于网站处理的数据,它是Twitter风格的微博客网站,但帖子上有评论。关于数据量,只有未来会说明,但我正在构建它,好像它会变得流行,当然。

编辑2 :应用程序现在使用JDO / JPA,我只围绕app-engine数据存储区低级api创建了一个小层。

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

4 个答案:

答案 0 :(得分:2)

我不知道谷歌数据存储功能,但我想给我的两个eurocents。 在不知道您当前和未来的预期数据使用模式的情况下,很难说。有一点很明显就是知识。所有的SQL解决方案(特别是MySQL和Postgres)都是可靠的,并记录了性能,用法和怪癖。你知道你正在进入什么,以及你可能遇到的任何麻烦,很可能已经发生并且已经解决了。使用其他解决方案,您可以更自在。

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

答案 1 :(得分:1)

嗯,经过一些研究后我发现db4o不适合网站,因为它不能处理高并发性(我联系过支持,这就是他们对我说的话)

最佳选择似乎是MongoDB,因为它与google的数据存储区低级api非常相似:它是无架构,面向文档,查询相对强大,速度快,扩展性好,完全索引支持

我分析了很多的选项,这对于这种情况似乎是最好的。

答案 2 :(得分:0)

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

答案 3 :(得分:0)

根据谷歌的说法:

  

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

     

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

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