In order to keep data consistent, a good database needs mechanisms and structures that guarantee the integrity of all stored data. In Neo4j, data integrity is guaranteed both for graph elements (Nodes, Relationships and Properties) and for non-graph data, such as the indexes. Neo4j’s transactional architecture ensures that data is protected and provides for fast recovery from an unexpected failure, without the need to rebuild internal indexes or other costly operations.