有没有人有任何伟大的想法来实现大规模可扩展的分层数据存储?它需要快速添加并能够让站点的许多用户请求关于层次结构中某个节点下方的节点数量的报告。
剧情是这样的......
我将每小时添加大量节点。假设我想每小时添加 100 万个节点。它们可能会出现在整个层次结构中。理想情况下,规模将达到数十亿个节点,但目标是 5000 万个。我需要能够随时计算任何给定点以下的节点数,并且可能会有很多人同时进行此操作。可以将其视为许多用户(可能是 100,000 个并发用户)随时会要求提交的报告。他们可能会请求某个节点以下的所有节点。
数据库可以通过读取格式化为邻接列表(快速插入、慢速报告)的平面表的单个进程创建,也可以是标准设计,如果数据存储存在,则网站用户可以直接更新层次结构以应对正在创建的大量节点。
我已经使用 Treebeard 和 MySQL 在 Django 中实现了这个。我正在使用物化路径方法,它相当不错,但相比之下我想要闪电般的速度。使用 30,000 个节点的数据存储,我在 2 岁的笔记本电脑上运行时每分钟在树的底部实现 120 次插入。显然,我想要的远不止这些,并认为也许有更好的数据存储可供使用。也许是 PyTables、BigTable、MongoDB 或 Cassandra?
轻松集成到 Python/Django 会很好,但如果必须,我总是可以用另一种语言编写系统的这一部分。如果我们使用从平面数据存储中读取的单个进程并处理到一个非常有效的分层数据存储中,这将是完美的报告,我想我不会有并发问题会否定事务的需要。
无论如何,这足以让我们开始。使用正确的技术很容易吗?