mysql - 5000 万个节点层次结构或更大

标签 mysql django mongodb hierarchical-data pytables

有没有人有什么好主意来实现大规模可扩展的分层数据存储?它需要快速添加并能够让许多站点用户请求报告层次结构中某个节点以下的节点数。

这是场景....

我将每小时添加大量节点。假设我想每小时添加 100 万个节点。它们可能会出现在整个层次结构中。理想情况下,规模将达到数十亿个节点,但 5000 万个是一个目标。我需要能够随时计算任何给定点以下的节点数,并且可能会有很多人同时这样做。将其视为许多用户(可能有 100,000 个并发用户)将在任何时候调用的报告。他们可能会请求某个节点下的所有节点。

数据库可以由单个进程读取格式为邻接列表(快速插入,慢速报告)的平面表创建,也可以是标准设计,网站用户直接更新层次结构,如果数据存储的存在是为了应对正在创建的大量节点。

我已经使用 Treebeard 和 MySQL 在 Django 中实现了这个。我正在使用物化路径方法,它相当不错,但相比之下我想要闪电般的速度。使用 30,000 个节点的数据存储,我在一台已使用 2 年的笔记本电脑上每分钟在树的底部插入 120 次。显然,我想要的远不止于此,并且认为也许可以使用更好的数据存储。也许是 PyTables、BigTable、MongoDB 或 Cassandra?

轻松集成到 Python/Django 会很好,但如果必须的话,我总是可以用另一种语言编写系统的这一部分。如果我们使用单个进程从平面数据存储中读出并处理到一个真正高效的分层数据存储中,这将非常适合报告,我想我不会有并发问题,这将否定事务的需要。

无论如何,这些信息足以让我们开始。使用正确的技术容易吗?

最佳答案

你看过Neo4J graph database了吗? ?它看起来非常有能力,并且有 a Python wrappersome support (in development) for Django . Neo 在 Java 上运行,您可以将它与 Jython 或 JPype 和 CPython 一起使用。

关于mysql - 5000 万个节点层次结构或更大,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3582727/

相关文章:

php - 无法使用 PHPExcel Reader 将字符从 PHP 导入到 MySQL 表

python - 模板参数是否可以等于另一个元素的值?

Django 项目 'site cant be reached'

python - 如何在django中从自身获取模型名称

angularjs - 在没有 Mongoose 用户的情况下使用 Passport-facebook(MEAN 堆栈中没有 Mongo)

mysql - 如何在 SQL 查询中过滤 IP 地址范围?

php - 从 laravel 中传递的数组对象更新 DB::table

mysql - 简单查询以获得准确结果

mongodb - 为什么 MongoDB(带 SSL)多次要求 .pem 密码?

node.js - mongoDB promise 返回得太早