Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
05/03/13 13:47:27 (11 years ago)
Author:
pfleck
Message:

#2030
Added SelfHost-Project
Renamed HiveDtoDao back to HiveDao and renamed the optimized HiveDao into OptimizedDao instead.
Optimized AddTask by using compiled queries.

File:
1 copied

Legend:

Unmodified
Added
Removed
  • branches/HivePerformance/sources/HeuristicLab.Services.Hive/3.3/OptimizedHiveDao.cs

    r9399 r9434  
    2727
    2828namespace HeuristicLab.Services.Hive.DataAccess {
    29   public class HiveDao : IHiveDao {
    30     private HiveDataContext Db { get { return HiveOperationContext.Current.DataContext; } }
     29  public class OptimizedHiveDao : IOptimizedHiveDao {
     30    private static HiveDataContext Db { get { return HiveOperationContext.Current.DataContext; } }
    3131
    3232    #region Task Methods
     
    3535    }
    3636
    37     private static Func<HiveDataContext, Guid, IQueryable<Task>> GetTaskByIdQuery = CompiledQuery.Compile((HiveDataContext db, Guid taskId) =>
     37    private static readonly Func<HiveDataContext, Guid, IQueryable<Task>> GetTaskByIdQuery = CompiledQuery.Compile((HiveDataContext db, Guid taskId) =>
    3838      from t in db.Tasks
    3939      where t.TaskId == taskId
     
    5151    }
    5252
    53     private static Func<HiveDataContext, Guid, IQueryable<Tuple<Task, Guid?>>> GetTaskByIdAndLastStateLogSlaveIdQuery = CompiledQuery.Compile((HiveDataContext db, Guid taskId) =>
     53    private static readonly Func<HiveDataContext, Guid, IQueryable<Tuple<Task, Guid?>>> GetTaskByIdAndLastStateLogSlaveIdQuery = CompiledQuery.Compile((HiveDataContext db, Guid taskId) =>
    5454       from t in db.Tasks
    5555       join sl in db.StateLogs on t.TaskId equals sl.TaskId
     
    8989    }
    9090
    91     private static Func<HiveDataContext, Guid, IQueryable<DT.LightweightTask>> GetLightweightTasksQuery = CompiledQuery.Compile((HiveDataContext db, Guid jobId) =>
     91    private static readonly Func<HiveDataContext, Guid, IQueryable<DT.LightweightTask>> GetLightweightTasksQuery = CompiledQuery.Compile((HiveDataContext db, Guid jobId) =>
    9292        from task in db.Tasks
    9393        where task.JobId == jobId
     
    103103    );
    104104
    105     static Func<StateLog, DT.StateLog> ConvertStateLog = sl => DT.Convert.ToDto(sl);
    106     static Func<TaskState, DT.TaskState> ConvertTaskState = ts => DT.Convert.ToDto(ts);
    107     static Func<Command?, DT.Command?> ConvertCommand = c => DT.Convert.ToDto(c);
     105    private static readonly Func<StateLog, DT.StateLog> ConvertStateLog = sl => DT.Convert.ToDto(sl);
     106    private static readonly Func<TaskState, DT.TaskState> ConvertTaskState = ts => DT.Convert.ToDto(ts);
     107    private static readonly Func<Command?, DT.Command?> ConvertCommand = c => DT.Convert.ToDto(c);
    108108
    109109    public void UpdateTask(Task task) {
     
    127127
    128128      return task;
     129    }
     130
     131    public Guid AddTask(Task task) {
     132      Db.Tasks.InsertOnSubmit(task);
     133      Db.SubmitChanges();
     134      return task.TaskId;
     135    }
     136
     137    public void AssignJobToResource(Guid taskId, IEnumerable<Guid> resourceIds) {
     138      Db.AssignedResources.InsertAllOnSubmit(resourceIds.Select(resourceId => new AssignedResource { TaskId = taskId, ResourceId = resourceId }));
     139      Db.SubmitChanges();
    129140    }
    130141
     
    153164    }
    154165
    155     private static Func<HiveDataContext, Guid, IQueryable<TaskData>> GetTaskDataByIdQuery = CompiledQuery.Compile((HiveDataContext db, Guid id) =>
     166    private static readonly Func<HiveDataContext, Guid, IQueryable<TaskData>> GetTaskDataByIdQuery = CompiledQuery.Compile((HiveDataContext db, Guid id) =>
    156167      from t in db.TaskDatas
    157168      where t.TaskId == id
     
    187198    }
    188199
    189     private static Func<HiveDataContext, Guid, IQueryable<Plugin>> GetPluginByIdQuery = CompiledQuery.Compile((HiveDataContext db, Guid pluginId) =>
     200    private static readonly Func<HiveDataContext, Guid, IQueryable<Plugin>> GetPluginByIdQuery = CompiledQuery.Compile((HiveDataContext db, Guid pluginId) =>
    190201      from p in db.Plugins
    191202      where p.PluginId == pluginId
     
    204215    }
    205216
    206     private static Func<HiveDataContext, Guid, IQueryable<Slave>> GetSlaveByIdQuery = CompiledQuery.Compile((HiveDataContext db, Guid slaveId) =>
     217    private static readonly Func<HiveDataContext, Guid, IQueryable<Slave>> GetSlaveByIdQuery = CompiledQuery.Compile((HiveDataContext db, Guid slaveId) =>
    207218      from s in db.Resources.OfType<Slave>()
    208219      where s.ResourceId == slaveId
     
    243254
    244255    #region Resource Methods
     256    public IEnumerable<Guid> GetAssignedResourceIds(Guid taskId) {
     257      return GetAssignedResourceIdsQuery(Db, taskId);
     258    }
     259
     260    private static readonly Func<HiveDataContext, Guid, IQueryable<Guid>> GetAssignedResourceIdsQuery = CompiledQuery.Compile((HiveDataContext db, Guid taskId) =>
     261      from ar in db.AssignedResources
     262      where ar.TaskId == taskId
     263      select ar.ResourceId
     264    );
    245265    #endregion
    246266
Note: See TracChangeset for help on using the changeset viewer.