A telephone number registry comprising: a server; and an associated data store storing resolution data associated with telephone number strings, the resolution data being held in a tree data structure (240, 300) and a data index map, wherein the tree data structure (240, 300) comprises top level nodes, parent nodes (311, 322, 331, 342, 355), child nodes (322, 331, 342, 355, 3116) and leaf nodes, the top level nodes including at least one of said parent nodes and each parent node (311, 322, 331, 342, 355) of the tree data structure (240, 300) having ten child nodes (322, 331, 342, 355, 3116), the tree data structure (240, 300) storing an index associated with the leaf node associated with each telephone number string and an index associated with a prefix or with each of a plurality of prefixes of telephone number strings, the tree data structure (240, 300) being stored in one or more of an internal node memory-mapped file and one or more of a leaf node memory-mapped file; the or each internal node memory-mapped file storing row structures (310, 320, 330, 340, 350, 360, 370, 380, 390, 3100, 3110) comprising i) top level nodes and an associated data block, and ii) child nodes (322, 331, 342, 355, 3116) and a data block (310d, 320d, 330d, 340d, 350d, 360d, 370d, 380d, 390d, 3100d, 3110d) for holding any index associated with the parent node (311, 322, 331, 342, 355) of the child nodes (322, 331, 342, 355, 3116); and the or each leaf node memory-mapped file storing data blocks, each data block holding the index of the associated telephone number string; and the data index map storing resolution data referenced by the indices. a server; and an associated data store storing resolution data associated with telephone number strings, the resolution data being held in a tree data structure (240, 300) and a data index map, wherein the tree data structure (240, 300) comprises top level nodes, parent nodes (311, 322, 331, 342, 355), child nodes (322, 331, 342, 355, 3116) and leaf nodes, the top level nodes including at least one of said parent nodes and each parent node (311, 322, 331, 342, 355) of the tree data structure (240, 300) having ten child nodes (322, 331, 342, 355, 3116), the tree data structure (240, 300) storing an index associated with the leaf node associated with each telephone number string and an index associated with a prefix or with each of a plurality of prefixes of telephone number strings, the tree data structure (240, 300) being stored in one or more of an internal node memory-mapped file and one or more of a leaf node memory-mapped file; the or each internal node memory-mapped file storing row structures (310, 320, 330, 340, 350, 360, 370, 380, 390, 3100, 3110) comprising i) top level nodes and an associated data block, and ii) child nodes (322, 331, 342, 355, 3116) and a data block (310d, 320d, 330d, 340d, 350d, 360d, 370d, 380d, 390d, 3100d, 3110d) for holding any index associated with the parent node (311, 322, 331, 342, 355) of the child nodes (322, 331, 342, 355, 3116); and the or each leaf node memory-mapped file storing data blocks, each data block holding the index of the associated telephone number string; and the or each internal node memory-mapped file storing row structures (310, 320, 330, 340, 350, 360, 370, 380, 390, 3100, 3110) comprising i) top level nodes and an associated data block, and ii) child nodes (322, 331, 342, 355, 3116) and a data block (310d, 320d, 330d, 340d, 350d, 360d, 370d, 380d, 390d, 3100d, 3110d) for holding any index associated with the parent node (311, 322, 331, 342, 355) of the child nodes (322, 331, 342, 355, 3116); and the or each leaf node memory-mapped file storing data blocks, each data block holding the index of the associated telephone number string; and the data index map storing resolution data referenced by the indices.