Extend storage
SkyWalking has already provided several storage solutions. In this document, you could learn how to easily implement a new storage.
Define your storage provider
- Define class extension org.apache.skywalking.oap.server.library.module.ModuleProvider.
- Set this provider targeting to storage module.
@Override 
public Class<? extends ModuleDefine> module() {
    return StorageModule.class;
}
Implement all DAOs
Here’s a list of all DAO interfaces in storage:
- 
IServiceInventoryCacheDAO 
- 
IServiceInstanceInventoryCacheDAO 
- 
IEndpointInventoryCacheDAO 
- 
INetworkAddressInventoryCacheDAO 
- 
IBatchDAO 
- 
StorageDAO 
- 
IRegisterLockDAO 
- 
ITopologyQueryDAO 
- 
IMetricsQueryDAO 
- 
ITraceQueryDAO 
- 
IMetadataQueryDAO 
- 
IAggregationQueryDAO 
- 
IAlarmQueryDAO 
- 
IHistoryDeleteDAO 
- 
IMetricsDAO 
- 
IRecordDAO 
- 
IRegisterDAO 
- 
ILogQueryDAO 
- 
ITopNRecordsQueryDAO 
- 
IBrowserLogQueryDAO 
- 
IProfileTaskQueryDAO 
- 
IProfileTaskLogQueryDAO 
- 
IProfileThreadSnapshotQueryDAO 
- 
UITemplateManagementDAO 
Register all service implementations
In public void prepare(), use this#registerServiceImplementation method to register and bind with your implementation of the above interfaces.
Example
org.apache.skywalking.oap.server.storage.plugin.elasticsearch.StorageModuleElasticsearchProvider and org.apache.skywalking.oap.server.storage.plugin.jdbc.mysql.MySQLStorageProvider  are good examples.