1. A method comprising: receiving, from a client device, at a graph database system, a graph analytic program that is written in a graph-specific programming language; in response to receiving the graph analytic program, compiling, at the graph database system, the graph analytic program to generate executable code; prior to or in response to receiving the graph analytic program, loading, from a graph database into volatile memory of the graph database system, graph data; executing the executable code to directly access the graph data, wherein the graph data in volatile memory is in a first format and the corresponding version of graph data in the graph database is in a second format; generating, at the graph database system, results of executing the executable code; sending the results from the graph database system to the client device; wherein the method is performed by one or more computing devices.
5. The method of claim 1 , further comprising: storing, at the graph database system, configuration data that indicates that a first graph is read-only; receiving, at the graph database system, a second graph analytic program that is written in the graph-specific programming language and that targets the first graph; in response to receiving the second graph analytic program, analyzing, at the graph database system, the second graph analytic program; wherein analyzing the second graph analytic program comprises determining whether the second graph analytic program, if processed, would modify the first graph; in response to determining that the second graph analytic program, if processed, would modify the first graph, rejecting the second graph analytic program.