你好,紫罗兰,
我需要查询具有许多/复杂空间条件的对象。在关系数据库中,转换为多个联接(可能是10+)。我对这个业务很陌生,我想知道是使用2008 R2或Oracle11g,还是使用基于文档的解决方案(如RavenDB ),还是简单地使用一些空间数据库.
有什么想法吗?
问候
更新:谢谢大家的回答。有人会选择文档/空间数据库吗?我的数据库将包含数千万至数十亿条记录。大多是只读的。几乎没有更新,除非在输入错误时。隔夜插入而不那么频繁。连接表是预先预测的,但自联接(表自身多次连接)的数量不是。这类查询的一小页结果将在一个高度互动性的网站上查看,因此响应时间至关重要。对于如何在MS 2008 R2或Oracle11g上执行此操作,有任何预测吗?我还担心通过增加更多的服务器来提高性能,哪个服务器的扩展更好?PostgresQL怎么样?
发布于 2011-02-11 23:22:29
建立和测试。
只有这样才能知道你的想法是否行得通。有免费版本的Oracle、SQL Server和Teradata可供下载。PostgreSQL是免费的,就这样。
数据库设计帮助可能不是免费的。SQL性能比任何其他单一原因都更容易受到设计不良的影响。
我昨天做了一个测试(概念的证明)。天在我的脑海中一起运行),在20个表上有5000万行,自然键(没有标识号),20个左连接,中间访问时间为40毫秒。使用一台带有慢速磁盘和2G RAM的普通台式计算机。
编辑:似乎也有一个免费的,单服务器版本的格林梅,它只受限于两个CPU套接字,对CPU核心没有限制。数据库大小也没有限制。我觉得有必要和几兆字节的人玩。
发布于 2011-02-11 18:05:34
在实际应用程序中,在一组表上执行10+连接比您可能认为的要常见得多。内部连接和外部连接的结果是不同的,但是我不会太担心,除非您要加入的数据量变得非常大。数据库是为处理集合而优化的。
示例:
就在昨天,我编写了一个执行13个内部联接的查询。它在不到一秒钟的时间内在50,000+记录上执行。
发布于 2011-02-11 18:10:38
同意,与其说连接是问题所在,不如说是查询的数据量。虽然我承认在使用more 2005、more 2008 R2以及Oracle10g和11g的环境中工作,但在运行大型查询时,我们的MS数据库似乎更容易出现死锁。
https://stackoverflow.com/questions/4972444
复制相似问题