public Did CreateDatabase(IDatabaseParameters databaseParameters) { if (_metadata.Databases.Any(d => d.Value.Name.Equals(databaseParameters.Name))) { throw new DatabaseAlreadyExistException(String.Format("Baza danych o nazwie '{0}' już istnieje", databaseParameters.Name)); } var newDid = Did.CreateNew(); if (databaseParameters.Schema == null) { databaseParameters.Schema = new DatabaseSchema() { DatabaseId = newDid, Classes = new ConcurrentDictionary <ClassId, Class>(), Properties = new ConcurrentDictionary <PropertyId, Property>(), Methods = new ConcurrentDictionary <ClassId, List <IMethod> >() } } ; newDid.Duid = _metadata.Databases.Count == 0 ? 0 : _metadata.Databases.Max(d => d.Key.Duid) + 1; databaseParameters.DatabaseId = newDid; if (!_metadata.Databases.TryAdd(newDid, databaseParameters)) { throw new ApplicationException("Database creation internal storage error..."); } _engine.OpenDatabase(databaseParameters); StorageMetadata.SaveMetadata(_metadata, _logger); return(newDid); }
public void OpenDatabase(IDatabaseParameters parameters) { if (_storages.ContainsKey(parameters.DatabaseId)) { return; } if (!Directory.Exists(parameters.BaseDirectory)) { Directory.CreateDirectory(parameters.BaseDirectory); } var options = new BPlusTree <Oid, byte[]> .Options(new KeySerializer(), new ValueSerializer()); options.FileName = parameters.DataFileFullPath; options.CreateFile = CreatePolicy.IfNeeded; if (!File.Exists(parameters.DataFileFullPath)) { options.FileGrowthRate = parameters.IncreaseFactor; options.CachePolicy = CachePolicy.All; options.ConcurrentWriters = 2; options.FileBlockSize = 4096; options.FileOpenOptions = FileOptions.RandomAccess; options.MaximumValueNodes = 64; options.MinimumValueNodes = 32; options.MaximumChildNodes = 32; options.MinimumChildNodes = 16; } _storages.Add(parameters.DatabaseId, new BPlusTree <Oid, byte[]>(options)); }
private int GetObjectClassNumber(IStorage storage, IDatabaseParameters databaseParameters, Class classStats) { var classParameter = databaseParameters.Schema.ClassProperties(classStats); var objs = storage.GetAll(databaseParameters.DatabaseId); return(objs.Where(s => s.Properties.All(p => classParameter.Any(cp => cp.PropertyId.Id == p.Key.PropertyId.Id))).Count()); }
public SegmentMap(IDatabaseParameters databaseParameters) { _freeSegments = new List <int>(); _databaseParameters = databaseParameters; _segmentSize = databaseParameters.PageSize; _recordIdMap = new Dictionary <int, List <int> >(); }
private void RecalculateSchemaStats(IStorage storage, IDatabaseParameters databaseParameters) { var schemasStat = new SchemaStats(); databaseParameters.Schema.Classes.ToList() .ForEach(p => schemasStat.ClassStats.objectNumbers.TryAdd(p.Key, GetObjectClassNumber(storage, databaseParameters, p.Value))); schemasStat.DatabaseId = databaseParameters.DatabaseId; UpdateStatisticSchemaData(databaseParameters.DatabaseId, schemasStat); }
private void Store(IDatabaseParameters parameters) { foreach (var parameter in parameters.Query.Parameters) { if (parameter.Flags.HasFlag(DatabaseQueryParameterFlags.EntityWrite) && parameter.Column != null && parameter.Column.Setter != null) { parameter.Column.Setter(this.Item, parameters[parameter.Column]); } } }
private void Fetch(IDatabaseParameters parameters) { foreach (var parameter in parameters.Query.Parameters) { if (parameter.Flags.HasFlag(DatabaseQueryParameterFlags.EntityRead) && parameter.Column != null && parameter.Column.Getter != null) { parameters[parameter.Column] = parameter.Column.Getter(this.Item); } } }
public void DeleteDataFiles(IDatabaseParameters parameters) { OpenDatabase(parameters); _storages[parameters.DatabaseId] = null; _storages.Remove(parameters.DatabaseId); if (File.Exists(parameters.DataFileFullPath)) { File.Delete(parameters.DataFileFullPath); } }
public CentralServerExecuter(IDatabaseParameters database, Action <IQueryElement> doOnDataServers, SystemInfo systemInfo, IStorage storage, ISettingsManager settingsManager, Action <string, MessageLevel> log) : base(database, storage, log) { _database = database; _doOnDataServers = doOnDataServers; _systemInfo = systemInfo; _storage = storage; _settingsManager = settingsManager; _log = log; }
public void OpenDatabase(IDatabaseParameters parameters) { if (_storages.ContainsKey(parameters.DatabaseId)) { return; } if (!Directory.Exists(parameters.BaseDirectory)) { Directory.CreateDirectory(parameters.BaseDirectory); } _storages.Add(parameters.DatabaseId, new EsentStorageRaw(parameters)); }
public DeleteDatabaseStatus RemoveDatabase(IDatabaseRemoveParameters databaseRemoveParameters) { if (!_metadata.Databases.ContainsKey(databaseRemoveParameters.DatabaseToRemove)) { throw new DatabaseNotFoundException(String.Format("Nie odnaleziono bazy danych o id: '{0}'", databaseRemoveParameters.DatabaseToRemove)); } IDatabaseParameters parameters = null; _metadata.Databases.TryRemove(databaseRemoveParameters.DatabaseToRemove, out parameters); StorageMetadata.SaveMetadata(_metadata, _logger); return(new DeleteDatabaseStatus()); }
public static SegmentMap Read(IDatabaseParameters databaseParameters) { var segmentFileName = Path.Combine(databaseParameters.BaseDirectory, String.Format("{0}.seg", databaseParameters.Name)); if (!File.Exists(segmentFileName)) { return(new SegmentMap(databaseParameters)); } using (var stream = new FileStream(segmentFileName, FileMode.Open)) { var formatter = new BinaryFormatter(); return(formatter.Deserialize(stream) as SegmentMap); } }
public Did RenameDatabase(IDatabaseParameters databaseParameters, string databaseNweName, ISettingsManager settingsManager) { DatabaseParameters renamedParameters = new DatabaseParameters(databaseNweName, settingsManager); renamedParameters.DatabaseId = databaseParameters.DatabaseId; renamedParameters.Schema = databaseParameters.Schema; renamedParameters.PageSize = databaseParameters.PageSize; renamedParameters.OptimizeSize = databaseParameters.OptimizeSize; renamedParameters.StartupSize = databaseParameters.StartupSize; renamedParameters.IncreaseFactor = databaseParameters.IncreaseFactor; _metadata.Databases[databaseParameters.DatabaseId] = renamedParameters; StorageMetadata.SaveMetadata(_metadata, _logger); //_engine.Dispose(); //File.Move(databaseParameters.DataFileFullPath, renamedParameters.DataFileFullPath); _engine.OpenDatabase(renamedParameters); return(renamedParameters.DatabaseId); }
public EsentStorageRaw(IDatabaseParameters databaseParameters) { _databaseParameters = databaseParameters; CreateInstance(); OpenDatabase(); }
public DatabaseCommand(IDbCommand command, IDatabaseParameters parameters, DatabaseCommandFlags flags) { this.Command = command; this.Parameters = parameters; this.Flags = flags; }
public EngineExecuter(IDatabaseParameters database, IStorage storage, Action <string, MessageLevel> log) { _database = database; _storage = storage; _log = log; }
public MmfStorageStream(IDatabaseParameters databaseParameters) { _databaseParameters = databaseParameters; CreateHandles(); }