有没有人有什么好主意可以实现大规模可扩展的分层数据存储?它需要快速添加并且能够让许多站点用户请求报告层次结构中某个节点下的节点数。
这就是场景......
每小时我会添加大量节点。让我们说我想每小时增加100万个节点。他们可能会出现在整个层次结构中。理想情况下,规模将达到数十亿个节点,但5000万是目标。我需要能够随时计算任何给定点下方的节点数量,并且很可能会有很多人同时对此进行处理。可以把它想象成一个报告,许多用户(可能是100,000个并发)将在任何时候呼叫。他们可能会请求某个节点下的所有节点。
数据库既可以由单个进程创建,也可以从格式化为邻接列表的平面表中读取(快速插入,慢速报告),也可以是标准设计,网站用户可以直接更新层次结构。存在数据存储区以应对正在创建的大量节点。
我已经使用Treebeard和MySQL在Django中实现了这个功能。我正在使用物化路径方法,它相当不错,但我想要闪电般的速度。使用30,000个节点的数据存储区,我在一台2岁的笔记本电脑上每分钟在树的底部实现120个插入。我显然想要更多,并认为可能有更好的数据存储使用。也许是PyTables,BigTable,MongoDB或Cassandra?
轻松集成到Python / Django中会很好但是如果必须的话,我总是可以用另一种语言编写系统的这一部分。如果我们使用单个进程从平面数据存储区读取并处理成一个非常有效的分层数据存储区,这将非常适合报告,我想我将不会出现并发问题,从而无需进行事务处理。
无论如何,这足以让我们开始。使用正确的技术这很容易吗?
答案 0 :(得分:1)
你看过Neo4J graph database了吗?它看起来非常强大,并且有a Python wrapper和some support (in development) for Django。 Neo在Java上运行,您可以将它与Jython或JPype和CPython一起使用。