Patent Document ID: 9367585
Application ID: 14342097

Base Claim:
1. A data storage and query method which supports an agile development and horizontal scaling, comprising steps of: transforming data into a 2-tupel (Key, MiniTable), and identifying any MiniTable with a unique Key, wherein, the MiniTable comprises a plurality of data columns; a structure of each data column is limited via a pre-defined mode; and the data columns are sorted according to a primary key defined by the mode; wherein the pre-defined mode is a Key-MiniTable mode having three basic primitives and three physical entities, wherein the three physical entities comprise: a client for initiating a request to a Key server with the three basic primitives and receiving a result of the request; the Key server for receiving the request initiated by the client, searching an IP address and a port number of each MiniTable server where each MiniTable corresponding to the Key is located, and accordingly transferring the request to the corresponding MiniTable server; and the MiniTable servers for receiving the request transferred by the Key server, parsing analogous SQL statements of the request, forming an execution plan, reading and writing the data in a distributed storage system, completing the request and returning a result of the request to the client.

---

Claim 9:
9. The data storage and query method, as recited in claim 1 , wherein the Key server has three kernel data structures of: (1) a B+ tree, for storing corresponding relations between the Keys and address codes; (2) an address translating table, for storing corresponding relations between the address codes and IP addresses, and between the address codes and the port numbers; and (3) a MiniTable server monitoring table, for storing for storing loading conditions of the MiniTable servers corresponding to each address code; wherein when the Key server receives a primitive request, the Key server checks whether the primitive request is a valid Query primitive; if yes, the Key server queries an address code corresponding to a Key in the B+ tree; if no existing Key, the Key server returns information of no existing Key; if the Key exists, the Key server queries an IP address and a port number corresponding to the address code in the address translating table; if no existing IP address and no existing port number, the Key server returns to error; if the IP address and the port number exist, the Key server transfers the request to the MiniTable server corresponding to the IP address and the port number; if the request is not a valid Query primitive, the Key server checks whether the request is a valid Create primitive; if yes, the Key server queries whether a designated Key exists in the B+ tree; if the designated Key exists, the Key server returns information that the designated Key has existed; if no existing designated Key, the Key server allocates an address code according to a dispatch algorithm and the MiniTable server monitoring table, updates the MiniTable server monitoring table, queries an IP address and a port number corresponding to the address code and transfers the request to the corresponding MiniTable server; if the request is not a valid Create primitive, the Key server checks whether the request is a valid Delete primitive; if yes, the Key server queries whether a designated Key exists in the B+ tree; If no existing designated Key, the Key server returns information of no existing designated Key; if the designated Key exists, the Key server queries an IP address and a port number corresponding to an address code in the address translating table, deletes the corresponding Key in the B+ tree, updates the MiniTable server monitoring table, queries the IP address and the port number and transfers the request to the corresponding MiniTable server.