单个实例上的 Neo4j 节点和关系大小

Neo4j node and relationship size on a single instance

我开始了我的宠物项目——这是一个决策系统。该项目建立在不同的技术之上,但 Neo4j 是主要数据库,也是它的核心。我使用 Spring Data Neo4j 5 和 Spring Boot 2 以便与 Neo4j 一起工作。

我用Neo4j Community Edition 3.3.0

我的项目是一个通用应用程序,可以存储和比较任何性质和领域的决策(Neo4j 节点)。可以比较和过滤的所有内容都可以存储和呈现在那里。

现在我正在用加密货币测试我的解决方案 - http://decisionwanted.com/decisions/1/blockchain/categories/cryptocurrency/comparison/5a49e8a3f2ee40361037c56c

当我在 UI 上修复错误和激活功能时(现在它包含大量错误并且 ~70% 的 UI 功能尚未激活)我注意到 Neo4j 数据库中的数据量急剧增加,因为我正在收集每个值的历史记录,例如,这里 http://decisionwanted.com/decisions/2/bitcoin 我正在收集

的历史值
Price (USD)
Available Supply
Total Supply
Change 1h (%)
Change 24h (%)
Change 7d (%)
Market Cap (USD)
Volume 24h (USD)

目前系统每天新增约2-3百万个新节点。

这是我的 Neo4j 数据库的当前状态(系统只工作了几天)

MATCH(n) RETURN count(n)

8288217

现在我想知道 Neo4j 可以在单个实例(一个物理服务器)上保持多少节点和关系以进行正常工作,以及我的应用程序何时会面临数据存储问题。请指教

社区版有 640 亿个节点和 640 亿个关系的限制,按照目前的速度,您的数据库将在大约 58 年内达到此限制。

假设您会积极主动并为自己设定一个截止日期为 320 亿,那么您将有大约 29 年的时间。

到那时会发生什么:

  • 你永远达不到 20 亿,因为你女朋友写太多代码会毁了你的笔记本电脑
  • 美国和朝鲜总统会做出让你永远不会到达这个时间线的事情
  • Neo4j 的创始人 Emil Efrem 将关闭 Neo4j 以启动 Frogrom 以击败其一直以来的瑞典竞争对手 Krisprolls。

所以,更严肃地说,如果你一段时间后不需要历史数据,你可以将它发送到历史存储系统中,比如 ES 动态索引之类的。 Neo4j 遍历关系的速度很快,通常需要遍历很长的历史数据是不常见的。