public DatabaseApis GetDatabaseApis() { var connString = DatabaseConnectionStringFactory.GetDatabaseConnectionString(EDatabaseType.PostgreSQL); return(new DatabaseApis() { NormalDatabaseApi = new SimpleSQLDatabaseApi <NpgsqlCommand, NpgsqlConnection>(connString), ObjectOrientedDatabaseApi = null }); }
public DatabaseApis GetDatabaseApis() { var connString = DatabaseConnectionStringFactory.GetDatabaseConnectionString(EDatabaseType.Perst); return(new DatabaseApis() { NormalDatabaseApi = null, ObjectOrientedDatabaseApi = new SimplePerstDatabaseApi(connString) }); }
public DatabaseApis GetDatabaseApis() { var connString = DatabaseConnectionStringFactory.GetDatabaseConnectionString(EDatabaseType.Cassandra); return(new DatabaseApis() { NormalDatabaseApi = new SimpleCassandraDatabaseApi(connString), ObjectOrientedDatabaseApi = null }); }
public DatabaseApis GetDatabaseApis() { // uses the same database as normal MySQL, so connection string uses EDatabaseType.MySQL var connString = DatabaseConnectionStringFactory.GetDatabaseConnectionString(EDatabaseType.MySQL); return(new DatabaseApis() { NormalDatabaseApi = new SimpleDapperOrmDatabaseApi <MySqlConnection>(connString), ObjectOrientedDatabaseApi = null }); }
public InventoryDbContext CreateDbContext(string[] args) { var dbConnFactory = new DatabaseConnectionStringFactory(); var conn = dbConnFactory.Create(); var optionsBuilder = new DbContextOptionsBuilder <InventoryDbContext>() .UseMySql( conn, sqlOptions => { sqlOptions.MigrationsAssembly(GetType().Assembly.FullName); sqlOptions.ServerVersion(dbConnFactory.DbOptions.DbInfo); sqlOptions.EnableRetryOnFailure(15, TimeSpan.FromSeconds(30), null); } ); return(new InventoryDbContext(optionsBuilder.Options, ConfigurationHelper.GetConfiguration())); }
public static void Main(string[] args) { CreateSqlCollections(); bool hasScalingBeenEnabled = DatabaseConnectionStringFactory.IsConfigFileForScaledServersUsed(); bool wipeExistingDatabase = true; int[] modelAmounts = new int[] { 10, 500, 1000, 5000 }; var allTestReports = new List <TestReport>(); allTestReports.AddRange(GetSimpleDriverTestReports(modelAmounts, hasScalingBeenEnabled, wipeExistingDatabase)); allTestReports.AddRange(GetEntityFrameworkTestReports(modelAmounts, hasScalingBeenEnabled, wipeExistingDatabase)); allTestReports.AddRange(GetCqrsTestReports(modelAmounts, hasScalingBeenEnabled, wipeExistingDatabase)); string reportName = hasScalingBeenEnabled ? "scaled_simple_drivers_tests" : "unscaled_simple_drivers_tests"; TestReport.CombineTestReportsIntoCsvFile(allTestReports, reportName); }
private static void CreateSqlCollections() { // Creating collections in case they don't exist yet. Only applies to fixed-schema, SQL-like databases. var mysqlConnString = DatabaseConnectionStringFactory.GetDatabaseConnectionString(EDatabaseType.MySQL); var mysqlApi = new SimpleSQLDatabaseApi <MySqlCommand, MySqlConnection>(mysqlConnString); var postgresqlConnString = DatabaseConnectionStringFactory.GetDatabaseConnectionString(EDatabaseType.PostgreSQL); var postgresqlApi = new SimpleSQLDatabaseApi <NpgsqlCommand, NpgsqlConnection>(postgresqlConnString); var cassandraConnString = DatabaseConnectionStringFactory.GetDatabaseConnectionString(EDatabaseType.Cassandra); var cassandraApi = new SimpleCassandraDatabaseApi(cassandraConnString); mysqlApi.OpenConnection(); mysqlApi.CreateCollectionIfNotExists(new SqlCreateCollectionModel <MinuteAveragesRow>()); mysqlApi.CloseConnection(); postgresqlApi.OpenConnection(); postgresqlApi.CreateCollectionIfNotExists(new SqlCreateCollectionModel <MinuteAveragesRow>()); postgresqlApi.CloseConnection(); cassandraApi.OpenConnection(); cassandraApi.CreateCollectionIfNotExists(new CassandraCreateCollectionModel <MinuteAveragesRow>(cassandraApi.KEYSPACE_NAME)); cassandraApi.CloseConnection(); }
public BenchmarkDbContext Create() { return(new BenchmarkDbContext(connString: DatabaseConnectionStringFactory.GetDatabaseConnectionString(EDatabaseType.MySQL))); }
protected override ActionsToMeasure GetActionsToMeasure <M>(IDatabaseType databaseType, bool wipeExistingDatabase) { var databaseTypeEnum = databaseType.ToEnum(); if (!(databaseTypeEnum.Equals(EDatabaseType.PostgreSQL) || databaseTypeEnum.Equals(EDatabaseType.MySQL))) { throw new Exception("ORM is only supported for SQL databases."); } var connectionStringForDatabase = DatabaseConnectionStringFactory.GetDatabaseConnectionString(databaseType.ToEnum()); var ormApiForDatabase = new SqlEntityFrameworkOrmDatabaseApi(connectionStringForDatabase); var randomizedStartingModels = base.GetRandomModels <MinuteAveragesRow>(amountOfModelsToCreate) .ToList(); var createAction = new Action(() => { ormApiForDatabase.Create(randomizedStartingModels); }); var getAllAction = new Action(() => { ormApiForDatabase.GetAll <M>(); }); var getByPkAction = new Action(() => { ormApiForDatabase.Search <MinuteAveragesRow>(new Func <MinuteAveragesRow, bool>(x => randomizedStartingModels.Contains(x))); }); var modelsValues = randomizedStartingModels.Select(x => x.startid).ToList(); var getByValueAction = new Action(() => { ormApiForDatabase.Search <MinuteAveragesRow>(new Func <MinuteAveragesRow, bool>(x => modelsValues.Contains(x.startid))); }); var deleteAllAction = new Action(() => { ormApiForDatabase.Delete(randomizedStartingModels); }); var updateAction = new Action(() => { ormApiForDatabase.Update(randomizedStartingModels); }); var randomizeAction = new Action(() => { var random = new Random(); foreach (var model in randomizedStartingModels) { model.RandomizeValuesExceptPrimaryKey(random); } }); var truncateAction = new Action(() => { ormApiForDatabase.Truncate <M>(); }); return(new ActionsToMeasure() { CreateAction = createAction, DeleteAction = deleteAllAction, GetByPkAction = getByPkAction, GetByValueAction = getByValueAction, RandomizeAction = randomizeAction, UpdateAction = updateAction, TruncateAction = truncateAction, WipeExistingDatabase = wipeExistingDatabase }); }