官术网_书友最值得收藏!

A graph model – a simple, high-fidelity model of reality

Let's take a quick look at how we can avoid the complexity mentioned previously in the graph world. In the following figure, you will find the graph model and relational model side by side:


The relational model versus the graph model

On the right-hand side of the image, you will see the three tables in the relational model:

  • A customers table with a number of customer records
  • An Accounts table with a number of accounts of these customers
  • A typical join table that links customers to accounts

What is important here is the implication of this construction--every single time we want to find the accounts of a customer, we need to perform the following:

  1. Look up the customer by their key in the customer table.
  2. Join the customer using this key to their accounts.
  3. Look up the customer's accounts in the accounts table using the account
    keys that we found in the previous step.

Compare this with the left-hand side of the figure and you will see that the model is
much simpler. We find the following elements:

  • A node for the customer
  • Three nodes for the accounts
  • Three relationships linking the accounts to the customer

Finding the accounts of the customer is as simple as performing the following:

  • Finding the customer through an index lookup on the key that we specify
    in advance
  • Traversing out from this customer node using the owns relationship to the accounts that we need

In the preceding example, we are performing only a single join operation over two tables. This operation will become exponentially more expensive in a relational database management system as the number of join operations increases and becomes logarithmically more expensive as the datasets involved in the join operation become larger and larger. Calculating the Cartesian product of two sets (which is what relational databases need to do in order to perform the join) becomes more and more computationally complex as the tables grow larger.

We hope to have given you some initial pointers with regard to graph modeling compared to relational modeling, and we will now proceed to discuss some pitfalls and best practices.

主站蜘蛛池模板: 凤阳县| 青河县| 贵南县| 揭东县| 兰溪市| 车险| 唐河县| 巴林左旗| 色达县| 商城县| 大兴区| 大安市| 镇远县| 平泉县| 贵港市| 鄂伦春自治旗| 离岛区| 合肥市| 南岸区| 横山县| 讷河市| 太和县| 海门市| 唐河县| 合肥市| 沭阳县| 新干县| 海淀区| 泾阳县| 东明县| 甘孜县| 龙山县| 鲁山县| 尚义县| 酒泉市| 灵川县| 莱州市| 泰和县| 刚察县| 北票市| 崇文区|