Skip to content

Commit 1a477a3

Browse files
Revamp of the LOAD CSV tutorial #470 (#479)
* Revamp of the LOAD CSV tutorial (#470) * Revamp of the LOAD CSV tutorial * Replacing links to neo4j admin commands to tutorial * Update index.adoc * Apply suggestions from code review Co-authored-by: Jessica Wright <49636617+AlexicaWright@users.noreply.github.com> * Apply suggestions from code review Co-authored-by: Jessica Wright <49636617+AlexicaWright@users.noreply.github.com> * removing redundant tutorial for neo4j desktop and finalizing pages * remove unused images * reverting changes in apackage-lock * adding more info about modeling * Delete package-lock.json * Removing links to the Neo4j Desktop tutorial, adding link to the import subpage and admonition for GraphAcademy * fixes after review * Apply suggestions from code review Co-authored-by: Jessica Wright <49636617+AlexicaWright@users.noreply.github.com> * fixes after review * Apply suggestions from code review Co-authored-by: Jessica Wright <49636617+AlexicaWright@users.noreply.github.com> * Apply suggestions from code review Co-authored-by: Jessica Wright <49636617+AlexicaWright@users.noreply.github.com> * updates after review * adding neo4j desktop to methods comparison --------- Co-authored-by: Jessica Wright <49636617+AlexicaWright@users.noreply.github.com> * fixing broken links and removing unused image --------- Co-authored-by: Jessica Wright <49636617+AlexicaWright@users.noreply.github.com>
1 parent b3e6de8 commit 1a477a3

File tree

8 files changed

+574
-1149
lines changed

8 files changed

+574
-1149
lines changed

modules/ROOT/content-nav.adoc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,8 @@
3030
** xref:data-modeling/data-modeling-tools.adoc[]
3131
3232
* xref:data-import/index.adoc[Import data into Neo4j]
33-
** xref:data-import/csv-import.adoc[]
33+
** xref:data-import/csv-files.adoc[]
34+
** xref:data-import/csv-import.adoc[Using `LOAD CSV`]
3435
** xref:data-import/json-rest-api-import.adoc[]
3536
** xref:data-import/relational-to-graph-import.adoc[]
3637
@@ -60,6 +61,5 @@
6061
* xref:appendix/tutorials/tutorials-overview.adoc[Tutorials]
6162
** xref:appendix/tutorials/guide-cypher-basics.adoc[Get started with Cypher]
6263
** xref:appendix/tutorials/guide-build-a-recommendation-engine.adoc[Cypher recommendation engine]
63-
** xref:appendix/tutorials/guide-import-desktop-csv.adoc[Import CSV data with Neo4j Desktop]
6464
** xref:appendix/tutorials/guide-import-relational-and-etl.adoc[Import data from a relational database into Neo4j]
6565
* xref:appendix/getting-started-resources.adoc[Resources]

modules/ROOT/images/peoplecsv.svg

Lines changed: 29 additions & 0 deletions
Loading

modules/ROOT/pages/appendix/graphdb-concepts/graphdb-vs-rdbms.adoc

Lines changed: 12 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,32 @@
11

22
[[graphdb-vs-rdbms]]
33
= Transition from relational to graph database
4-
:description: This chapter explores the concepts of graph databases from a relational developer's point of view.
4+
:description: This page explores the concepts of graph databases from a relational developer's point of view.
55

6-
== Introduction
7-
The article aims to explain the conceptual differences between relational and graph database structures and data models.
6+
This page explores the conceptual differences between relational and graph database structures and data models.
87
It also gives a high-level overview of how working with each database type is similar or different - from the relational and graph query languages to interacting with the database from applications.
98

10-
119
[#relational-vs-graph]
1210
== Relational database overview
1311

14-
Relational databases have been the work horse of software applications since the 80's, and continue as such to this day.
15-
They store highly-structured data in tables with predetermined columns of specific types and many rows of those defined types of information.
12+
Relational databases store highly-structured data in tables with predetermined columns of specific types and rows of those defined types of information.
1613
Due to the rigidity of their organization, relational databases require developers and applications to strictly structure the data used in their applications.
1714

1815
In relational databases, references to other rows and tables are indicated by referring to primary key attributes via foreign key columns.
1916
Joins are computed at query time by matching primary and foreign keys of all rows in the connected tables.
20-
These operations are compute-heavy and memory-intensive and have an exponential cost.
21-
22-
When many-to-many relationships occur in the model, you must introduce a _JOIN_ table (or associative entity table) that holds foreign keys of both the participating tables, further increasing join operation costs.
23-
The image below shows this concept of connecting a Person (from Person table) to a Department (in Department table) by creating a Person-Department join table that contains the ID of the person in one column and the ID of the associated department in the next column.
17+
These operations are compute-heavy and memory-intensive, and have an exponential cost.
2418

25-
As you can probably see, this makes understanding the connections very cumbersome because you must know the person ID and department ID values (performing additional lookups to find them) in order to know which person connects to which departments.
26-
Those types of costly join operations are often addressed by denormalizing the data to reduce the number of joins necessary, therefore breaking the data integrity of a relational database.
19+
When many-to-many relationships occur in the model, you must introduce a _JOIN_ table (or associative entity table) that holds foreign keys of both the participating tables, further increasing join operation costs, as shown in the diagram:
2720

2821
.Relational model
29-
image::relational_model.svg[role="popup-link",width=600]
22+
image::relational_model.svg[Depiction of a relational database with connecting points in each table,role=popup,width=600]
23+
24+
The diagram shows the concept of connecting a `Person` (from the `Person` table) to a `Department` (in `Department` table) by creating a `Person-Department` join table that contains the ID of the person in one column and the ID of the associated department in the next column.
25+
26+
This structure makes understanding the connections cumbersome, because you must know the person ID and department ID values (performing additional lookups to find them) in order to know which person connects to which departments.
27+
These types of costly join operations are often addressed by denormalizing the data to reduce the number of joins necessary, therefore breaking the data integrity of a relational database.
3028

31-
Although not every use case is a good fit for this stringent data model, the lack of viable alternatives and the wide support for relational databases made it difficult for alternative models to break into the mainstream.
32-
However, the NoSQL era arrived in the market, filling some needs for users and businesses, but still missing the importance of the connections between data.
33-
This is how graph databases were born.
34-
They were designed to provide the greatest advantage in the connected world we live in today.
29+
Graph databases cater for use cases that weren't a good fit for relational data models and offer new possibilities to connect data.
3530

3631
[#relational-to-graph]
3732
== Translating relational knowledge to graphs

0 commit comments

Comments
 (0)