see on GitHub

Operations: Server: How to Create a Database

Create a new database on a server.

Syntax

public CreateDatabaseOperation(DatabaseRecord databaseRecord)

public CreateDatabaseOperation(DatabaseRecord databaseRecord, int replicationFactor)

Parameters Type Description
databaseRecord DatabaseRecord Instance of DatabaseRecord containing database configuration
replicationFactor int Indicates how many nodes should contain the database

DatabaseRecord

DatabaseRecord is a collection of database configurations.

Constructor

Name Description
DatabaseRecord(string databaseName) Initialize a new database record

Properties

Name Type Description
disabled boolean (default: false) Disable the database
encrypted boolean (default: false) Enable database Encryption
deletionInProgress Map<String, DeletionInProgress> Mark the deletion of the database from specific nodes
topology DatabaseTopology Topology is 'null' by default. The server will decide on which nodes to place the database according to the Replication Factor
conflictSolverConfig ConflictSolver Specify the strategy to resolve Conflicts
indexes Map<String, IndexDefinition> Define Indexes
autoIndexes Map<String, AutoIndexDefinition> Define Auto Indexes
settings Map<String, String> Provide Configuration settings
revisions RevisionsConfiguration Set Revision configuration
expiration ExpirationConfiguration Set Expiration configuration
ravenConnectionStrings Map<String, RavenConnectionString> Add Raven Connection String
sqlConnectionStrings Map<String, SqlConnectionString> Add SQL Connection String
periodicBackups List<PeriodicBackupConfiguration> Add Backup tasks
externalReplications List<ExternalReplications> Add External Replication tasks
ravenEtls List<RavenEtlConfiguration> Add Raven ETL tasks
sqlEtls List<SqlEtlConfiguration> Add SQL ETL tasks
client ClientConfiguration Set Client Configuration

Remarks

If Topology is specified, the replicationFactor will be ignored.

Example

DatabaseRecord databaseRecord = new DatabaseRecord();
databaseRecord.setDatabaseName("MyNewDatabase");
store.maintenance().server().send(new CreateDatabaseOperation(databaseRecord));

Information

To ensure that a database exists before creating it we can use the following example:

Example - EnsureDatabaseExists

public void ensureDatabaseExists(IDocumentStore store, String database, boolean createDatabaseIfNotExists) {
    database = ObjectUtils.firstNonNull(database, store.getDatabase());

    if (StringUtils.isBlank(database)) {
        throw new IllegalArgumentException("Value cannot be null or whitespace");
    }

    try {
        store.maintenance().forDatabase(database).send(new GetStatisticsOperation());
    } catch (DatabaseDoesNotExistException e) {
        if (!createDatabaseIfNotExists) {
            throw e;
        }

        try {
            DatabaseRecord databaseRecord = new DatabaseRecord();
            databaseRecord.setDatabaseName(database);
            store.maintenance().server().send(new CreateDatabaseOperation(databaseRecord));
        } catch (ConcurrencyException ce) {
            // The database was already created before calling CreateDatabaseOperation
        }
    }
}

Note

The creation of a database requires an admin certificate