//purpose - repartition data in nodes based on hash function h = id mod n public void HashPartition <T>(IRecordRepository <T> repository) { List <T> recordList = new List <T>(); //retrieve all records from databases and add recordList. foreach (string database_id in DatabaseConnectionIDs) { recordList.AddRange(repository.GetRecords <T>(database_id)); repository.ClearTable <T>(database_id); } //number of nodes/databases int n = DatabaseConnectionIDs.Length; //go through each tool and add to appropirate partition/database/node foreach (T record in recordList) { int PartitionKey = GetPartitionKey <T>(record); repository.SaveRecord <T>(record, this.DatabaseConnectionIDs[PartitionKey % n]); } }
private void RemoveSampleRecords(String database_id) { repository.ClearTable <Tool>(database_id); repository2.ClearTable <LineItem>(database_id); }