In this thesis, we develop a data distribution policy for a distributed NoSQLbased billing system. We define an optimization problem which is call graph partitioning problem. The objective of the problem is to balance communication while enhancing data locality. We prove that the problem is NP-complete and design a greedy algorithm to partition a call graph. Then we apply the call graph partitioning technique to a distributed NoSQL-based billing system. We improve system performance by balancing communication across servers and enhancing data locality.