You can get pretty far with sparse graphs, which are just arrays, in combination with memory mapping.