A graph database stores data as nodes and edges where nodes represent entities and edges represent relationships between those entities. Some popular graph databases include Neo4j, OrientDB, and ArangoDB. A graph has three main components: nodes which represent objects or instances, relationships which establish connections between nodes, and properties which are data attached to nodes. Graph databases are useful for applications such as fraud detection, digital asset management, network management, context-aware services, and real-time recommendations. They allow for complex queries of interconnected data.