由于新的定价,我正在将GAE / Java应用程序迁移到Python(非GAE),所以我得到一个小服务器,我想找到一个符合以下要求的数据库:
我的数据是这样的:
我的查询非常简单。通常的情况是:
数据量不大。现在我有大约50MB的数据,但我计划拥有一个大约10GB的巨大数据集。
另外,我想从头开始重建,所以我愿意接受任何选择。您认为哪个数据库可以满足我的要求?
编辑:我想围绕不同的选项做一些基准测试并分享结果。到目前为止,我已经选择了MongoDB,PostgreSQL,MySQL,Drizzle,Riak和Kyoto Cabinet。
答案 0 :(得分:3)
迁移应用引擎应用的阻力最小的路径可能是使用AppScale,它实现了应用引擎API的主要部分。特别是,您可能希望使用HyperTable数据存储,该数据存储与Google App Engine数据存储区域非常相似。
编辑:好的,所以你要重新设计。我想谈谈你在问题中提出的一些观点。
内存使用率低
这几乎与数据库中的内容完全相反;您需要尽可能多的核心内存中的数据集;这可能意味着调整数据集本身以有效适应,或添加memcached
节点,以便您可以跨多个主机传播数据集,以便每个主机具有足够小的数据集,使其适合核心。
要将这一点推向家庭,请考虑从ram读取值比从磁盘读取值快大约1000倍;与只需1%的查询访问磁盘的数据库相比,可以满足核心每个查询的数据库可以处理10倍的工作量。
我计划拥有一个10GB左右的庞大数据集。
我认为你不能将10GB称为“庞大的数据集”。事实上,这可能适合大型数据库服务器的内存;您不需要多个memcached节点,更不用说额外的持久节点(典型磁盘大小在TB级,比预期的数据集大100倍。
根据这些信息,我肯定会建议使用像PostgreSQL这样的成熟数据库产品,它可以为您描述的数据提供充足的性能,轻松提供您正在谈论的所有功能。如果您需要扩展PostgreSQL实际提供的内容,那么您实际上需要分析一个真正的工作负载才能知道瓶颈究竟是什么。
答案 1 :(得分:1)
我会推荐Postresql,因为它可以做你想要的,可以扩展,快速,相当容易使用和稳定。
在给出的示例查询中速度非常快,并且在查询文档时可能更快。