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

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.

主站蜘蛛池模板: 闽清县| 安顺市| 咸阳市| 浙江省| 平乡县| 大丰市| 霍邱县| 三原县| 上栗县| 淳安县| 汝阳县| 忻城县| 安仁县| 拉孜县| 河曲县| 大石桥市| 都江堰市| 泊头市| 华坪县| 鄂尔多斯市| 太和县| 无棣县| 隆安县| 望谟县| 文水县| 邳州市| 葫芦岛市| 谢通门县| 秦安县| 葫芦岛市| 梅河口市| 洞口县| 德清县| 屏边| 长丰县| 当雄县| 玉龙| 舟山市| 错那县| 仪陇县| 海丰县|