Patent ID: 8805784

Claim:
At a computer system including one or more processors and system memory, the computer system included in a federated database system, the federated database system configured to store a plurality of rows of data, the plurality of rows of data distributed across one or more database partitions of the federated database system, each row of data corresponding to a federation key value used to identify the row of data, the federation key value selected from among a set of federation key values for the federated database system, partition criteria defining how the rows of data are distributed across the one or more database partitions based on federation key values, the computer system including a database partition from among the one or more database partitions, the partition criteria defining that the database partition is to store rows of data corresponding to a specified subset of the set of federation key values, a method for splitting the database partition into a plurality of database partitions, the method comprising: an act of receiving a partition splitting directive indicating how to divide the specified subset of federation key values into at least a first portion and a second portion to split the rows of data stored in the database partition; an act of executing a split operation to split the database partition in accordance with the partition splitting directive and while the database partition remains online, including: an act of establishing a first new database partition to store rows of data corresponding to the first portion of the specified subset of federation key values; an act of establishing a second new database partition to store rows of data corresponding to the second portion of the specified subset of federation key values; an act of establishing at least one copy stream from the database partition to each of the first and second new database partitions; and for each of one or more rows of data from the database partition, an act of filtering the row of data to identify one of the first new database partition and the second new database partition as an appropriate destination database partition for the row of data, the filtering based on the federation key value for the row of data being in the first portion or the second portion of the specified subset of federation key values; and an act of copying each of the one or more rows of data from the database partition to the appropriate destination database over the at least one copy stream in accordance with the results of the filtering; an act of establishing at least one update stream from the database partition to each of the first and second new database partitions; an act of receiving an incoming update to a row of data in the database partition prior to completing the split command; and an act of copying the update to the row of data from the database partition to an appropriate destination database partition for the update over the at least one update stream.