corda/docs/source/node-database.rst

3.2 KiB

Node database

Default in-memory database

By default nodes store their data in an H2 database.

You can connect directly to a running node's database to see its stored states, transactions and attachments as follows:

  • Download the h2 platform-independent zip, unzip the zip, and navigate in a terminal window to the unzipped folder

  • Change directories to the bin folder:

    cd h2/bin

  • Run the following command to open the h2 web console in a web browser tab:

    • Unix: sh h2.sh
    • Windows: h2.bat
  • Find the node's JDBC connection string. Each node outputs its connection string in the terminal window as it starts up. In a terminal window where a node is running, look for the following string:

    Database connection URL is : jdbc:h2:tcp://10.18.0.150:56736/node

  • Paste this string into the JDBC URL field and click Connect, using the default username and password.

You will be presented with a web interface that shows the contents of your node's storage and vault, and provides an interface for you to query them using SQL.

Standalone database

To run a node against a remote database modify node JDBC connection properties in dataSourceProperties entry and Hibernate properties in database entry - see Node configuration <database_properties_ref>.

SQL Azure and SQL Server

Corda supports SQL Server 2017 (14.0.3006.16) and Azure SQL (12.0.2000.8). The minimum transaction isolation level database.transactionIsolationLevel is 'READ_COMMITTED'. The property database.schema is optional. Corda ships with Microsoft JDBC Driver 6.2 for SQLServer out-of-the-box.

Example node configuration for SQL Azure:

dataSourceProperties {
    dataSourceClassName = "com.microsoft.sqlserver.jdbc.SQLServerDataSource"
    dataSourceProperties.dataSource.url = "jdbc:sqlserver://[DATABASE_SERVER].database.windows.net:1433;databaseName=[DATABASE];
        encrypt=true;trustServerCertificate=false;hostNameInCertificate=*.database.windows.net;loginTimeout=30"
    dataSourceProperties.dataSource.user = [USER]
    dataSourceProperties.dataSource.password = [PASSWORD]
}
database {
    transactionIsolationLevel = READ_COMMITTED
    schema = [SCHEMA]
}

PostgreSQL

Corda supports PostgreSQL 9.6 database preliminarily. The property database.schema is optional. Currently only lowercase value is supported, please ensure your database setup uses lowercase schema names (Corda sends an unquoted schema name and PostgresSQL interprets the value as a lowercase one e.g. AliceCorp becomes alicecorp). Corda ships with PostgreSQL JDBC Driver 42.1.4 out-of-the-box.

Example node configuration for PostgreSQL:

dataSourceProperties = {
    dataSourceClassName = "org.postgresql.ds.PGSimpleDataSource"
    dataSource.url = "jdbc:postgresql://[HOST]:[PORT]/postgres"
    dataSource.user = [USER]
    dataSource.password = [PASSWORD]
}
database = {
    transactionIsolationLevel = READ_COMMITTED
    schema = [SCHEMA]
}