📜  图数据库简介

📅  最后修改于: 2021-09-08 16:30:27             🧑  作者: Mango

什么是图数据库?
图数据库旨在将数据之间的关系视为与数据本身同等重要。

为什么图数据库很重要?
因为图擅长处理关系,所以一些数据库以图的形式存储数据。

例子
我们有一个社交网络,其中五个朋友都联系在一起。这些朋友是 Anay、Bhagya、Chaitanya、Dilip 和 Erica。将存储他们的个人信息的图形数据库可能如下所示:

以上示例但使用传统数据库方法
我们现在将使用关系数据库来存储信息。我们很可能使用两张表——一张用于存储每个用户的信息,另一张用于存储用户之间的关系。下面是用户表的样子:

id first name last name email phone
1 Anay Agarwal anay@example.net 555-111-5555
2 Bhagya Kumar bhagya@example.net 555-222-5555
3 Chaitanya Nayak chaitanya@example.net 555-333-5555
4 Dilip Jain dilip@example.net 555-444-5555
5 Erica Emmanuel erica@example.net 555-555-5555

现在,我们还需要另一个表来捕获用户/朋友之间的友谊/关系。我们的友谊表看起来像这样:

user_id friend_id
1 2
1 3
1 4
1 5
2 1
2 3
2 4
2 5
3 1
3 2
3 4
3 5
4 1
4 2
4 3
4 5
5 1
5 2
5 3
5 4

我们将避免深入研究数据库(主键和外键)理论。而只是假设友谊表使用两个朋友的 id。

假设我们这里的社交网络有一个功能,允许每个用户看到他/她朋友的个人信息。因此,如果 Chaitanya 要求提供信息,则意味着她需要有关 Anay、Bhagya、Dilip 和 Erica 的信息。我们将以传统方式(关系数据库)解决这个问题。我们必须首先在 User 表中识别 Chaitanya 的 id:

id first name last name email phone
3 Chaitanya Nayak chaitanya@example.net 555-333-5555

现在,我们将在friends 表中查找user_id 为3 的所有元组。结果关系将是这样的:

user_id friend_id
3 1
3 2
3 4
3 5

现在,让我们分析这种关系数据库方法所花费的时间。这将是大约 log(N) 次,其中 N 表示友谊表中的元组数或关系数。在这里,数据库按照 id 的顺序维护行。因此,通常对于“M”个查询,我们的时间复杂度为M*log(N)

只有我们使用图数据库方法,总时间复杂度才会是 O(N)。因为,一旦我们在数据库中找到了 Cindy,我们只需一步即可找到她的朋友。以下是我们的查询将如何执行:

缺点:
请注意,图形数据库并不总是应用程序的最佳解决方案。在决定架构之前,我们需要评估应用程序的需求。