创建一个实现了Disqus评论模板数据库模型

创建一个实现了Disqus评论模板数据库模型
长期以来,被认为是替代MySQL,PostgreSQL。但在那个时候,有没有办法让他达到MySQL可能达到的水平。近年来,这些问题一直没有得到解决,而且有很多有趣的工具来弥补,我们用两个slony和pgbouncer在Disqus。slony允许我们拷贝数据(有时可以分割),和pgbouncer解决问题保持联系和连接池。

同时,让我们在他们的语言看:我很高兴这个星期能够学会如何在pgsql8.4使用递归查询,他们太强大了。这是我真的想在这article.mysql大家讨论可以使我们的工作和很好的工作,但你只能在发动机结构做。虽然在PG仍然是这样,你有更多的选择。所以我想谈谈线索树。

我们都知道,Disqus不仅是最大的贾恩网站(我们有近100万人次/月)。同时,他也是最大的在线评论系统,我们为成千上万的网站提供了很多功能,最基本的是树形结构的提示

PostgreSQL的线索提供了一些解决方案。最常用的(最有效的)方法是先序遍历的改进版。总之,他增加了一个左,右的顺序,他们将被更新,当你添加评论。我们也有另一个标准方法(Reddit很快乐),这是把一切在内存中完成操作。事实上,不只是只有Reddit做。
拿什么PGSQL为我们提供了一个看,我们也可以找到两个选项(在8.4版中最小)。其中一个是内置在PG叫ltree模块。他允许你存储一个节点的完整路径(所有父节点)和允许你查询的SQL语句的标准这将是非常有用的当你需要排序第一的最早,因为它改变了一个简单的类ltree柱。然而,很多时候,DISQUS情况并非如此简单。

我们的第二个解递归查询。我花了很长的时间来了解他,但当我明白,我深深的被他的能力所吸引。Postgre提供许多功能,MySQL没有的,如在()的改性剂。他们真的做得很好。

让我们继续深入到我们的问题,这将是一个大问题。现在,同样的方式处理线程Disqus和Reddit等在线解决方案一样简单。我想说的是,这并不意味着代码是不好的,但他的优化不做他应该做的直到有人(你,奥巴马学生)开始使用该程序,每个人都想要回答他的话,我们发现的问题。再次,我们认为Djan(即使他们越来越大),他们通过业务逻辑。

从8.4年初开始,我们就可以使用递归查询来解决这个问题。(在很多情况下,我们已经开始这样做了,虽然会有点复杂),这很简单。

我们给出一个基本的例子,我们有一个注释模型,看起来有点像这个。

创建表注释(
串行主键,
消息varchar,
作者varchar,
parent_id整数引用评论(ID)
);
插入评论(消息、作者、parent_id)
值(这个线程是真的很酷!!,'david,null),('ya戴维,我们,戴维,1),它也被称为'ya,戴维,是的,很酷的。
(非常有趣的帖子!,'thedz,null),(你的先生,是错误的,'chris ',5),(','克',5);
我们现在所做的是建立一个基本的评价模型。我们的消息,我父亲的评论(这是可选的)。现在,让我们来学习如何使用递归查询轻松排序在这个数据,通过ID升序。

递归CTE(ID信息,作者,路径,parent_id,深度为()
选择ID,
消息,
作者,
数组{ }作为路径,
parent_id,
1深度
从评论
在parent_id是空的

联盟的所有

选择comments.id,
comments.message,
comments.author,
cte.path comments.id | |,
comments.parent_id,
cte.depth + 1深度
从评论
加入CTE在comments.parent_id = cte.id

从CTE中选择id、消息、作者、路径、深度
按路径排序;
它是甜的,不是吗哦,等等,这令人费解吗因此,我一直在寻找更复杂的查询是一堆惊人的错误。

Pgexperts指出正确的道路,我们。

现在,我不会得到太多,因为有一个更好的教程来处理这个模式中的递归查询,但是我们已经完成了我们的结果。

我们必须处理大量的信息,和一些评论有近几千个答复。如果99%评论只有100的回答,把他们的记忆是没有问题的,但当他们开始增加,我们会浪费很多时间。在pgsql递归查询允许我们简单的手这项工作对数据库(有时他们的过程比我们快得多),节省大量的时间和资源花在网络通信和网络处理。

一个例子可以让你更直观地了解他是多么有效率。我们已经看到,只有在大型数据库SQL处理时间(返回25结果而不是1000),它几乎节省了500%的时间。这甚至不包括我们程序级别的成本。是的,是的,这些SQL语句的速度是数据库层上其他数据库的5倍。

总之,作为一个MySQL的支持者,我被震惊的性能,尺寸,和Disqus使用PostgreSQL的灵活性。我期待着发现我们可以通过这个平台找到,仍在等待我们的挑战。

免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部