This document provides an overview and introduction to graph databases. It begins with a brief history of graph theory and then defines what a graph is from a data perspective - consisting of nodes connected by edges. It describes some key characteristics of graph databases, such as being well-suited for connected, semi-structured data and having index-free adjacency. Examples of applications that benefit from a graph database approach are also listed, including social networks, page ranking, and collaborative filtering. The document then focuses on the Neo4j graph database, outlining its capabilities, who uses it, its architecture both at the network and internal storage levels, and provides an example of how collaborative filtering can be implemented using the Cypher query language in Ne