A method for storing a hierarchical data object comprising: for a hierarchical data object comprising field names that are each associated with one or more field values in said hierarchical data object, generating a plurality of hash codes, each hash code of said plurality of hash codes corresponding to a respective field name of said field names; generating a hash-code mapping that maps each hash code of said plurality of hash codes to a respective field-name identifier of a plurality of field-name identifiers, wherein for each hash code of said plurality of hash codes, said hash-code mapping includes at least a portion of said each hash code; generating a field-name mapping that maps each field name of said field names to a respective field-name identifier of said plurality of field-name identifiers; generating a hierarchical tree of nodes, wherein said hierarchical tree of nodes comprises non-leaf nodes (402, 404, 410, 414, 420-426) and leaf nodes (406, 408, 412, 416, 418, 428-438), wherein a particular non-leaf node of said non-leaf nodes (402, 404, 410, 414, 420-426) comprises: a child node mapping that maps said particular non-leaf node to one or more child nodes of said particular non-leaf node; and a field-name-identifier-to-child mapping that maps a respective field-name identifier of said plurality of field-name identifiers to each of said one or more child nodes of said particular non-leaf node; storing, in a record representing said hierarchical data object, for use in resolving a path expression, said hash-code mapping, said field-name mapping, and for said particular non-leaf node of said non-leaf nodes (402, 404, 410, 414, 420-426), the child node mapping and the field-name-identifier-to-child mapping; and wherein said method is performed by one or more computing devices. for a hierarchical data object comprising field names that are each associated with one or more field values in said hierarchical data object, generating a plurality of hash codes, each hash code of said plurality of hash codes corresponding to a respective field name of said field names; generating a hash-code mapping that maps each hash code of said plurality of hash codes to a respective field-name identifier of a plurality of field-name identifiers, wherein for each hash code of said plurality of hash codes, said hash-code mapping includes at least a portion of said each hash code; generating a field-name mapping that maps each field name of said field names to a respective field-name identifier of said plurality of field-name identifiers; generating a hierarchical tree of nodes, wherein said hierarchical tree of nodes comprises non-leaf nodes (402, 404, 410, 414, 420-426) and leaf nodes (406, 408, 412, 416, 418, 428-438), wherein a particular non-leaf node of said non-leaf nodes (402, 404, 410, 414, 420-426) comprises: a child node mapping that maps said particular non-leaf node to one or more child nodes of said particular non-leaf node; and a field-name-identifier-to-child mapping that maps a respective field-name identifier of said plurality of field-name identifiers to each of said one or more child nodes of said particular non-leaf node; a child node mapping that maps said particular non-leaf node to one or more child nodes of said particular non-leaf node; and a field-name-identifier-to-child mapping that maps a respective field-name identifier of said plurality of field-name identifiers to each of said one or more child nodes of said particular non-leaf node; storing, in a record representing said hierarchical data object, for use in resolving a path expression, said hash-code mapping, said field-name mapping, and for said particular non-leaf node of said non-leaf nodes (402, 404, 410, 414, 420-426), the child node mapping and the field-name-identifier-to-child mapping; and wherein said method is performed by one or more computing devices.