Computer Implemented Method for Dynamic Sharding
The present disclosure relates to systems and methods for dynamic sharding of a database comprising data identifiable by keys comprised within a global ordered range. When handling a request for data of at least one key: providing the request to a predetermined shard store; the predetermined shard store verifying, by means of its local subrange collection, whether the at least one key is present in a local subrange of a shard stored on the predetermined shard store; and when at least one key is not present in a local subrange of a shard stored on the predetermined shard store, returning a message comprising the local subrange collection of the predetermined shard store.
This application is a continuation of U.S. patent application Ser. No. 14/855,629, entitled “Computer Implemented Method for Dynamic Sharding,” filed Sep. 16, 2015, which claims priority under to 35 U.S.C. § 119 to corresponding co-pending EPO Application No. EP14185304.4 entitled, “A Computer Implemented Method for Dynamic Sharding,” filed Sep. 18, 2014, the entire contents of each of which are herein incorporated by reference in their entirety.
FIELD OF THE INVENTIONThe present disclosure generally relates to a computer implemented method for dynamic sharding of a database comprising data identifiable by keys comprised within a global ordered range.
BACKGROUNDA database shard is a horizontal partition of a database. Each such individual partition is referred to as a shard or database shard. Horizontal partitioning is a database design principle whereby different subsets of rows of a database are held in separate horizontal partitions. Each such horizontal partition thus forming a shard. When a database is horizontally partitioned into a plurality of shards this offers potential advantages in terms of scalability as the shards can be located on different shard stores, which are for example database servers, thus allowing the database to grow beyond the performance and storage capacity limits of a single database server.
Various methods of sharding a database may be used to meet such scaling and partitioned database architectures have emerged that automate sharding and load balancing across different shard stores to make sharding easier. These architectures typically use key-based hash partitioning or range partitioning to assign data to shard stores of the distributed computing system storing the database. Examples of key-based hash partitioning are for example described in U.S. 2014/0108421 in which a hash in the form of a modulus or a more sophisticated hash of the key is calculated and each of the shard stores is assigned a specific range of these calculated hashes, of which it is expected that the distribution will be balanced. A first problem with such an approach is that in large scale database systems computation of these hashes in function of the keys requires considerable computing power and time and thus causes an increased latency when handling requests for data of these keys. Additionally, even when using complex hashing mechanisms, it is difficult to guarantee a balanced distribution among the different data stores, especially for a large scale distributed database of which the keys and their associated data cannot be reliably assessed beforehand.
Still a further problem is, as mentioned for example in U.S. 2014/0108421 is a decreased performance of such a distributed database system that a high percentage of distributed operations. During such distributed operations a plurality of shard stores must be accessed in order to perform a request requiring data of a plurality of keys, such as for example a list of order records of a single customer. In order to decrease the share of distributed operations and increase the share of single shard read and write operations U.S. 2014/0108421 proposes the use of a shard control record that correlates monotonic key ranges to a plurality of shard stores on which the records or rows are distributed by means of a subsidiary hashing method. Although, this results in an increased share of single shard read and write operations when handling data correlated to a particular Customer ID as shown in
A further method for sharding a database is known from WO2013/147785 in which the index for a replicated object storage system is sharded by means of the same hash-based sharding methodology as being used for distributing the objects amongst the storage nodes and subsequently these index shards are distributed amongst all storage nodes in the system. Also here it is required to keep all index shards stored on the different storage nodes in sync, which results in an increased latency and puts limits on the scalability of such a system. Additionally the index creates hash-based shards, which result in a high rate of distributed operations in which a plurality of different shard stores need to be accessed when performing a standard operation such as for example listing an alphabetically sorted list of data objects stored in a selected container, such as for example a folder, group, label, etc. This effect is further aggravated as it manifests itself at the level of both requests made to the sharded index and requests related to the data objects themselves.
Still a further method of sharding a database is known from U.S. 2012/0271795 in which a coordination service manages the distribution of requests relating to keys of a total key range to a plurality of nodes each being responsible for a local key subrange which is a part of the total key range. The local key subrange of each of the nodes is selected according to the number of nodes and the number of rows or keys in the database table. Such a system requires all local key subranges on the nodes to be in sync with each other and with the coordination service, which puts limits on the scalability. Additionally if no knowledge is available about the key distribution in the database for the total key range there is a high risk that the chosen local key subranges will result in an unbalanced distribution of data amongst the nodes.
Still a further method of sharding a database is known from U.S. 2012/0254175 in which the database comprises data identifiable by keys comprised within a global ordered range. A plurality of shards, also referred to as chunks, is provided, each shard configured to handle requests for data of at least one key within a local subrange, this local subrange comprising an ordered subrange of said global ordered range, which is for example defined by means of a range between a minimum value of the key and a maximum value of the key. A router process which routes requests to the correct shards accesses information from a configuration server that stores and information about each shard, such as for example the minimum and maximum key value, and the shard store on which this shard is stored. It is clear that at all times this information of the configuration server must be in sync with the actual situation on each of the shard stores, which leads to an increased latency and puts limits on the scalability. In order to improve flexibility in rebalancing the system the maximum size of each of the shards is limited to for example 200 MB and when a shard reaches this maximum size it is split in two new shards each comprising a share of the local subrange of the split shard. In this way a large number of small shards are available on each of the shard stores of the system and rebalancing can performed by simply moving these small shards from their shard store to another less loaded shard store. However, this requires the configuration server to be constantly in sync with these frequent updates resulting from the high number of shards, frequently created new shards and frequent relocation of shards amongst the shard stores, which puts limits on scalability of the system and increases the latency as the router must be updated by the configuration server with the latest configuration information before a request can be executed. Additionally the smaller the size of the shards, the higher the chance that standard request resulting in data relating to order subsets of keys, such as for example an alphabetically ordered list of data objects in a container, files in a folder, customers in a table, etc. will result in the need to access a plurality of shards distributed on a plurality of shard stores thereby reducing the share of single shard operations and resulting in a corresponding performance reduction.
A dynamically scalable redundant distributed storage system is further disclosed in WO2012/068184. It discloses a storage system using replication, for example RAID, or using an error correcting code or ECC, such as for example erasure codes, to achieve a certain level of redundancy. The storage system comprises a file manager controller and a storage manager controller, correlating file identifiers and data blocks to the storage devices storing the file and data blocks. This file manager controller can be implemented using distributed hash tables, which are for example implemented as a hash table list comprising an entries correlating a range of unique file identifier values for which the file manager is responsible, as for example shown in
Thus, there remains a need for an improved computer implemented method for dynamic sharding of a database that overcomes the disadvantages mentioned above and ensures scalability in a robust and simple way, guaranteeing increased performance when handling standard requests resulting in data relating to ordered subsets of keys.
SUMMARYSystems and methods for dynamic sharding of a database comprising data identifiable by keys comprised within a global ordered range are disclosed. For example, according to one embodiment, a computer-implemented method comprises providing a plurality of shard stores, providing a plurality of shards, and providing the plurality of shards on the plurality of shard stores such that a single shard does not extend beyond a single shard store. Each of the plurality of shard stores comprises a shard store identifier and each is limited by a storage capacity limit. Each of the plurality of shards is configured to handle requests for data of at least one key within a local subrange. The local subrange comprises an ordered subrange of a global ordered range. The method further comprises providing on each of the plurality shard stores a local subrange collection. Each local subrange collection comprises the one or more local subranges of the shards stored on its corresponding shard store. When handling a request for data of a key, a request is provided to a predetermined shard store. The predetermined shard store determines, by means of its local subrange collection, whether the key is present in a local subrange of a shard stored on the predetermined shard store. In response to determining the key is not present in a local subrange of a shard stored on the predetermined shard store, a message comprising the local subrange collection of the predetermined shard store is returned.
In this way even in the context of a large scale database a robust operation can be assured, as each shard store only needs to be aware of its own local subrange collection. This avoids any latency that is present in systems that are required to synchronise such information on a system wide level amongst all the shard stores and/or with a central management application. By returning a message comprising this local subrange collection in reply to a request comprising a key which is not present in one of its local subranges, the shard store dynamically provides up to date feedback about the subranges it stores to the requestor only at a time where it is relevant to this requestor. Additionally the use of shards storing keys within an ordered key subrange reduces the complexity for checking by the shard store whether the one or more keys of a request can be handled, as it only needs to check whether the keys are present within its local subranges of its local subrange collection. As these local subranges are ordered subranges this check can be performed by simply checking whether the key is situated in between the boundaries of the subrange, for example if it is greater than the minimum limit and less than then the maximum limit of such an ordered subrange. No hashing or any other conversion of the key needs to be performed in order to perform this check.
By making use of shards configured to handle requests for an ordered subrange of the global ordered range it is possible to handle standard requests for data relating to ordered subsets of keys in an efficient way. It is clear that the number of shards that needs to be consulted to produce such an ordered subset of keys will be minimized, in the most optimal case to a single shard comprising this subset of keys, but in any case at most to the shards related to the subranges spanning this ordered subset of keys. This means that for example in the context of a distributed object storage system, in which an ordered key is provided by means of a unique object identifier, which is for example formed by the name of the object preceded by one or more names of higher level hierarchic groups. In this way when such a standard request for data needed to page through the data objects in the form of an alphabetically sorted list, this request can be handled by accessing the shard of which the key subrange comprises the first key to be displayed and continuing retrieval of an alphabetically ordered subset of this shard comprising for example data for a predetermined number of subsequent keys from this shard.
Other embodiments of one or more of these aspects include corresponding systems, apparatus, computer programs comprising software code adapted to perform the method when executed by a processor, and a computer readable storage media comprising the computer programs configured to perform the actions of the methods encoded on computer storage devices. It should be understood that the language used in the present disclosure has been principally selected for readability and instructional purposes, and not to limit the scope of the subject matter disclosed herein.
However, the method is more particularly advantageous for a metadata store of an erasure encoding based distributed object storage system as for example disclosed in EP2469411 or EP2672387, in which the metadata store allows the controller node of to determine on which storage elements redundantly encoded sub blocks of a particular data object can be retrieved in an efficient way. According to the erasure encoded distributed object storage system described in these documents the clustering module is able to ascertain in an efficient way from the metadata storage, which for example resides centrally in the controller node, on which specific storage elements sub blocks of a specific data object are stored. It also allows the decoding module to efficiently ascertain which encoding policy was used. Furthermore such a metadata storage also allows for flexibility in the determination of encoding policies on a per data object basis, this means that the redundancy policy does not need to be fixed for all data objects stored in the distributed object storage system, but can be set individually for each specific data object. It is clear that according to still further embodiments of the metadata storage, the metadata stored for a data object could comprise other suitable entries comprising properties of the data object, such as for example version information or the state of the data object. In such systems a controller node can manage a plurality of storage nodes, these storage nodes for example providing 36 TB in storage capacity in a 1 U rack-mount server enclosure comprising a low-power processor and equipped with ten or twelve 3 TB SATA disk drives. The controller nodes are for example equipped with 10 Gb Ethernet network interfaces to allow a high speed connection to the back-end storage nodes. There is typically arranged one controller node for a rack comprising a plurality of storage nodes, for example ten or more storage nodes. The controller nodes of several of these racks can then be combined in a highly available cluster of controller nodes, to provide fully shared access to the storage nodes, and provide access to a distributed metadata storage, for example in high-performance solid-state drives or SSDs with a suitable level of redundancy for example by means of replication across a plurality, for example three, different SSDs thereby allowing for example for a majority voting system, similar as for example known from U.S. 2012/0271795. In this way scalability of a single system across multiple racks to provide storage capacity scalable from hundreds of Terabytes to Zettabyte global object namespace capacity can be realized. It is clear that according to some embodiments the distributed metadata storage could be implemented by means of the controller nodes themselves; or for example in the form of a plurality of scalers available in a shared way to a plurality of these controller nodes. In general such a distributed database, such as for example the distributed metadata storage, will reside on a plurality of shard stores 20, such as for example a plurality of scalers for the controller nodes of the distributed object storage system described above for storing the metadata storage in a distributed way.
As shown, the global ordered range 14 for the keys 12 is schematically represented as an alphabetical range [a,z], as in the embodiment of
As shown in
As further shown in
As shown in
As shown in
As shown in
When shard store 20.2 at step 110 of
As shown in
As further shown in
When shard store 20.2 at step 214 of
In general the process of updating the global subrange collection 52 of the shard router 50 in response to a message 60 comprising a local subrange collection 42 of a predetermined shard store 20, comprises: removal from the global subrange collection 52 of any global subranges 54 correlated to the shard store identifier 22 of this predetermined shard store 20 which are not present in the local subrange collection 42 as local subranges 40 of the message 60; addition to the global subrange collection 52, of the local subranges 40 of the local subrange collection 42 of the message 60, as global subranges 54 correlated to the shard store identifier 22 of this predetermined shard store 20. It is clear that according to particular embodiments such a removal and addition could be combined into an update operation, updating existing global subranges 54, for example when they overlap with received local subranges 40 of the message; or that such a removal and addition could be executed as an operation that does not modify an existing global subrange 54, for example for global subranges 54 of which it is detected that they are identical to received local subranges; or such a removal and addition could be implemented as any other suitable operation updating the global subrange collection 52 efficiently when necessary in respect of the local subrange collection 42 of the message 60.
As shown in
It might optionally be beneficial in this situation, when the key 12 of the request is not present in the local subranges 40 of this predetermined shard store 20, for the shard router 50, in addition to using the local subranges 40 of the local subrange collection 42 of the message 60 to update its global subrange collection 52, to further also update its global subrange collection 52 by correlating the shard store identifier 22 of the further shard store 20 to a global subrange 54 corresponding to the predetermined external subrange 44 of the external subrange collection 46 of the message 60. In this case, with reference to the same example described for
In order to further increase the robustness of the system, especially in a situation wherein a predetermined shard store 20.1 and a further shard store 20.2 are involved in the move operation 80, such as for example described above with reference to
This setup increases robustness as every stage of the move operation where something can go wrong; sending the move shard, receiving the move shard, acknowledging, etc. is covered without leaving the system in an inconsistent state. This means that even failing move operation may not result in data being present in more than one shard of the database as this could lead to duplicate entries in the database for the same key, which in a distributed database context could remain undetected and could lead to for example inconsistent updates to the data of this key. Therefor as soon as the move operation 80 is started the update to the public local subrange collection 42PU of the predetermined shard store 20.1 makes sure that no longer requests of keys in the move subrange are handled by this shard store 20.1. Additionally the update of the local subrange collections 42PU and 42PR of the further shard store 20.2 ensure that the further shard store 20.2 only starts handling such requests when the move shard 72 has been correctly received. Further the only updating the private local subrange collection 42PR of the predetermined shard store 20.1 makes sure that any anomalies that occurred during the move operation 80 are detectable by this shard store 20.1 by means of verification of its local state without the need for any external information. In this way, when the predetermined shard store 20.1 a predetermined time period after performing a move operation 80 detects that its public local subrange collection 42PU differs from its private local subrange collection 42PR, this shard store 20.1 is able to suspect a failure that has occurred during any of the stages of the move operation 80. Preferably the predetermined shard store 20 then resends the move shard 72 to the further shard store 20.2. If the problem would have been situated at the sending or receiving of the move shard 72, for example a failing network connection between both shard stores involved in the move operation or a temporary unavailability of one of the shard stores involved, and this problem is no longer present at the time of resending the move shard 72, the further move shard will then successfully receive the move shard 72, update its local subrange collections and proceed to sending the move acknowledgment message 74.
However, when the problem would have been merely situated at the sending or receiving of this move acknowledgment message 74, which the move shard 72 was already successfully received at the further shard store 20.2, preferably the resending can be handled more efficiently. The further shard store 20.2 will be able to detect this situation when the further shard store 20.2 is offered a move shard 72 by the predetermined shard store 20.1 of which the move subrange 70 is already present in its public local subrange collection 42PU, for example when the move subrange 70 ‘d:20.2:g’ is offered again while its public local subrange collection 42PU has already been modified to
‘20.2PU−>[a: . . . :d:20.2:g: . . . i:20.2:n: . . . :z]’ in result of a previous correct reception of this move shard 72 after which however the move acknowledgement message 74 however failed to reach the predetermined shard store 20.1. In this case the further shard store 20.2 preferably sends a move acknowledgment message 74 to the predetermined shard store 20 without receiving the move shard 72. This could be implemented for example when sending the move shard during a move operation by providing information about the move shard in a leading message, in a header, in a suitable identifier, or any other suitable form, so that the further shard store 20.2 after checking this move shard 72, can interrupt or prevent initiation of the communication process for sending and receiving the move shard 72.
In order to allow for an automated and efficient rebalancing of the database 10 amongst the shard stores 20 in a consistent way while reducing the period and amount of unavailability of the data involved in a rebalancing operation, as shown in
In order to prevent the proliferation of a large number of small size shards 30, for example as the result of the move operations above, during dynamic rebalancing of the distributed database preferably, when it is detected that for a predetermined shard 30, a further shard 30 is available on the same shard store 20 of which the local subrange 40 is contiguous with the local subrange 40 of the predetermined shard 30. Contiguous means, touching or sharing a common boundary, so for example a local subrange which shares a maximum or minimum limit value of its range as a border with a neighbouring range, such as for example shown in
Although the examples given above often refer to a request involving a single key, it is clear that the systems and methods described above are especially beneficial in maximizing the share of single shard lookups for a request involving a plurality of keys. As already explained above such requests are commonly occurring in the context of for example a large scale distributed storage system in which one of the frequent requests made by users is the provision of an ordered list for example for paging through the contents of a suitable container for example listing files previously uploaded to a particular folder of a predetermined user account of a particular cloud storage service. In response to such a standard request the user is presented for example an alphabetically sorted list of filenames in a browser, with links to retrieve a selected file. It is difficult to assess, in advance, in such a large scale distributed storage system, which hashing function should be chosen in order to achieve a balanced distribution of for example the metadata of all content stored, and when choosing an optimized hashing method, this often results the need for querying each individual key when a request for data is issued for an ordered list of these keys, in order to determine the shard in which each key is stored, on top of the fact that these shards of subsequent keys in such an ordered list will often be assigned to different shards. In order to increase performance the embodiments described above ensure that when a request is received for a plurality of ordered keys, the chance that this will result in a request for retrieval of an ordered subset of single shard 30 is increased. Additionally as each of the shards themselves form an ordered subset of the global key range, it is no longer necessary to establish for each individual key, which shard holds its data, as once it is determined for example for the lowest key of the request all subsequent keys in the ordered subset of the request will be present in this same shard until the limit of its local subrange is reached, upon which it only needs to be established which shard is contiguous to continue the retrieval of the data for this ordered subset of keys.
Although in the examples above there is mainly referred to alphabetically sorted ranges of keys defined by a lower limit and an upper limit correlated to sorted subsets of keys, it is clear that any other suitable ordering relation could be chosen, as long as in general it is closely related to the ordering relation of the keys which is required in a large share of the requests for the database.
It is clear that in general the method and system described above can largely be implemented as a computer program comprising software code adapted to perform this method when executed by a processor of suitable computing system, such as for example a suitable server or a general purpose computer.
Although the techniques introduced herein have been illustrated by reference to specific embodiments, it will be apparent to those skilled in the art that the techniques are not limited to the details of the foregoing illustrative embodiments, and that the techniques may be embodied with various changes and modifications without departing from the scope thereof. The embodiments described herein are therefore to be considered in all respects as illustrative and not restrictive, the scope of the invention being indicated by the appended claims rather than by the foregoing description, and all changes which come within the meaning and range of equivalency of the claims are therefore intended to be embraced therein. In other words, it is contemplated to cover any and all modifications, variations or equivalents that fall within the scope of the basic underlying principles and whose essential attributes are claimed in this patent application. It will furthermore be understood by the reader of this patent application that the words “comprising” or “comprise” do not exclude other elements or steps, that the words “a” or “an” do not exclude a plurality, and that a single element, such as a computer system, a processor, or another integrated unit may fulfil the functions of several means recited in the claims. Any reference signs in the claims shall not be construed as limiting the respective claims concerned. The terms “first”, “second”, third”, “a”, “b”, “c”, and the like, when used in the description or in the claims are introduced to distinguish between similar elements or steps and are not necessarily describing a sequential or chronological order. Similarly, the terms “top”, “bottom”, “over”, “under”, and the like are introduced for descriptive purposes and not necessarily to denote relative positions. It is to be understood that the terms so used are interchangeable under appropriate circumstances and embodiments of the techniques disclosed herein are capable of operating according to the present disclosure in other sequences, or in orientations different from the one(s) described or illustrated above.
Claims
1. A computer implemented method comprising:
- handling a request for data identifiable by at least one key by: receiving the request at a shard router; determining, by the shard router, that a shard store identifier associated with the request corresponds to a predetermined shard store; providing, by the shard router, the request to the predetermined shard store; determining, by the predetermined shard store using a local subrange collection including local subranges of a plurality of shards stored on the predetermined shard store, whether the at least one key is present in a local subrange of a shard among the plurality of shards stored on the predetermined shard store, wherein each of the plurality of shards is configured to handle requests for data of at least one key within its corresponding local subrange; and in response to determining that the at least one key is not present in the local subrange collection, returning a message comprising the local subrange collection of the predetermined shard store.
2. The computer implemented method of claim 1, further comprising:
- in response to receiving the message from the predetermined shard store, providing the request to a second shard store.
3. The computer implemented method of claim 1, further comprising:
- determining whether the at least one key of the request is present within an external subrange of an external subrange collection included in the local subrange collection; and
- transmitting the request to a second shard store corresponding to the external subrange.
4. The computer implemented method of claim 1, further comprising:
- updating a global subrange collection based on the message comprising the local subrange collection of the predetermined shard store.
5. The computer implemented method of claim 1, wherein the local subrange collection comprises a public local subrange collection and a private local subrange collection.
6. The computer implemented method of claim 5, further comprising:
- in response to a move operation, updating, by the predetermined shard store, its corresponding public local subrange collection; and
- in response to receiving an acknowledgement of the move operation, updating, by the predetermined shard store, its corresponding private local subrange collection.
7. The computer implemented method of claim 1, further comprising:
- in response to detecting that the local subrange of the shard and a second local subrange of a second shard on the predetermined shard store have a contiguous local subrange, merging the shard and the second shard to form a merged shard and updating the local subrange collection by merging the local subrange of the shard and the local subrange of the second shard.
8. A system comprising:
- a shard router, the shard router configured to: receive a request for data identifiable by at least one key; determine that a shard store identifier associated with the request corresponds to a predetermined shard store; and route the request to the predetermined shard store; and
- a plurality of shard stores, including the predetermined shard store, the predetermined shard store configured to: determine, using a local subrange collection including local subranges of a plurality of shards stored on the predetermined shard store, whether the at least one key is present in a local subrange of a shard among the plurality of shards stored on the predetermined shard store, wherein each of the plurality of shards is configured to handle requests for data of keys within its corresponding local subrange; and in response to determining that the at least one key is not present in the local subrange collection, return a message comprising the local subrange collection of the predetermined shard store to the shard router.
9. The system of claim 8, wherein the shard router is further configured to provide the request to a second shard store in response to receiving the message from the predetermined shard store.
10. The system of claim 8, wherein the predetermined shard store is further configured to:
- determine whether the at least one key of the request is present within an external subrange of an external subrange collection included in the local subrange collection; and
- include a shard store identifier corresponding to a second shard store associated with the external subrange in the message.
11. The system of claim 8, wherein the shard router is further configured to:
- update a global subrange collection based on the message comprising the local subrange collection of the predetermined shard store.
12. The system of claim 8, wherein the local subrange collection comprises a public local subrange collection and a private local subrange collection.
13. The system of claim 12, wherein the predetermined shard store is further configured to:
- update, in response to a move operation, its corresponding public local subrange collection; and
- update, in response to receiving an acknowledgement of the move operation, its corresponding private local subrange collection.
14. The system of claim 8, wherein the predetermined shard store is further configured to:
- merge the shard and a second shard to form a merged shard, in response to detecting that the local subrange of the shard and a second local subrange of a second shard on the predetermined shard store have a contiguous local subrange; and
- update the local subrange collection by merging the local subrange of the shard and the local subrange of the second shard.
15. A system comprising:
- means for receiving a request for data identifiable by at least one key;
- means for determining that a shard store identifier associated with the request corresponds to a predetermined shard store;
- means for providing the request to the predetermined shard store;
- means for determining, using a local subrange collection including local subranges of a plurality of shards stored on the predetermined shard store, whether the at least one key is present in a local subrange of a shard among the plurality of shards stored on the predetermined shard store, wherein each of the plurality of shards is configured to handle requests for data of at least one key within its corresponding local subrange; and
- means for returning a message comprising the local subrange collection of the predetermined shard store in response to determining that the at least one key is not present in the local subrange collection.
16. The system of claim 15, further comprising:
- means for providing the request to a second shard store in response to receiving the message from the predetermined shard store.
17. The system of claim 15, further comprising:
- means for determining whether the at least one key of the request is present within an external subrange of an external subrange collection included in the local subrange collection; and
- means for transmitting the request to a second shard store corresponding to the external subrange.
18. The system of claim 15, further comprising:
- means for updating a global subrange collection based on the message comprising the local subrange collection of the predetermined shard store.
19. The system of claim 15, wherein the local subrange collection comprises a public local subrange collection and a private local subrange collection.
20. The system of claim 15, further comprising:
- means for merging the shard and a second shard to form a merged shard in response to detecting that the local subrange of the shard and a second local subrange of the second shard on the predetermined shard store have a contiguous local subrange; and
- means for updating the local subrange collection by merging the local subrange of the shard and the local subrange of the second shard.
Type: Application
Filed: May 7, 2018
Publication Date: Sep 6, 2018
Patent Grant number: 10776396
Inventors: Carl Rene D'Halluin (Melle), Frederik Jacqueline Luc De Schrijver (Wenduine), Jochen Maes (Zele), Romain Raymond Agnes Slootmaekers (Heverlee), Nicolas Maria Sylvain Trangez (Destelbergen), Jan Doms (Ledeberg)
Application Number: 15/973,491