ThingWorx Model Definition and Composer > Data Storage > Persistence Providers
  
Persistence Providers
In ThingWorx, value streams, streams, data tables, blogs, and wikis are data providers. Data providers are databases that store run time data. Run time data is data that is persisted once things are composed and used by connected devices to store their data (such as temperature, humidity, or position). Model providers are used to store the metadata for the things. Persistence providers are initially set to have one database for both model providers and data providers, but administrators can separate them based on requirements.
* 
Reference Model and Data Best Practices for additional information on selecting a persistence provider.
The amount of data that your business model requires determines how you need to handle the data. For big data requirements, the need for a scalable data store may be required. ThingWorx provides the option to choose one of the following persistence providers for your value stream, stream, and data table data:
H2
For more information, see Using H2 as the Persistence Provider.
PostgreSQL
For more information, see Using PostgreSQL as the Persistence Provider.
Microsoft SQL Server
For more information, see Using MS SQL Server as the Persistence Provider
Azure SQL Server
For more information, see Using Azure SQL Server as the Persistence Provider
InfluxDB
For more information, see Using InfluxDB as the Persistence Provider
DSE
For more information, see Using DataStax Enterprise as the Persistence Provider.
SAP HANA
For more information, see Using SAP HANA as the Persistence Provider.
* 
As of version 8.4.0 of ThingWorx platform, SAP HANA is no longer supported.
Neo4j
* 
As of version 8.4.0 of ThingWorx Platform, Neo4j and Neo4j+DSE are no longer supported.
For more information, see Using Neo4j as the Persistence Provider.
The default persistence provider is ThingworxPersistenceProvider, which is based on the persistence provider installed with ThingWorx.
When writing data to a stream or value stream in ThingWorx, it is a best practice to not use a 1:1 ratio. For example, if you have 10,000 things in your model, use 50 streams or value streams (instead of 10,000 streams) for better read performance of your data.
Migrating Entities and Data Between Environments
Stream, value stream, and data table entities and their associated data can be migrated between different systems (for example, from development to production). Follow the steps below to migrate existing entities and data from your existing persistence provider environment to a new persistence provider environment.
If migrating the entity definition and not data, perform the following steps:
1. Export entities from the source system.
2. Import entities into the destination system.
3. In the destination system, manually change the persistence provider for the necessary entities.
If migrating the entity definition and data, perform the following steps:
1. Export entities and data from the source system.
2. Import the entities to the destination system.
3. In the destination system, manually change the persistence provider for the necessary entities.
4. Import data into the destination system.
Your data will be directed to the proper data store according to the persistence provider selected in the previous step.
Migrating Data in Existing Environments
To migrate data in your current environment from an existing persistence provider (such as Neo4j) to a new persistence provider (such as DSE), perform the following steps after your initial persistence provider configuration is complete.
1. Identify which entities to migrate to the new persistence provider.
2. Export data for the identified entities.
3. In Composer, change the persistence provider for the identified entities.
4. Import data.