Neo4j是一款用于映射关系型数据的强大工具,但我很好奇在什么情况下它不适合使用。
哪些使用案例下使用Neo4j会是一个坏主意?
Neo4j是一款用于映射关系型数据的强大工具,但我很好奇在什么情况下它不适合使用。
哪些使用案例下使用Neo4j会是一个坏主意?
您可能想要查看这个幻灯片,特别是第18至22页。
您的问题可能涉及很多细节,但让我试着聚焦于重点。图形数据库通过关系进行自然索引。因此,当您需要遍历大量关系时,图形数据库将非常实用。图形本身非常灵活,因此当数据之间的相互连接需要不时更改或者核心对象的数据存储需求发生变化时,它们也会非常实用。图形是一种非常自然的建模某些(但并非所有)数据源的方法,例如点对点网络、道路地图、组织结构等。
图表通常不擅长管理大量的事物列表。例如,如果您要构建带有分析功能的客户交易数据库(其中需要100万个客户、5000万笔交易,并且您整天都在发布交易),则可能不太合适。RDBMS非常擅长处理这种情况,注意到这种用例实际上并没有充分利用关系。请务必阅读我提供的这两个链接,它们有更多讨论。出于维护原因,任何汇总数据源的服务都应该保持其来源独立性。如果我想探索不同数据源之间的关系,可以在应用程序级别使用数据跟踪(例如)用户对其他数据源的偏好来实现。
图形数据库是关于管理关系复杂性的,但在许多情况下,这种复杂性是一种设计选择。把你所有的孩子放在一个浴缸里没问题,直到你掉了肥皂。