Извините за опоздание :), но недавно я столкнулся с той же проблемой, и я смоделировал ее с помощью хэшей. Я согласен с Томом Кларксоном в том, что (почти) все должно быть загружено в локальную память, и я добавляю, говоря, что эффективным способом с точки зрения пространства является использование хешей и хранение графической информации следующим образом:
Graph = { node1 : { nodeX : edge_weight, nodeY : edge_weight, other_info: bla..},
node2 : { nodeZ : edge_weight, nodeE : edge_weight, other_info: bla..},
bla bla...
}
Если вам нужно больше места и эффективности, сожмите каждое значение (которое может быть строкой JSON ...) и распакуйте / импортируйте / десериализуйте в своем клиентском коде.