Exemplo n.º 1
0
        //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);
 }