This document discusses graph databases and lessons learned from building an application using Neo4j. It defines what a graph database is, describes how Neo4j works and common usage patterns. It then outlines several key lessons learned, such as using unique relationship types, caching statistics, representing history as event nodes, modeling objects as nodes not relationships, and connecting data through relationships rather than properties.