This is an automated email from the ASF dual-hosted git repository.

lujiajing pushed a commit to branch banyandb-integration-stream
in repository https://gitbox.apache.org/repos/asf/skywalking.git

commit 731f47ed0abbae299c1937b63a924007cb8ed99e
Author: Megrez Lu <[email protected]>
AuthorDate: Mon Apr 25 14:40:06 2022 +0800

    refactor converter and measure reigstration
---
 .../storage/plugin/banyandb/BanyanDBConverter.java | 114 ++++++++--
 .../plugin/banyandb/BanyanDBIndexInstaller.java    |   8 +-
 .../plugin/banyandb/BanyanDBMetricsDAO.java        |  15 ++
 .../plugin/banyandb/BanyanDBStorageClient.java     |  28 ++-
 .../plugin/banyandb/BanyanDBStorageProvider.java   |   3 +-
 .../BanyanDBUITemplateManagementDAO.java           |   2 +-
 .../storage/plugin/banyandb/MetadataRegistry.java  | 234 ++++++++++++++++-----
 .../banyandb/measure/BanyanDBMetadataQueryDAO.java |  27 ++-
 .../banyandb/stream/AbstractBanyanDBDAO.java       |  46 +++-
 .../banyandb/stream/BanyanDBAlarmQueryDAO.java     |   9 +-
 .../stream/BanyanDBBrowserLogQueryDAO.java         |   7 +-
 .../banyandb/stream/BanyanDBLogQueryDAO.java       |   7 +-
 .../stream/BanyanDBProfileTaskLogQueryDAO.java     |   7 +-
 .../BanyanDBProfileThreadSnapshotQueryDAO.java     |  30 ++-
 .../plugin/banyandb/stream/BanyanDBRecordDAO.java  |   6 +-
 .../banyandb/stream/BanyanDBTraceQueryDAO.java     |  13 +-
 .../storage/plugin/banyandb/util/ByteUtil.java     |  33 +++
 .../metadata/endpoint_relation_server_side.json    |  41 ----
 .../main/resources/metadata/endpoint_traffic.json  |  31 ---
 .../src/main/resources/metadata/events.json        |  64 ------
 .../metadata/index_rules/component_id.json         |  12 --
 .../metadata/index_rules/create_time.json          |  12 --
 .../metadata/index_rules/db.instance.json          |  12 --
 .../resources/metadata/index_rules/db.type.json    |  12 --
 .../metadata/index_rules/dest_endpoint.json        |  12 --
 .../metadata/index_rules/dest_service_id.json      |  12 --
 .../resources/metadata/index_rules/disabled.json   |  12 --
 .../metadata/index_rules/dump_period.json          |  12 --
 .../resources/metadata/index_rules/dump_time.json  |  12 --
 .../resources/metadata/index_rules/duration.json   |  12 --
 .../resources/metadata/index_rules/end_time.json   |  12 --
 .../resources/metadata/index_rules/endpoint.json   |  12 --
 .../metadata/index_rules/endpoint_id.json          |  12 --
 .../metadata/index_rules/endpoint_name.json        |  12 --
 .../resources/metadata/index_rules/entity_id.json  |  12 --
 .../metadata/index_rules/http.method.json          |  12 --
 .../main/resources/metadata/index_rules/id.json    |  12 --
 .../resources/metadata/index_rules/last_ping.json  |  12 --
 .../index_rules/last_update_time_bucket.json       |  12 --
 .../resources/metadata/index_rules/latency.json    |  12 --
 .../main/resources/metadata/index_rules/layer.json |  12 --
 .../metadata/index_rules/max_sampling_count.json   |  12 --
 .../index_rules/min_duration_threshold.json        |  12 --
 .../resources/metadata/index_rules/mq.broker.json  |  12 --
 .../resources/metadata/index_rules/mq.queue.json   |  12 --
 .../resources/metadata/index_rules/mq.topic.json   |  12 --
 .../main/resources/metadata/index_rules/name.json  |  12 --
 .../metadata/index_rules/operation_time.json       |  12 --
 .../resources/metadata/index_rules/segment_id.json |  12 --
 .../resources/metadata/index_rules/sequence.json   |  12 --
 .../resources/metadata/index_rules/service.json    |  12 --
 .../metadata/index_rules/service_group.json        |  12 --
 .../resources/metadata/index_rules/service_id.json |  12 --
 .../metadata/index_rules/service_instance.json     |  12 --
 .../metadata/index_rules/source_endpoint.json      |  12 --
 .../metadata/index_rules/source_service_id.json    |  12 --
 .../resources/metadata/index_rules/start_time.json |  12 --
 .../metadata/index_rules/status_code.json          |  12 --
 .../resources/metadata/index_rules/trace_id.json   |  12 --
 .../main/resources/metadata/index_rules/type.json  |  12 --
 .../main/resources/metadata/index_rules/uuid.json  |  12 --
 .../main/resources/metadata/instance_traffic.json  |  40 ----
 .../resources/metadata/network_address_alias.json  |  45 ----
 .../src/main/resources/metadata/profile_task.json  |  59 ------
 .../main/resources/metadata/profile_task_log.json  |  40 ----
 .../metadata/profile_task_segment_snapshot.json    |  44 ----
 .../src/main/resources/metadata/segment.json       |  86 --------
 .../service_instance_relation_client_side.json     |  56 -----
 .../service_instance_relation_server_side.json     |  56 -----
 .../metadata/service_relation_client_side.json     |  41 ----
 .../metadata/service_relation_server_side.json     |  41 ----
 .../main/resources/metadata/service_traffic.json   |  44 ----
 .../src/main/resources/metadata/ui_template.json   |  44 ----
 73 files changed, 452 insertions(+), 1361 deletions(-)

diff --git 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/BanyanDBConverter.java
 
b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/BanyanDBConverter.java
index 41237f1f3b..c512b5653c 100644
--- 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/BanyanDBConverter.java
+++ 
b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/BanyanDBConverter.java
@@ -21,15 +21,17 @@ package 
org.apache.skywalking.oap.server.storage.plugin.banyandb;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.skywalking.banyandb.model.v1.BanyandbModel;
+import org.apache.skywalking.banyandb.v1.client.MeasureWrite;
 import org.apache.skywalking.banyandb.v1.client.RowEntity;
 import org.apache.skywalking.banyandb.v1.client.StreamWrite;
 import org.apache.skywalking.banyandb.v1.client.TagAndValue;
 import 
org.apache.skywalking.banyandb.v1.client.grpc.exception.BanyanDBException;
 import org.apache.skywalking.banyandb.v1.client.metadata.Serializable;
-import org.apache.skywalking.oap.server.core.analysis.record.Record;
 import org.apache.skywalking.oap.server.core.storage.type.Convert2Entity;
 import org.apache.skywalking.oap.server.core.storage.type.Convert2Storage;
+import 
org.apache.skywalking.oap.server.core.storage.type.StorageDataComplexObject;
 import org.apache.skywalking.oap.server.library.util.StringUtil;
+import org.apache.skywalking.oap.server.storage.plugin.banyandb.util.ByteUtil;
 
 import java.util.List;
 import java.util.function.Function;
@@ -37,11 +39,17 @@ import java.util.function.Function;
 public class BanyanDBConverter {
     @RequiredArgsConstructor
     public static class StreamToEntity implements Convert2Entity {
+        private final MetadataRegistry.Schema schema;
         private final RowEntity rowEntity;
 
         @Override
         public Object get(String fieldName) {
-            return rowEntity.getTagValue(fieldName);
+            MetadataRegistry.ColumnSpec spec = schema.getSpec(fieldName);
+            if (double.class.equals(spec.getModelColumn().getType())) {
+                return ByteUtil.bytes2Double(rowEntity.getTagValue(fieldName));
+            } else {
+                return rowEntity.getTagValue(fieldName);
+            }
         }
 
         @Override
@@ -57,10 +65,7 @@ public class BanyanDBConverter {
 
         @Override
         public void accept(String fieldName, Object fieldValue) {
-            // skip "time_bucket"
-            if (Record.TIME_BUCKET.equals(fieldName)) {
-                return;
-            }
+            // TODO: skip "time_bucket"
             try {
                 this.streamWrite.tag(fieldName, buildTag(fieldValue));
             } catch (BanyanDBException ex) {
@@ -68,15 +73,6 @@ public class BanyanDBConverter {
             }
         }
 
-        private Serializable<BanyandbModel.TagValue> buildTag(Object value) {
-            if (Integer.class.equals(value.getClass()) || 
Long.class.equals(value.getClass())) {
-                return TagAndValue.longTagValue((long) value);
-            } else if (String.class.equals(value.getClass())) {
-                return TagAndValue.stringTagValue((String) value);
-            }
-            throw new IllegalStateException(value.getClass() + " is not 
supported");
-        }
-
         @Override
         public void accept(String fieldName, byte[] fieldValue) {
             try {
@@ -104,7 +100,6 @@ public class BanyanDBConverter {
 
         @Override
         public Object get(String fieldName) {
-            // TODO: get an unmodifiable view of tag
             return null;
         }
 
@@ -113,4 +108,91 @@ public class BanyanDBConverter {
             return this.streamWrite;
         }
     }
+
+    @Slf4j
+    @RequiredArgsConstructor
+    public static class MeasureToStorage implements 
Convert2Storage<MeasureWrite> {
+        private final MetadataRegistry.Schema schema;
+        private final MeasureWrite measureWrite;
+
+        @Override
+        public void accept(String fieldName, Object fieldValue) {
+            MetadataRegistry.ColumnSpec columnSpec = 
this.schema.getSpec(fieldName);
+            try {
+                if (columnSpec.getColumnType() == 
MetadataRegistry.ColumnType.TAG) {
+                    this.measureWrite.tag(fieldName, buildTag(fieldValue));
+                } else {
+                    this.measureWrite.field(fieldName, buildField(fieldValue));
+                }
+            } catch (BanyanDBException ex) {
+                log.error("fail to add tag", ex);
+            }
+        }
+
+        @Override
+        public void accept(String fieldName, byte[] fieldValue) {
+            MetadataRegistry.ColumnSpec columnSpec = 
this.schema.getSpec(fieldName);
+            try {
+                if (columnSpec.getColumnType() == 
MetadataRegistry.ColumnType.TAG) {
+                    this.measureWrite.tag(fieldName, 
TagAndValue.binaryTagValue(fieldValue));
+                } else {
+                    this.measureWrite.field(fieldName, 
TagAndValue.binaryFieldValue(fieldValue));
+                }
+            } catch (BanyanDBException ex) {
+                log.error("fail to add binary tag/field", ex);
+            }
+        }
+
+        @Override
+        public void accept(String fieldName, List<String> fieldValue) {
+            for (final String tagKeyAndValue : fieldValue) {
+                if (StringUtil.isEmpty(tagKeyAndValue)) {
+                    continue;
+                }
+                int pos = tagKeyAndValue.indexOf("=");
+                if (pos == -1) {
+                    continue;
+                }
+                String key = tagKeyAndValue.substring(0, pos);
+                String value = tagKeyAndValue.substring(pos + 1);
+                this.accept(key, value);
+            }
+        }
+
+        @Override
+        public Object get(String fieldName) {
+            return null;
+        }
+
+        @Override
+        public MeasureWrite obtain() {
+            return this.measureWrite;
+        }
+    }
+
+    private static Serializable<BanyandbModel.TagValue> buildTag(Object value) 
{
+        if (Integer.class.equals(value.getClass()) || 
Long.class.equals(value.getClass())) {
+            return TagAndValue.longTagValue((long) value);
+        } else if (String.class.equals(value.getClass())) {
+            return TagAndValue.stringTagValue((String) value);
+        } else if (Double.class.equals(value.getClass())) {
+            return TagAndValue.binaryTagValue(ByteUtil.double2Bytes((double) 
value));
+        } else if (value instanceof StorageDataComplexObject) {
+            return TagAndValue.stringTagValue(((StorageDataComplexObject<?>) 
value).toStorageData());
+        }
+        throw new IllegalStateException(value.getClass() + " is not 
supported");
+    }
+
+    private static Serializable<BanyandbModel.FieldValue> buildField(Object 
value) {
+        if (Integer.class.equals(value.getClass()) || 
Long.class.equals(value.getClass())) {
+            return TagAndValue.longFieldValue((long) value);
+        } else if (String.class.equals(value.getClass())) {
+            return TagAndValue.stringFieldValue((String) value);
+        } else if (Double.class.equals(value.getClass())) {
+            return TagAndValue.binaryFieldValue(ByteUtil.double2Bytes((double) 
value));
+        } else if (value instanceof StorageDataComplexObject) {
+            return TagAndValue.stringFieldValue(((StorageDataComplexObject<?>) 
value).toStorageData());
+        }
+        throw new IllegalStateException(value.getClass() + " is not 
supported");
+    }
 }
diff --git 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/BanyanDBIndexInstaller.java
 
b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/BanyanDBIndexInstaller.java
index 32f3480769..75109aa781 100644
--- 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/BanyanDBIndexInstaller.java
+++ 
b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/BanyanDBIndexInstaller.java
@@ -22,6 +22,7 @@ import lombok.extern.slf4j.Slf4j;
 import org.apache.skywalking.banyandb.v1.client.BanyanDBClient;
 import 
org.apache.skywalking.banyandb.v1.client.grpc.exception.BanyanDBException;
 import org.apache.skywalking.banyandb.v1.client.metadata.Group;
+import org.apache.skywalking.banyandb.v1.client.metadata.Measure;
 import org.apache.skywalking.banyandb.v1.client.metadata.Stream;
 import org.apache.skywalking.oap.server.core.CoreModule;
 import org.apache.skywalking.oap.server.core.config.ConfigService;
@@ -72,8 +73,11 @@ public class BanyanDBIndexInstaller extends ModelInstaller {
                     ((BanyanDBStorageClient) client).define(stream);
                 }
             } else if (model.isTimeSeries() && !model.isRecord()) { // measure
-                // TODO: dynamically register Measure
-                log.info("skip measure index {}", model.getName());
+                Measure measure = (Measure) 
MetadataRegistry.INSTANCE.registerModel(model, this.configService);
+                if (measure != null) {
+                    log.info("install measure schema {}", model.getName());
+                    ((BanyanDBStorageClient) client).define(measure);
+                }
             } else if (!model.isTimeSeries()) { // UITemplate
                 log.info("skip property index {}", model.getName());
             }
diff --git 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/BanyanDBMetricsDAO.java
 
b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/BanyanDBMetricsDAO.java
index 4e84979498..20a300c3b0 100644
--- 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/BanyanDBMetricsDAO.java
+++ 
b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/BanyanDBMetricsDAO.java
@@ -1,9 +1,13 @@
 package org.apache.skywalking.oap.server.storage.plugin.banyandb;
 
 import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.skywalking.banyandb.v1.client.MeasureWrite;
+import org.apache.skywalking.oap.server.core.analysis.TimeBucket;
 import org.apache.skywalking.oap.server.core.analysis.metrics.Metrics;
 import org.apache.skywalking.oap.server.core.storage.IMetricsDAO;
 import org.apache.skywalking.oap.server.core.storage.model.Model;
+import org.apache.skywalking.oap.server.core.storage.type.Convert2Storage;
 import org.apache.skywalking.oap.server.core.storage.type.StorageBuilder;
 import org.apache.skywalking.oap.server.library.client.request.InsertRequest;
 import org.apache.skywalking.oap.server.library.client.request.UpdateRequest;
@@ -13,6 +17,7 @@ import java.util.Collections;
 import java.util.List;
 
 @RequiredArgsConstructor
+@Slf4j
 public class BanyanDBMetricsDAO implements IMetricsDAO {
     private final StorageBuilder<Metrics> storageBuilder;
 
@@ -23,6 +28,16 @@ public class BanyanDBMetricsDAO implements IMetricsDAO {
 
     @Override
     public InsertRequest prepareBatchInsert(Model model, Metrics metrics) 
throws IOException {
+        log.info("prepare to insert {}", model.getName());
+        MetadataRegistry.Schema schema = 
MetadataRegistry.INSTANCE.findMetadata(model.getName());
+        if (schema == null) {
+            throw new IOException(model.getName() + " is not registered");
+        }
+        MeasureWrite measureWrite = new 
MeasureWrite(schema.getMetadata().getGroup(), // group name
+                model.getName(), // index-name
+                TimeBucket.getTimestamp(metrics.getTimeBucket(), 
model.getDownsampling())); // timestamp
+        final Convert2Storage<MeasureWrite> toStorage = new 
BanyanDBConverter.MeasureToStorage(schema, measureWrite);
+        storageBuilder.entity2Storage(metrics, toStorage);
         return new InsertRequest() {
         };
     }
diff --git 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/BanyanDBStorageClient.java
 
b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/BanyanDBStorageClient.java
index 2df53a2ed9..a92c270023 100644
--- 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/BanyanDBStorageClient.java
+++ 
b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/BanyanDBStorageClient.java
@@ -20,11 +20,14 @@ package 
org.apache.skywalking.oap.server.storage.plugin.banyandb;
 
 import io.grpc.Status;
 import org.apache.skywalking.banyandb.v1.client.BanyanDBClient;
+import org.apache.skywalking.banyandb.v1.client.MeasureQuery;
+import org.apache.skywalking.banyandb.v1.client.MeasureQueryResponse;
 import org.apache.skywalking.banyandb.v1.client.StreamBulkWriteProcessor;
 import org.apache.skywalking.banyandb.v1.client.StreamQuery;
 import org.apache.skywalking.banyandb.v1.client.StreamQueryResponse;
 import org.apache.skywalking.banyandb.v1.client.StreamWrite;
 import 
org.apache.skywalking.banyandb.v1.client.grpc.exception.BanyanDBException;
+import org.apache.skywalking.banyandb.v1.client.metadata.Measure;
 import org.apache.skywalking.banyandb.v1.client.metadata.Property;
 import org.apache.skywalking.banyandb.v1.client.metadata.Stream;
 import org.apache.skywalking.oap.server.library.client.Client;
@@ -90,9 +93,9 @@ public class BanyanDBStorageClient implements Client, 
HealthCheckable {
         }
     }
 
-    public StreamQueryResponse query(StreamQuery streamQuery) throws 
IOException {
+    public StreamQueryResponse query(StreamQuery q) throws IOException {
         try {
-            StreamQueryResponse response = this.client.query(streamQuery);
+            StreamQueryResponse response = this.client.query(q);
             this.healthChecker.health();
             return response;
         } catch (BanyanDBException ex) {
@@ -101,6 +104,17 @@ public class BanyanDBStorageClient implements Client, 
HealthCheckable {
         }
     }
 
+    public MeasureQueryResponse query(MeasureQuery q) throws IOException {
+        try {
+            MeasureQueryResponse response = this.client.query(q);
+            this.healthChecker.health();
+            return response;
+        } catch (BanyanDBException ex) {
+            healthChecker.unHealth(ex);
+            throw new IOException("fail to query measure", ex);
+        }
+    }
+
     public void define(Property property) throws IOException {
         try {
             this.client.save(property);
@@ -121,6 +135,16 @@ public class BanyanDBStorageClient implements Client, 
HealthCheckable {
         }
     }
 
+    public void define(Measure measure) throws IOException {
+        try {
+            this.client.define(measure);
+            this.healthChecker.health();
+        } catch (BanyanDBException ex) {
+            healthChecker.unHealth(ex);
+            throw new IOException("fail to define stream", ex);
+        }
+    }
+
     public void write(StreamWrite streamWrite) {
         this.client.write(streamWrite);
     }
diff --git 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/BanyanDBStorageProvider.java
 
b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/BanyanDBStorageProvider.java
index 26c0e8d501..26c6b2529a 100644
--- 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/BanyanDBStorageProvider.java
+++ 
b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/BanyanDBStorageProvider.java
@@ -56,7 +56,6 @@ import 
org.apache.skywalking.oap.server.storage.plugin.banyandb.measure.BanyanDB
 import 
org.apache.skywalking.oap.server.storage.plugin.banyandb.measure.BanyanDBProfileTaskQueryDAO;
 import 
org.apache.skywalking.oap.server.storage.plugin.banyandb.measure.BanyanDBServiceLabelDAO;
 import 
org.apache.skywalking.oap.server.storage.plugin.banyandb.measure.BanyanDBTopologyQueryDAO;
-import 
org.apache.skywalking.oap.server.storage.plugin.banyandb.measure.BanyanDBUITemplateManagementDAO;
 import 
org.apache.skywalking.oap.server.storage.plugin.banyandb.stream.BanyanDBAlarmQueryDAO;
 import 
org.apache.skywalking.oap.server.storage.plugin.banyandb.stream.BanyanDBBatchDAO;
 import 
org.apache.skywalking.oap.server.storage.plugin.banyandb.stream.BanyanDBBrowserLogQueryDAO;
@@ -109,7 +108,7 @@ public class BanyanDBStorageProvider extends ModuleProvider 
{
         this.registerServiceImplementation(INetworkAddressAliasDAO.class, new 
BanyanDBNetworkAddressAliasDAO());
         this.registerServiceImplementation(ITraceQueryDAO.class, new 
BanyanDBTraceQueryDAO(client));
         this.registerServiceImplementation(IBrowserLogQueryDAO.class, new 
BanyanDBBrowserLogQueryDAO(client));
-        this.registerServiceImplementation(IMetadataQueryDAO.class, new 
BanyanDBMetadataQueryDAO());
+        this.registerServiceImplementation(IMetadataQueryDAO.class, new 
BanyanDBMetadataQueryDAO(client));
         this.registerServiceImplementation(IAlarmQueryDAO.class, new 
BanyanDBAlarmQueryDAO(client));
         this.registerServiceImplementation(ILogQueryDAO.class, new 
BanyanDBLogQueryDAO(client));
         this.registerServiceImplementation(IProfileTaskQueryDAO.class, new 
BanyanDBProfileTaskQueryDAO());
diff --git 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/measure/BanyanDBUITemplateManagementDAO.java
 
b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/BanyanDBUITemplateManagementDAO.java
similarity index 99%
rename from 
oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/measure/BanyanDBUITemplateManagementDAO.java
rename to 
oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/BanyanDBUITemplateManagementDAO.java
index dba7844413..b97e71ccb7 100644
--- 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/measure/BanyanDBUITemplateManagementDAO.java
+++ 
b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/BanyanDBUITemplateManagementDAO.java
@@ -16,7 +16,7 @@
  *
  */
 
-package org.apache.skywalking.oap.server.storage.plugin.banyandb.measure;
+package org.apache.skywalking.oap.server.storage.plugin.banyandb;
 
 import lombok.extern.slf4j.Slf4j;
 import org.apache.skywalking.banyandb.v1.client.TagAndValue;
diff --git 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/MetadataRegistry.java
 
b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/MetadataRegistry.java
index b8925c7529..6c6fbb7658 100644
--- 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/MetadataRegistry.java
+++ 
b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/MetadataRegistry.java
@@ -18,9 +18,14 @@
 
 package org.apache.skywalking.oap.server.storage.plugin.banyandb;
 
+import com.google.gson.JsonObject;
 import io.grpc.Status;
+import lombok.Builder;
 import lombok.Data;
+import lombok.EqualsAndHashCode;
+import lombok.Getter;
 import lombok.RequiredArgsConstructor;
+import lombok.Singular;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.skywalking.banyandb.v1.client.BanyanDBClient;
 import 
org.apache.skywalking.banyandb.v1.client.grpc.exception.BanyanDBException;
@@ -28,14 +33,19 @@ import 
org.apache.skywalking.banyandb.v1.client.metadata.Catalog;
 import org.apache.skywalking.banyandb.v1.client.metadata.Duration;
 import org.apache.skywalking.banyandb.v1.client.metadata.Group;
 import org.apache.skywalking.banyandb.v1.client.metadata.IndexRule;
+import org.apache.skywalking.banyandb.v1.client.metadata.Measure;
 import org.apache.skywalking.banyandb.v1.client.metadata.NamedSchema;
 import org.apache.skywalking.banyandb.v1.client.metadata.Stream;
 import org.apache.skywalking.banyandb.v1.client.metadata.TagFamilySpec;
 import org.apache.skywalking.oap.server.core.alarm.AlarmRecord;
+import org.apache.skywalking.oap.server.core.analysis.DownSampling;
+import org.apache.skywalking.oap.server.core.analysis.Layer;
 import org.apache.skywalking.oap.server.core.analysis.manual.log.LogRecord;
 import 
org.apache.skywalking.oap.server.core.analysis.manual.segment.SegmentRecord;
 import org.apache.skywalking.oap.server.core.analysis.metrics.DataTable;
+import org.apache.skywalking.oap.server.core.analysis.metrics.IntList;
 import org.apache.skywalking.oap.server.core.config.ConfigService;
+import 
org.apache.skywalking.oap.server.core.storage.annotation.ValueColumnMetadata;
 import org.apache.skywalking.oap.server.core.storage.model.Model;
 import org.apache.skywalking.oap.server.core.storage.model.ModelColumn;
 import org.apache.skywalking.oap.server.library.util.StringUtil;
@@ -45,9 +55,9 @@ import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.Comparator;
-import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Objects;
 import java.util.Optional;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.function.Function;
@@ -57,53 +67,105 @@ import java.util.stream.Collectors;
 public enum MetadataRegistry {
     INSTANCE;
 
-    private final Map<String, PartialMetadata> registry = new 
ConcurrentHashMap<>();
+    private final Map<String, Schema> registry = new ConcurrentHashMap<>();
 
     public NamedSchema<?> registerModel(Model model, ConfigService 
configService) {
-        PartialMetadata partialMetadata = parseMetadata(model);
-        final Stream.Builder builder = 
Stream.create(partialMetadata.getGroup(), partialMetadata.getName());
+        final PartialMetadata partialMetadata = parseMetadata(model);
+        Schema.SchemaBuilder schemaBuilder = 
Schema.builder().metadata(partialMetadata);
         Map<String, ModelColumn> modelColumnMap = model.getColumns().stream()
                 .collect(Collectors.toMap(modelColumn -> 
modelColumn.getColumnName().getStorageName(), Function.identity()));
         // parse and set sharding keys
-        builder.setEntityRelativeTags(parseEntityNames(modelColumnMap));
-        // parse and set tag families, which contains tag specs
-        List<TagFamilySpec> specs = parseTagFamilySpecs(model, 
partialMetadata, configService);
-        builder.addTagFamilies(specs);
-        // parse and add index definition
-        builder.addIndexes(parseIndexRules(specs, 
partialMetadata.indexFamily(), modelColumnMap));
-
-        registry.put(model.getName(), partialMetadata);
-        return builder.build();
+        List<String> entities = parseEntityNames(modelColumnMap);
+        // parse tag metadata
+        // this can be used to build both
+        // 1) a list of TagFamilySpec,
+        // 2) a list of IndexRule,
+        List<TagMetadata> tags = parseTagMetadata(model, configService, 
schemaBuilder);
+        List<TagFamilySpec> tagFamilySpecs = 
partialMetadata.extractTagFamilySpec(tags);
+        List<IndexRule> indexRules = tags.stream()
+                .map(TagMetadata::getIndexRule)
+                .filter(Objects::nonNull)
+                .collect(Collectors.toList());
+
+
+        if (partialMetadata.getKind() == Kind.STREAM) {
+            final Stream.Builder builder = 
Stream.create(partialMetadata.getGroup(), partialMetadata.getName());
+            builder.setEntityRelativeTags(entities);
+            builder.addTagFamilies(tagFamilySpecs);
+            builder.addIndexes(indexRules);
+
+            registry.put(model.getName(), schemaBuilder.build());
+            return builder.build();
+        } else {
+            final Measure.Builder builder = 
Measure.create(partialMetadata.getGroup(), partialMetadata.getName(),
+                    downSamplingDuration(model.getDownsampling()));
+            builder.setEntityRelativeTags(entities);
+            builder.addTagFamilies(tagFamilySpecs);
+            builder.addIndexes(indexRules);
+            // parse and set field
+            Optional<ValueColumnMetadata.ValueColumn> valueColumnOpt = 
ValueColumnMetadata.INSTANCE
+                    .readValueColumnDefinition(model.getName());
+            valueColumnOpt.ifPresent(valueColumn -> 
builder.addField(parseFieldSpec(modelColumnMap.get(valueColumn.getValueCName()),
 valueColumn)));
+
+            registry.put(model.getName(), schemaBuilder.build());
+            return builder.build();
+        }
     }
 
-    public PartialMetadata findSchema(final String name) {
+    public Schema findMetadata(final String name) {
         return this.registry.get(name);
     }
 
-    List<IndexRule> parseIndexRules(List<TagFamilySpec> specs, String 
indexTagFamily, Map<String, ModelColumn> modelColumnMap) {
-        List<IndexRule> indexRules = new ArrayList<>();
-        for (final TagFamilySpec spec : specs) {
-            if (!indexTagFamily.equals(spec.tagFamilyName())) {
-                continue;
-            }
-            for (final TagFamilySpec.TagSpec tagSpec : spec.tagSpecs()) {
-                final String tagName = tagSpec.getTagName();
-                // TODO: we need to add support index type in the OAP core
-                // Currently, we only register INVERTED type
-                final ModelColumn modelColumn = modelColumnMap.get(tagName);
-                // if it is null, it must be a user-defined tag
-                if (modelColumn == null) {
-                    indexRules.add(IndexRule.create(tagName, 
IndexRule.IndexType.INVERTED, IndexRule.IndexLocation.SERIES));
-                    continue;
-                }
-                if (modelColumn.getBanyanDBExtension().isGlobalIndexing()) {
-                    indexRules.add(IndexRule.create(tagName, 
IndexRule.IndexType.INVERTED, IndexRule.IndexLocation.GLOBAL));
-                } else {
-                    indexRules.add(IndexRule.create(tagName, 
IndexRule.IndexType.INVERTED, IndexRule.IndexLocation.SERIES));
-                }
-            }
+    private Measure.FieldSpec parseFieldSpec(ModelColumn modelColumn, 
ValueColumnMetadata.ValueColumn valueColumn) {
+        if (String.class.equals(modelColumn.getType())) {
+            return Measure.FieldSpec.newIntField(valueColumn.getValueCName())
+                    .compressWithZSTD()
+                    .build();
+        } else if (long.class.equals(modelColumn.getType()) || 
int.class.equals(modelColumn.getType())) {
+            return Measure.FieldSpec.newIntField(valueColumn.getValueCName())
+                    .compressWithZSTD()
+                    .encodeWithGorilla()
+                    .build();
+        } else if (DataTable.class.equals(modelColumn.getType())) {
+            return 
Measure.FieldSpec.newBinaryField(valueColumn.getValueCName())
+                    .compressWithZSTD()
+                    .build();
+        } else if (double.class.equals(modelColumn.getType())) {
+            // TODO: natively support double/float in BanyanDB
+            log.warn("Double is stored as binary");
+            return 
Measure.FieldSpec.newBinaryField(valueColumn.getValueCName())
+                    .compressWithZSTD()
+                    .build();
+        } else {
+            throw new 
UnsupportedOperationException(modelColumn.getType().getSimpleName() + " is not 
supported for field");
+        }
+    }
+
+    Duration downSamplingDuration(DownSampling downSampling) {
+        switch (downSampling) {
+            case Hour:
+                return Duration.ofHours(1);
+            case Minute:
+                return Duration.ofMinutes(1);
+            case Day:
+                return Duration.ofDays(1);
+            default:
+                throw new UnsupportedOperationException("unsupported 
downSampling interval");
+        }
+    }
+
+    IndexRule parseIndexRule(String tagName, ModelColumn modelColumn) {
+        // TODO: we need to add support index type in the OAP core
+        // Currently, we only register INVERTED type
+        // if it is null, it must be a user-defined tag
+        if (modelColumn == null) {
+            return IndexRule.create(tagName, IndexRule.IndexType.INVERTED, 
IndexRule.IndexLocation.SERIES);
+        }
+        if (modelColumn.getBanyanDBExtension().isGlobalIndexing()) {
+            return IndexRule.create(tagName, IndexRule.IndexType.INVERTED, 
IndexRule.IndexLocation.GLOBAL);
+        } else {
+            return IndexRule.create(tagName, IndexRule.IndexType.INVERTED, 
IndexRule.IndexLocation.SERIES);
         }
-        return indexRules;
     }
 
     /**
@@ -125,30 +187,40 @@ public enum MetadataRegistry {
                 .collect(Collectors.toList());
     }
 
-    List<TagFamilySpec> parseTagFamilySpecs(Model model, PartialMetadata 
metadata, ConfigService configService) {
-        Map<String, TagFamilySpec.Builder> builderMap = new HashMap<>();
+    List<TagMetadata> parseTagMetadata(Model model, ConfigService 
configService, Schema.SchemaBuilder builder) {
+        List<TagMetadata> tagMetadataList = new ArrayList<>();
+        // skip metric
+        Optional<ValueColumnMetadata.ValueColumn> valueColumnOpt = 
ValueColumnMetadata.INSTANCE
+                .readValueColumnDefinition(model.getName());
         for (final ModelColumn col : model.getColumns()) {
+            if (valueColumnOpt.isPresent() && 
valueColumnOpt.get().getValueCName().equals(col.getColumnName().getStorageName()))
 {
+                builder.spec(col.getColumnName().getStorageName(), new 
ColumnSpec(ColumnType.FIELD, col));
+                continue;
+            }
             final TagFamilySpec.TagSpec tagSpec = parseTagSpec(col);
             if (tagSpec == null) {
                 continue;
             }
+            builder.spec(col.getColumnName().getStorageName(), new 
ColumnSpec(ColumnType.TAG, col));
             if (col.shouldIndex()) {
-                builderMap.computeIfAbsent(metadata.indexFamily(), 
TagFamilySpec::create).addTagSpec(tagSpec);
+                // build indexRule
+                IndexRule indexRule = parseIndexRule(tagSpec.getTagName(), 
col);
+                tagMetadataList.add(new TagMetadata(indexRule, tagSpec));
             } else {
-                builderMap.computeIfAbsent(metadata.nonIndexFamily(), 
TagFamilySpec::create).addTagSpec(tagSpec);
+                tagMetadataList.add(new TagMetadata(null, tagSpec));
             }
         }
 
         // add all user-defined indexed tags to the end of the "searchable" 
family
         if (SegmentRecord.INDEX_NAME.equals(model.getName())) {
-            builderMap.computeIfAbsent(metadata.indexFamily(), 
TagFamilySpec::create).addTagSpecs(parseExtraTagSpecs(configService.getSearchableTracesTags()));
+            
tagMetadataList.addAll(parseExtraTagSpecs(configService.getSearchableTracesTags()));
         } else if (LogRecord.INDEX_NAME.equals(model.getName())) {
-            builderMap.computeIfAbsent(metadata.indexFamily(), 
TagFamilySpec::create).addTagSpecs(parseExtraTagSpecs(configService.getSearchableLogsTags()));
+            
tagMetadataList.addAll(parseExtraTagSpecs(configService.getSearchableLogsTags()));
         } else if (AlarmRecord.INDEX_NAME.equals(model.getName())) {
-            builderMap.computeIfAbsent(metadata.indexFamily(), 
TagFamilySpec::create).addTagSpecs(parseExtraTagSpecs(configService.getSearchableAlarmTags()));
+            
tagMetadataList.addAll(parseExtraTagSpecs(configService.getSearchableAlarmTags()));
         }
 
-        return 
builderMap.values().stream().map(TagFamilySpec.Builder::build).collect(Collectors.toList());
+        return tagMetadataList;
     }
 
     /**
@@ -158,7 +230,7 @@ public enum MetadataRegistry {
      * @param tags a series of tags joint by comma
      * @return a list of {@link 
org.apache.skywalking.banyandb.v1.client.metadata.TagFamilySpec.TagSpec} 
generated from input
      */
-    private List<TagFamilySpec.TagSpec> parseExtraTagSpecs(String tags) {
+    private List<TagMetadata> parseExtraTagSpecs(String tags) {
         if (StringUtil.isEmpty(tags)) {
             return Collections.emptyList();
         }
@@ -167,7 +239,8 @@ public enum MetadataRegistry {
             return Collections.emptyList();
         }
         return Arrays.stream(tagsArray)
-                .map(TagFamilySpec.TagSpec::newStringTag)
+                .map(tagName -> new TagMetadata(parseIndexRule(tagName, null),
+                        TagFamilySpec.TagSpec.newStringTag(tagName)))
                 .collect(Collectors.toList());
     }
 
@@ -180,15 +253,23 @@ public enum MetadataRegistry {
     @Nullable
     private TagFamilySpec.TagSpec parseTagSpec(ModelColumn modelColumn) {
         final Class<?> clazz = modelColumn.getType();
-        if (String.class.equals(clazz)) {
-            return 
TagFamilySpec.TagSpec.newStringTag(modelColumn.getColumnName().getStorageName());
+        final String colName = modelColumn.getColumnName().getStorageName();
+        if (String.class.equals(clazz) || DataTable.class.equals(clazz) || 
JsonObject.class.equals(clazz)) {
+            return TagFamilySpec.TagSpec.newStringTag(colName);
         } else if (int.class.equals(clazz) || long.class.equals(clazz)) {
-            return 
TagFamilySpec.TagSpec.newIntTag(modelColumn.getColumnName().getStorageName());
-        } else if (byte[].class.equals(clazz) || 
DataTable.class.equals(clazz)) {
-            return 
TagFamilySpec.TagSpec.newBinaryTag(modelColumn.getColumnName().getStorageName());
-        } else {
+            return TagFamilySpec.TagSpec.newIntTag(colName);
+        } else if (byte[].class.equals(clazz)) {
+            return TagFamilySpec.TagSpec.newBinaryTag(colName);
+        } else if (Layer.class.equals(clazz)) {
+            return TagFamilySpec.TagSpec.newIntTag(colName);
+        } else if (double.class.equals(clazz) || Double.class.equals(clazz)) {
+            // serialize double as binary
+            return TagFamilySpec.TagSpec.newBinaryTag(colName);
+        } else if (IntList.class.isAssignableFrom(clazz)) {
+            return TagFamilySpec.TagSpec.newIntArrayTag(colName);
+        } else { // handle exceptions
             // TODO: we skip all tags with type of List<String>
-            if ("tags".equals(modelColumn.getColumnName().getStorageName())) {
+            if ("tags".equals(colName)) {
                 return null;
             }
             throw new IllegalStateException("type " + 
modelColumn.getType().toString() + " is not supported");
@@ -207,6 +288,7 @@ public enum MetadataRegistry {
         return new PartialMetadata("measure-default", model.getName(), 
Kind.MEASURE);
     }
 
+
     @RequiredArgsConstructor
     @Data
     public static class PartialMetadata {
@@ -233,6 +315,14 @@ public enum MetadataRegistry {
             }
         }
 
+        private List<TagFamilySpec> extractTagFamilySpec(List<TagMetadata> 
tagMetadataList) {
+            return 
tagMetadataList.stream().collect(Collectors.groupingBy(tagMetadata -> 
tagMetadata.isIndex() ? PartialMetadata.this.indexFamily() : 
PartialMetadata.this.nonIndexFamily()))
+                    .entrySet().stream()
+                    .map(entry -> TagFamilySpec.create(entry.getKey())
+                            
.addTagSpecs(entry.getValue().stream().map(TagMetadata::getTagSpec).collect(Collectors.toList())).build())
+                    .collect(Collectors.toList());
+        }
+
         public Group getOrCreateGroup(BanyanDBClient client) throws 
BanyanDBException {
             Group g = client.findGroup(this.group);
             if (g != null) {
@@ -262,7 +352,6 @@ public enum MetadataRegistry {
         public String nonIndexFamily() {
             switch (kind) {
                 case MEASURE:
-                    return null;
                 case STREAM:
                     return "binary";
                 default:
@@ -274,4 +363,39 @@ public enum MetadataRegistry {
     public enum Kind {
         MEASURE, STREAM;
     }
+
+    @RequiredArgsConstructor
+    @Getter
+    private static class TagMetadata {
+        private final IndexRule indexRule;
+        private final TagFamilySpec.TagSpec tagSpec;
+
+        boolean isIndex() {
+            return this.indexRule != null;
+        }
+    }
+
+    @Builder
+    @EqualsAndHashCode
+    public static class Schema {
+        @Getter
+        private final PartialMetadata metadata;
+        @Singular
+        private final Map<String, ColumnSpec> specs;
+
+        public ColumnSpec getSpec(String columnName) {
+            return this.specs.get(columnName);
+        }
+    }
+
+    @RequiredArgsConstructor
+    @Getter
+    public static class ColumnSpec {
+        private final ColumnType columnType;
+        private final ModelColumn modelColumn;
+    }
+
+    public enum ColumnType {
+        TAG, FIELD;
+    }
 }
diff --git 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/measure/BanyanDBMetadataQueryDAO.java
 
b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/measure/BanyanDBMetadataQueryDAO.java
index bff4fc00be..23828464da 100644
--- 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/measure/BanyanDBMetadataQueryDAO.java
+++ 
b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/measure/BanyanDBMetadataQueryDAO.java
@@ -18,19 +18,44 @@
 
 package org.apache.skywalking.oap.server.storage.plugin.banyandb.measure;
 
+import com.google.common.collect.ImmutableSet;
+import org.apache.skywalking.banyandb.v1.client.MeasureQuery;
+import org.apache.skywalking.banyandb.v1.client.MeasureQueryResponse;
+import 
org.apache.skywalking.oap.server.core.analysis.manual.service.ServiceTraffic;
 import org.apache.skywalking.oap.server.core.query.type.Endpoint;
 import org.apache.skywalking.oap.server.core.query.type.Process;
 import org.apache.skywalking.oap.server.core.query.type.Service;
 import org.apache.skywalking.oap.server.core.query.type.ServiceInstance;
 import org.apache.skywalking.oap.server.core.storage.query.IMetadataQueryDAO;
+import org.apache.skywalking.oap.server.library.util.StringUtil;
+import 
org.apache.skywalking.oap.server.storage.plugin.banyandb.BanyanDBStorageClient;
+import 
org.apache.skywalking.oap.server.storage.plugin.banyandb.stream.AbstractBanyanDBDAO;
 
 import java.io.IOException;
 import java.util.Collections;
 import java.util.List;
 
-public class BanyanDBMetadataQueryDAO implements IMetadataQueryDAO {
+public class BanyanDBMetadataQueryDAO extends AbstractBanyanDBDAO implements 
IMetadataQueryDAO {
+    public BanyanDBMetadataQueryDAO(BanyanDBStorageClient client) {
+        super(client);
+    }
+
     @Override
     public List<Service> listServices(String layer, String group) throws 
IOException {
+        MeasureQueryResponse resp = query(ServiceTraffic.INDEX_NAME,
+                ImmutableSet.of(ServiceTraffic.NAME, 
ServiceTraffic.SHORT_NAME),
+                Collections.emptySet(), new QueryBuilder<MeasureQuery>() {
+                    @Override
+                    protected void apply(MeasureQuery query) {
+                        if (StringUtil.isNotEmpty(group)) {
+                            query.appendCondition(eq(ServiceTraffic.GROUP, 
group));
+                        }
+                        if (StringUtil.isNotEmpty(layer)) {
+                            query.appendCondition(eq(ServiceTraffic.LAYER, 
layer));
+                        }
+                    }
+                });
+
         return Collections.emptyList();
     }
 
diff --git 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/AbstractBanyanDBDAO.java
 
b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/AbstractBanyanDBDAO.java
index 53e8cc4f80..c7d4f930ee 100644
--- 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/AbstractBanyanDBDAO.java
+++ 
b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/AbstractBanyanDBDAO.java
@@ -18,6 +18,9 @@
 
 package org.apache.skywalking.oap.server.storage.plugin.banyandb.stream;
 
+import org.apache.skywalking.banyandb.v1.client.AbstractQuery;
+import org.apache.skywalking.banyandb.v1.client.MeasureQuery;
+import org.apache.skywalking.banyandb.v1.client.MeasureQueryResponse;
 import org.apache.skywalking.banyandb.v1.client.PairQueryCondition;
 import org.apache.skywalking.banyandb.v1.client.StreamQuery;
 import org.apache.skywalking.banyandb.v1.client.StreamQueryResponse;
@@ -39,17 +42,44 @@ public abstract class AbstractBanyanDBDAO extends 
AbstractDAO<BanyanDBStorageCli
         super(client);
     }
 
-    protected StreamQueryResponse query(MetadataRegistry.PartialMetadata 
metadata, Set<String> searchableTags, QueryBuilder builder) throws IOException {
-        return this.query(metadata, searchableTags, null, builder);
+    protected StreamQueryResponse query(String modelName, Set<String> tags, 
QueryBuilder<StreamQuery> builder) throws IOException {
+        return this.query(modelName, tags, null, builder);
     }
 
-    protected StreamQueryResponse query(MetadataRegistry.PartialMetadata 
metadata, Set<String> searchableTags, TimestampRange timestampRange,
-                                        QueryBuilder builder) throws 
IOException {
+    protected StreamQueryResponse query(String modelName, Set<String> tags, 
TimestampRange timestampRange,
+                                        QueryBuilder<StreamQuery> builder) 
throws IOException {
+        MetadataRegistry.Schema schema = 
MetadataRegistry.INSTANCE.findMetadata(modelName);
+        if (schema == null) {
+            throw new IllegalStateException("schema is not registered");
+        }
         final StreamQuery query;
         if (timestampRange == null) {
-            query = new StreamQuery(metadata.getGroup(), metadata.getName(), 
LARGEST_TIME_RANGE, searchableTags);
+            query = new StreamQuery(schema.getMetadata().getGroup(), 
schema.getMetadata().getName(), LARGEST_TIME_RANGE, tags);
+        } else {
+            query = new StreamQuery(schema.getMetadata().getGroup(), 
schema.getMetadata().getName(), timestampRange, tags);
+        }
+
+        builder.apply(query);
+
+        return getClient().query(query);
+    }
+
+    protected MeasureQueryResponse query(String modelName, Set<String> tags, 
Set<String> fields,
+                                         QueryBuilder<MeasureQuery> builder) 
throws IOException {
+        return this.query(modelName, tags, fields, null, builder);
+    }
+
+    protected MeasureQueryResponse query(String modelName, Set<String> tags, 
Set<String> fields,
+                                         TimestampRange timestampRange, 
QueryBuilder<MeasureQuery> builder) throws IOException {
+        MetadataRegistry.Schema schema = 
MetadataRegistry.INSTANCE.findMetadata(modelName);
+        if (schema == null) {
+            throw new IllegalStateException("schema is not registered");
+        }
+        final MeasureQuery query;
+        if (timestampRange == null) {
+            query = new MeasureQuery(schema.getMetadata().getGroup(), 
schema.getMetadata().getName(), LARGEST_TIME_RANGE, tags, fields);
         } else {
-            query = new StreamQuery(metadata.getGroup(), metadata.getName(), 
timestampRange, searchableTags);
+            query = new MeasureQuery(schema.getMetadata().getGroup(), 
schema.getMetadata().getName(), timestampRange, tags, fields);
         }
 
         builder.apply(query);
@@ -57,8 +87,8 @@ public abstract class AbstractBanyanDBDAO extends 
AbstractDAO<BanyanDBStorageCli
         return getClient().query(query);
     }
 
-    protected abstract static class QueryBuilder {
-        abstract void apply(final StreamQuery query);
+    protected abstract static class QueryBuilder<T extends AbstractQuery<? 
extends com.google.protobuf.GeneratedMessageV3>> {
+        protected abstract void apply(final T query);
 
         protected PairQueryCondition<Long> eq(String name, long value) {
             return PairQueryCondition.LongQueryCondition.eq(name, value);
diff --git 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBAlarmQueryDAO.java
 
b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBAlarmQueryDAO.java
index b2a43abff7..55f2cf9ec7 100644
--- 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBAlarmQueryDAO.java
+++ 
b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBAlarmQueryDAO.java
@@ -44,9 +44,6 @@ import java.util.Objects;
  * which can be used to build a {@link 
org.apache.skywalking.oap.server.core.query.type.AlarmMessage}
  */
 public class BanyanDBAlarmQueryDAO extends AbstractBanyanDBDAO implements 
IAlarmQueryDAO {
-    private final MetadataRegistry.PartialMetadata alarmRecordMetadata =
-            MetadataRegistry.INSTANCE.findSchema(AlarmRecord.INDEX_NAME);
-
     public BanyanDBAlarmQueryDAO(BanyanDBStorageClient client) {
         super(client);
     }
@@ -58,10 +55,10 @@ public class BanyanDBAlarmQueryDAO extends 
AbstractBanyanDBDAO implements IAlarm
             tsRange = new TimestampRange(TimeBucket.getTimestamp(startTB), 
TimeBucket.getTimestamp(endTB));
         }
 
-        StreamQueryResponse resp = query(alarmRecordMetadata,
+        StreamQueryResponse resp = query(AlarmRecord.INDEX_NAME,
                 ImmutableSet.of(AlarmRecord.SCOPE, AlarmRecord.START_TIME, 
AlarmRecord.ID0, AlarmRecord.ID1, AlarmRecord.ALARM_MESSAGE, 
AlarmRecord.TAGS_RAW_DATA),
                 tsRange,
-                new QueryBuilder() {
+                new QueryBuilder<StreamQuery>() {
                     @Override
                     public void apply(StreamQuery query) {
                         if (Objects.nonNull(scopeId)) {
@@ -87,7 +84,7 @@ public class BanyanDBAlarmQueryDAO extends 
AbstractBanyanDBDAO implements IAlarm
         for (final RowEntity rowEntity : resp.getElements()) {
             AlarmRecord.Builder builder = new AlarmRecord.Builder();
             AlarmRecord alarmRecord = builder.storage2Entity(
-                    new BanyanDBConverter.StreamToEntity(rowEntity)
+                    new 
BanyanDBConverter.StreamToEntity(MetadataRegistry.INSTANCE.findMetadata(AlarmRecord.INDEX_NAME),
 rowEntity)
             );
 
             AlarmMessage message = new AlarmMessage();
diff --git 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBBrowserLogQueryDAO.java
 
b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBBrowserLogQueryDAO.java
index 2c412cf7dc..e692a8d3b3 100644
--- 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBBrowserLogQueryDAO.java
+++ 
b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBBrowserLogQueryDAO.java
@@ -42,9 +42,6 @@ import java.util.Objects;
  * {@link 
org.apache.skywalking.oap.server.core.browser.manual.errorlog.BrowserErrorLogRecord}
 is a stream
  */
 public class BanyanDBBrowserLogQueryDAO extends AbstractBanyanDBDAO implements 
IBrowserLogQueryDAO {
-    private final MetadataRegistry.PartialMetadata 
browserErrorLogRecordMetadata =
-            
MetadataRegistry.INSTANCE.findSchema(BrowserErrorLogRecord.INDEX_NAME);
-
     public BanyanDBBrowserLogQueryDAO(BanyanDBStorageClient client) {
         super(client);
     }
@@ -56,10 +53,10 @@ public class BanyanDBBrowserLogQueryDAO extends 
AbstractBanyanDBDAO implements I
             tsRange = new 
TimestampRange(TimeBucket.getTimestamp(startSecondTB), 
TimeBucket.getTimestamp(endSecondTB));
         }
 
-        StreamQueryResponse resp = query(browserErrorLogRecordMetadata, 
ImmutableSet.of(BrowserErrorLogRecord.SERVICE_ID,
+        StreamQueryResponse resp = query(BrowserErrorLogRecord.INDEX_NAME, 
ImmutableSet.of(BrowserErrorLogRecord.SERVICE_ID,
                 BrowserErrorLogRecord.SERVICE_VERSION_ID,
                 BrowserErrorLogRecord.PAGE_PATH_ID,
-                BrowserErrorLogRecord.ERROR_CATEGORY, 
BrowserErrorLogRecord.DATA_BINARY), tsRange, new QueryBuilder() {
+                BrowserErrorLogRecord.ERROR_CATEGORY, 
BrowserErrorLogRecord.DATA_BINARY), tsRange, new QueryBuilder<StreamQuery>() {
             @Override
             public void apply(StreamQuery query) {
                 query.appendCondition(eq(BrowserErrorLogRecord.SERVICE_ID, 
serviceId));
diff --git 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBLogQueryDAO.java
 
b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBLogQueryDAO.java
index c6097539c9..d4e3214a36 100644
--- 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBLogQueryDAO.java
+++ 
b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBLogQueryDAO.java
@@ -50,9 +50,6 @@ import java.util.Objects;
  * {@link org.apache.skywalking.oap.server.core.analysis.manual.log.LogRecord} 
is a stream
  */
 public class BanyanDBLogQueryDAO extends AbstractBanyanDBDAO implements 
ILogQueryDAO {
-    private final MetadataRegistry.PartialMetadata logRecordMetadata =
-            MetadataRegistry.INSTANCE.findSchema(LogRecord.INDEX_NAME);
-
     public BanyanDBLogQueryDAO(BanyanDBStorageClient client) {
         super(client);
     }
@@ -62,7 +59,7 @@ public class BanyanDBLogQueryDAO extends AbstractBanyanDBDAO 
implements ILogQuer
                           TraceScopeCondition relatedTrace, Order queryOrder, 
int from, int limit,
                           long startTB, long endTB, List<Tag> tags, 
List<String> keywordsOfContent,
                           List<String> excludingKeywordsOfContent) throws 
IOException {
-        final QueryBuilder query = new QueryBuilder() {
+        final QueryBuilder<StreamQuery> query = new 
QueryBuilder<StreamQuery>() {
             @Override
             public void apply(StreamQuery query) {
                 if (StringUtil.isNotEmpty(serviceId)) {
@@ -101,7 +98,7 @@ public class BanyanDBLogQueryDAO extends AbstractBanyanDBDAO 
implements ILogQuer
             tsRange = new TimestampRange(TimeBucket.getTimestamp(startTB), 
TimeBucket.getTimestamp(endTB));
         }
 
-        StreamQueryResponse resp = query(logRecordMetadata,
+        StreamQueryResponse resp = query(LogRecord.INDEX_NAME,
                 ImmutableSet.of(AbstractLogRecord.SERVICE_ID, 
AbstractLogRecord.SERVICE_INSTANCE_ID,
                         AbstractLogRecord.ENDPOINT_ID, 
AbstractLogRecord.TRACE_ID, AbstractLogRecord.TRACE_SEGMENT_ID,
                         AbstractLogRecord.SPAN_ID, 
AbstractLogRecord.CONTENT_TYPE, AbstractLogRecord.CONTENT,
diff --git 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBProfileTaskLogQueryDAO.java
 
b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBProfileTaskLogQueryDAO.java
index 6749118a25..9d22ea36ba 100644
--- 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBProfileTaskLogQueryDAO.java
+++ 
b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBProfileTaskLogQueryDAO.java
@@ -37,9 +37,6 @@ import java.util.List;
  * {@link ProfileTaskLogRecord} is a stream
  */
 public class BanyanDBProfileTaskLogQueryDAO extends AbstractBanyanDBDAO 
implements IProfileTaskLogQueryDAO {
-    private final MetadataRegistry.PartialMetadata profileTaskLogRecord =
-            
MetadataRegistry.INSTANCE.findSchema(ProfileTaskLogRecord.INDEX_NAME);
-
     private final int queryMaxSize;
 
     public BanyanDBProfileTaskLogQueryDAO(BanyanDBStorageClient client, int 
queryMaxSize) {
@@ -49,10 +46,10 @@ public class BanyanDBProfileTaskLogQueryDAO extends 
AbstractBanyanDBDAO implemen
 
     @Override
     public List<ProfileTaskLog> getTaskLogList() throws IOException {
-        StreamQueryResponse resp = query(profileTaskLogRecord,
+        StreamQueryResponse resp = query(ProfileTaskLogRecord.INDEX_NAME,
                 ImmutableSet.of(ProfileTaskLogRecord.OPERATION_TIME, 
ProfileTaskLogRecord.INSTANCE_ID,
                         ProfileTaskLogRecord.TASK_ID, 
ProfileTaskLogRecord.OPERATION_TYPE),
-                new QueryBuilder() {
+                new QueryBuilder<StreamQuery>() {
                     @Override
                     public void apply(StreamQuery query) {
                         
query.setLimit(BanyanDBProfileTaskLogQueryDAO.this.queryMaxSize);
diff --git 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBProfileThreadSnapshotQueryDAO.java
 
b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBProfileThreadSnapshotQueryDAO.java
index a0cacd0c39..d60484b6f0 100644
--- 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBProfileThreadSnapshotQueryDAO.java
+++ 
b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBProfileThreadSnapshotQueryDAO.java
@@ -48,22 +48,16 @@ public class BanyanDBProfileThreadSnapshotQueryDAO extends 
AbstractBanyanDBDAO i
     protected final ProfileThreadSnapshotRecord.Builder builder =
             new ProfileThreadSnapshotRecord.Builder();
 
-    private final MetadataRegistry.PartialMetadata 
profileThreadSnapshotMetadata =
-            
MetadataRegistry.INSTANCE.findSchema(ProfileThreadSnapshotRecord.INDEX_NAME);
-
-    private final MetadataRegistry.PartialMetadata segmentRecordMetadata =
-            MetadataRegistry.INSTANCE.findSchema(SegmentRecord.INDEX_NAME);
-
     public BanyanDBProfileThreadSnapshotQueryDAO(BanyanDBStorageClient client) 
{
         super(client);
     }
 
     @Override
     public List<BasicTrace> queryProfiledSegments(String taskId) throws 
IOException {
-        StreamQueryResponse resp = query(profileThreadSnapshotMetadata,
+        StreamQueryResponse resp = 
query(ProfileThreadSnapshotRecord.INDEX_NAME,
                 ImmutableSet.of(ProfileThreadSnapshotRecord.TASK_ID, 
ProfileThreadSnapshotRecord.SEGMENT_ID,
                         ProfileThreadSnapshotRecord.DUMP_TIME, 
ProfileThreadSnapshotRecord.SEQUENCE),
-                new QueryBuilder() {
+                new QueryBuilder<StreamQuery>() {
                     @Override
                     public void apply(StreamQuery query) {
                         
query.appendCondition(eq(ProfileThreadSnapshotRecord.TASK_ID, taskId))
@@ -83,9 +77,9 @@ public class BanyanDBProfileThreadSnapshotQueryDAO extends 
AbstractBanyanDBDAO i
         // TODO: support `IN` or `OR` logic operation in BanyanDB
         List<BasicTrace> basicTraces = new ArrayList<>();
         for (String segmentID : segmentIds) {
-            final StreamQueryResponse segmentRecordResp = 
query(segmentRecordMetadata,
+            final StreamQueryResponse segmentRecordResp = 
query(SegmentRecord.INDEX_NAME,
                     ImmutableSet.of(SegmentRecord.TRACE_ID, 
SegmentRecord.IS_ERROR, SegmentRecord.ENDPOINT_ID, SegmentRecord.LATENCY, 
SegmentRecord.START_TIME),
-                    new QueryBuilder() {
+                    new QueryBuilder<StreamQuery>() {
                         @Override
                         public void apply(StreamQuery traceQuery) {
                             
traceQuery.appendCondition(eq(SegmentRecord.SEGMENT_ID, segmentID));
@@ -132,11 +126,11 @@ public class BanyanDBProfileThreadSnapshotQueryDAO 
extends AbstractBanyanDBDAO i
 
     @Override
     public List<ProfileThreadSnapshotRecord> queryRecords(String segmentId, 
int minSequence, int maxSequence) throws IOException {
-        StreamQueryResponse resp = query(profileThreadSnapshotMetadata,
+        StreamQueryResponse resp = 
query(ProfileThreadSnapshotRecord.INDEX_NAME,
                 ImmutableSet.of(ProfileThreadSnapshotRecord.TASK_ID, 
ProfileThreadSnapshotRecord.SEGMENT_ID,
                         ProfileThreadSnapshotRecord.DUMP_TIME, 
ProfileThreadSnapshotRecord.SEQUENCE,
                         ProfileThreadSnapshotRecord.STACK_BINARY),
-                new QueryBuilder() {
+                new QueryBuilder<StreamQuery>() {
                     @Override
                     public void apply(StreamQuery query) {
                         
query.appendCondition(eq(ProfileThreadSnapshotRecord.SEGMENT_ID, segmentId))
@@ -148,7 +142,7 @@ public class BanyanDBProfileThreadSnapshotQueryDAO extends 
AbstractBanyanDBDAO i
         List<ProfileThreadSnapshotRecord> result = new ArrayList<>(maxSequence 
- minSequence);
         for (final RowEntity rowEntity : resp.getElements()) {
             ProfileThreadSnapshotRecord record = this.builder.storage2Entity(
-                    new BanyanDBConverter.StreamToEntity(rowEntity));
+                    new 
BanyanDBConverter.StreamToEntity(MetadataRegistry.INSTANCE.findMetadata(ProfileThreadSnapshotRecord.INDEX_NAME),
 rowEntity));
 
             result.add(record);
         }
@@ -157,11 +151,11 @@ public class BanyanDBProfileThreadSnapshotQueryDAO 
extends AbstractBanyanDBDAO i
 
     @Override
     public SegmentRecord getProfiledSegment(String segmentId) throws 
IOException {
-        StreamQueryResponse resp = query(segmentRecordMetadata,
+        StreamQueryResponse resp = query(SegmentRecord.INDEX_NAME,
                 ImmutableSet.of(SegmentRecord.TRACE_ID, 
SegmentRecord.IS_ERROR, SegmentRecord.SERVICE_ID,
                         SegmentRecord.SERVICE_INSTANCE_ID, 
SegmentRecord.ENDPOINT_ID, SegmentRecord.LATENCY,
                         SegmentRecord.START_TIME, SegmentRecord.DATA_BINARY),
-                new QueryBuilder() {
+                new QueryBuilder<StreamQuery>() {
                     @Override
                     public void apply(StreamQuery query) {
                         query.appendCondition(eq(SegmentRecord.INDEX_NAME, 
segmentId));
@@ -191,11 +185,11 @@ public class BanyanDBProfileThreadSnapshotQueryDAO 
extends AbstractBanyanDBDAO i
     }
 
     private int querySequenceWithAgg(AggType aggType, String segmentId, long 
start, long end) throws IOException {
-        StreamQueryResponse resp = query(profileThreadSnapshotMetadata,
+        StreamQueryResponse resp = 
query(ProfileThreadSnapshotRecord.INDEX_NAME,
                 ImmutableSet.of(ProfileThreadSnapshotRecord.TASK_ID, 
ProfileThreadSnapshotRecord.SEGMENT_ID,
                         ProfileThreadSnapshotRecord.DUMP_TIME, 
ProfileThreadSnapshotRecord.SEQUENCE,
                         ProfileThreadSnapshotRecord.STACK_BINARY),
-                new QueryBuilder() {
+                new QueryBuilder<StreamQuery>() {
                     @Override
                     public void apply(StreamQuery query) {
                         
query.appendCondition(eq(ProfileThreadSnapshotRecord.SEGMENT_ID, segmentId))
@@ -207,7 +201,7 @@ public class BanyanDBProfileThreadSnapshotQueryDAO extends 
AbstractBanyanDBDAO i
         List<ProfileThreadSnapshotRecord> records = new ArrayList<>();
         for (final RowEntity rowEntity : resp.getElements()) {
             ProfileThreadSnapshotRecord record = this.builder.storage2Entity(
-                    new BanyanDBConverter.StreamToEntity(rowEntity));
+                    new 
BanyanDBConverter.StreamToEntity(MetadataRegistry.INSTANCE.findMetadata(ProfileThreadSnapshotRecord.INDEX_NAME),
 rowEntity));
 
             records.add(record);
         }
diff --git 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBRecordDAO.java
 
b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBRecordDAO.java
index 3fe0e03ef7..48443b9e51 100644
--- 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBRecordDAO.java
+++ 
b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBRecordDAO.java
@@ -38,11 +38,11 @@ public class BanyanDBRecordDAO implements IRecordDAO {
 
     @Override
     public InsertRequest prepareBatchInsert(Model model, Record record) throws 
IOException {
-        MetadataRegistry.PartialMetadata metadata = 
MetadataRegistry.INSTANCE.findSchema(model.getName());
-        if (metadata == null) {
+        MetadataRegistry.Schema schema = 
MetadataRegistry.INSTANCE.findMetadata(model.getName());
+        if (schema == null) {
             throw new IOException(model.getName() + " is not registered");
         }
-        StreamWrite streamWrite = new StreamWrite(metadata.getGroup(), // 
group name
+        StreamWrite streamWrite = new 
StreamWrite(schema.getMetadata().getGroup(), // group name
                 model.getName(), // index-name
                 record.id(), // identity
                 TimeBucket.getTimestamp(record.getTimeBucket(), 
model.getDownsampling())); // timestamp
diff --git 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBTraceQueryDAO.java
 
b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBTraceQueryDAO.java
index e149b5ab27..b7e7d215ae 100644
--- 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBTraceQueryDAO.java
+++ 
b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBTraceQueryDAO.java
@@ -46,16 +46,13 @@ import java.util.Collections;
 import java.util.List;
 
 public class BanyanDBTraceQueryDAO extends AbstractBanyanDBDAO implements 
ITraceQueryDAO {
-    private final MetadataRegistry.PartialMetadata segmentRecordMetadata =
-            MetadataRegistry.INSTANCE.findSchema(SegmentRecord.INDEX_NAME);
-
     public BanyanDBTraceQueryDAO(BanyanDBStorageClient client) {
         super(client);
     }
 
     @Override
     public TraceBrief queryBasicTraces(long startSecondTB, long endSecondTB, 
long minDuration, long maxDuration, String serviceId, String serviceInstanceId, 
String endpointId, String traceId, int limit, int from, TraceState traceState, 
QueryOrder queryOrder, List<Tag> tags) throws IOException {
-        final QueryBuilder q = new QueryBuilder() {
+        final QueryBuilder<StreamQuery> q = new QueryBuilder<StreamQuery>() {
             @Override
             public void apply(StreamQuery query) {
                 if (minDuration != 0) {
@@ -115,7 +112,7 @@ public class BanyanDBTraceQueryDAO extends 
AbstractBanyanDBDAO implements ITrace
             tsRange = new 
TimestampRange(TimeBucket.getTimestamp(startSecondTB), 
TimeBucket.getTimestamp(endSecondTB));
         }
 
-        StreamQueryResponse resp = query(segmentRecordMetadata,
+        StreamQueryResponse resp = query(SegmentRecord.INDEX_NAME,
                 ImmutableSet.of(SegmentRecord.TRACE_ID, // 0 - trace_id
                         SegmentRecord.IS_ERROR, // 1 - is_error
                         SegmentRecord.SERVICE_ID, // 2 - service_id
@@ -150,7 +147,7 @@ public class BanyanDBTraceQueryDAO extends 
AbstractBanyanDBDAO implements ITrace
 
     @Override
     public List<SegmentRecord> queryByTraceId(String traceId) throws 
IOException {
-        StreamQueryResponse resp = query(segmentRecordMetadata,
+        StreamQueryResponse resp = query(SegmentRecord.INDEX_NAME,
                 ImmutableSet.of(SegmentRecord.TRACE_ID,
                         SegmentRecord.IS_ERROR,
                         SegmentRecord.SERVICE_ID,
@@ -159,7 +156,7 @@ public class BanyanDBTraceQueryDAO extends 
AbstractBanyanDBDAO implements ITrace
                         SegmentRecord.LATENCY,
                         SegmentRecord.START_TIME,
                         SegmentRecord.DATA_BINARY),
-                new QueryBuilder() {
+                new QueryBuilder<StreamQuery>() {
                     @Override
                     public void apply(StreamQuery query) {
                         query.appendCondition(eq(SegmentRecord.TRACE_ID, 
traceId));
@@ -170,7 +167,7 @@ public class BanyanDBTraceQueryDAO extends 
AbstractBanyanDBDAO implements ITrace
 
         for (final RowEntity rowEntity : resp.getElements()) {
             SegmentRecord segmentRecord = new 
SegmentRecord.Builder().storage2Entity(
-                    new BanyanDBConverter.StreamToEntity(rowEntity));
+                    new 
BanyanDBConverter.StreamToEntity(MetadataRegistry.INSTANCE.findMetadata(SegmentRecord.INDEX_NAME),
 rowEntity));
             segmentRecords.add(segmentRecord);
         }
 
diff --git 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/util/ByteUtil.java
 
b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/util/ByteUtil.java
new file mode 100644
index 0000000000..5ae1102e38
--- /dev/null
+++ 
b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/util/ByteUtil.java
@@ -0,0 +1,33 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+package org.apache.skywalking.oap.server.storage.plugin.banyandb.util;
+
+import java.nio.ByteBuffer;
+
+public class ByteUtil {
+    private static final ThreadLocal<ByteBuffer> BYTE_BUFFER = 
ThreadLocal.withInitial(() -> ByteBuffer.allocate(8));
+
+    public static Double bytes2Double(byte[] bytes) {
+        return BYTE_BUFFER.get().put(bytes).getDouble();
+    }
+
+    public static byte[] double2Bytes(double number) {
+        return BYTE_BUFFER.get().putDouble(number).array();
+    }
+}
diff --git 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/endpoint_relation_server_side.json
 
b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/endpoint_relation_server_side.json
deleted file mode 100644
index 2a203c1679..0000000000
--- 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/endpoint_relation_server_side.json
+++ /dev/null
@@ -1,41 +0,0 @@
-{
-  "metadata": {
-    "name": "endpoint_relation_server_side",
-    "group": "default-stream"
-  },
-  "tag_families": [
-    {
-      "name": "data",
-      "tags": [
-        {
-          "name": "component_id",
-          "type": "TAG_TYPE_INT"
-        }
-      ]
-    },
-    {
-      "name": "searchable",
-      "tags": [
-        {
-          "name": "source_endpoint",
-          "type": "TAG_TYPE_STRING"
-        },
-        {
-          "name": "dest_endpoint",
-          "type": "TAG_TYPE_STRING"
-        },
-        {
-          "name": "entity_id",
-          "type": "TAG_TYPE_STRING"
-        }
-      ]
-    }
-  ],
-  "entity": {
-    "tag_names": [
-      "source_endpoint",
-      "dest_endpoint"
-    ]
-  },
-  "updated_at": "2021-04-15T01:30:15.01Z"
-}
\ No newline at end of file
diff --git 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/endpoint_traffic.json
 
b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/endpoint_traffic.json
deleted file mode 100644
index 459b77d808..0000000000
--- 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/endpoint_traffic.json
+++ /dev/null
@@ -1,31 +0,0 @@
-{
-  "metadata": {
-    "name": "endpoint_traffic",
-    "group": "default-stream"
-  },
-  "tag_families": [
-    {
-      "name": "data",
-      "tags": []
-    },
-    {
-      "name": "searchable",
-      "tags": [
-        {
-          "name": "service_id",
-          "type": "TAG_TYPE_STRING"
-        },
-        {
-          "name": "name",
-          "type": "TAG_TYPE_STRING"
-        }
-      ]
-    }
-  ],
-  "entity": {
-    "tag_names": [
-      "service_id"
-    ]
-  },
-  "updated_at": "2021-04-15T01:30:15.01Z"
-}
\ No newline at end of file
diff --git 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/events.json
 
b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/events.json
deleted file mode 100644
index 37a02eca24..0000000000
--- 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/events.json
+++ /dev/null
@@ -1,64 +0,0 @@
-{
-  "metadata": {
-    "name": "events",
-    "group": "default-stream"
-  },
-  "tag_families": [
-    {
-      "name": "data",
-      "tags": [
-        {
-          "name": "message",
-          "type": "TAG_TYPE_STRING"
-        },
-        {
-          "name": "parameters",
-          "type": "TAG_TYPE_STRING"
-        }
-      ]
-    },
-    {
-      "name": "searchable",
-      "tags": [
-        {
-          "name": "uuid",
-          "type": "TAG_TYPE_STRING"
-        },
-        {
-          "name": "service",
-          "type": "TAG_TYPE_STRING"
-        },
-        {
-          "name": "service_instance",
-          "type": "TAG_TYPE_STRING"
-        },
-        {
-          "name": "endpoint",
-          "type": "TAG_TYPE_STRING"
-        },
-        {
-          "name": "name",
-          "type": "TAG_TYPE_STRING"
-        },
-        {
-          "name": "type",
-          "type": "TAG_TYPE_STRING"
-        },
-        {
-          "name": "start_time",
-          "type": "TAG_TYPE_INT"
-        },
-        {
-          "name": "end_time",
-          "type": "TAG_TYPE_INT"
-        }
-      ]
-    }
-  ],
-  "entity": {
-    "tag_names": [
-      "uuid"
-    ]
-  },
-  "updated_at": "2021-04-15T01:30:15.01Z"
-}
\ No newline at end of file
diff --git 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/component_id.json
 
b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/component_id.json
deleted file mode 100644
index 9b52f22ba2..0000000000
--- 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/component_id.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
-  "metadata": {
-    "name": "component_id",
-    "group": "default"
-  },
-  "tags": [
-    "component_id"
-  ],
-  "type": "TYPE_INVERTED",
-  "location": "LOCATION_SERIES",
-  "updated_at": "2021-04-15T01:30:15.01Z"
-}
diff --git 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/create_time.json
 
b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/create_time.json
deleted file mode 100644
index addab64e17..0000000000
--- 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/create_time.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
-  "metadata": {
-    "name": "create_time",
-    "group": "default"
-  },
-  "tags": [
-    "create_time"
-  ],
-  "type": "TYPE_TREE",
-  "location": "LOCATION_SERIES",
-  "updated_at": "2021-04-15T01:30:15.01Z"
-}
diff --git 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/db.instance.json
 
b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/db.instance.json
deleted file mode 100644
index 5d5c159c39..0000000000
--- 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/db.instance.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
-  "metadata": {
-    "name": "db.instance",
-    "group": "default"
-  },
-  "tags": [
-    "db.instance"
-  ],
-  "type": "TYPE_INVERTED",
-  "location": "LOCATION_SERIES",
-  "updated_at": "2021-04-15T01:30:15.01Z"
-}
diff --git 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/db.type.json
 
b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/db.type.json
deleted file mode 100644
index 67914ee464..0000000000
--- 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/db.type.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
-  "metadata": {
-    "name": "db.type",
-    "group": "default"
-  },
-  "tags": [
-    "db.type"
-  ],
-  "type": "TYPE_INVERTED",
-  "location": "LOCATION_SERIES",
-  "updated_at": "2021-04-15T01:30:15.01Z"
-}
diff --git 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/dest_endpoint.json
 
b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/dest_endpoint.json
deleted file mode 100644
index affb1fdf17..0000000000
--- 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/dest_endpoint.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
-  "metadata": {
-    "name": "dest_endpoint",
-    "group": "default"
-  },
-  "tags": [
-    "dest_endpoint"
-  ],
-  "type": "TYPE_INVERTED",
-  "location": "LOCATION_SERIES",
-  "updated_at": "2021-04-15T01:30:15.01Z"
-}
diff --git 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/dest_service_id.json
 
b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/dest_service_id.json
deleted file mode 100644
index 3bb400392e..0000000000
--- 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/dest_service_id.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
-  "metadata": {
-    "name": "dest_service_id",
-    "group": "default"
-  },
-  "tags": [
-    "dest_service_id"
-  ],
-  "type": "TYPE_INVERTED",
-  "location": "LOCATION_SERIES",
-  "updated_at": "2021-04-15T01:30:15.01Z"
-}
diff --git 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/disabled.json
 
b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/disabled.json
deleted file mode 100644
index 19a1c1b204..0000000000
--- 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/disabled.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
-  "metadata": {
-    "name": "disabled",
-    "group": "default"
-  },
-  "tags": [
-    "disabled"
-  ],
-  "type": "TYPE_TREE",
-  "location": "LOCATION_SERIES",
-  "updated_at": "2021-04-15T01:30:15.01Z"
-}
diff --git 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/dump_period.json
 
b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/dump_period.json
deleted file mode 100644
index 25ae87f411..0000000000
--- 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/dump_period.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
-  "metadata": {
-    "name": "dump_period",
-    "group": "default"
-  },
-  "tags": [
-    "dump_period"
-  ],
-  "type": "TYPE_TREE",
-  "location": "LOCATION_SERIES",
-  "updated_at": "2021-04-15T01:30:15.01Z"
-}
diff --git 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/dump_time.json
 
b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/dump_time.json
deleted file mode 100644
index 6073ee7740..0000000000
--- 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/dump_time.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
-  "metadata": {
-    "name": "dump_time",
-    "group": "default"
-  },
-  "tags": [
-    "dump_time"
-  ],
-  "type": "TYPE_TREE",
-  "location": "LOCATION_SERIES",
-  "updated_at": "2021-04-15T01:30:15.01Z"
-}
diff --git 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/duration.json
 
b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/duration.json
deleted file mode 100644
index 6f18db1359..0000000000
--- 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/duration.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
-  "metadata": {
-    "name": "duration",
-    "group": "default"
-  },
-  "tags": [
-    "duration"
-  ],
-  "type": "TYPE_TREE",
-  "location": "LOCATION_SERIES",
-  "updated_at": "2021-04-15T01:30:15.01Z"
-}
diff --git 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/end_time.json
 
b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/end_time.json
deleted file mode 100644
index 951a1c88b9..0000000000
--- 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/end_time.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
-  "metadata": {
-    "name": "end_time",
-    "group": "default"
-  },
-  "tags": [
-    "end_time"
-  ],
-  "type": "TYPE_TREE",
-  "location": "LOCATION_SERIES",
-  "updated_at": "2021-04-15T01:30:15.01Z"
-}
diff --git 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/endpoint.json
 
b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/endpoint.json
deleted file mode 100644
index f9fefdddf0..0000000000
--- 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/endpoint.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
-  "metadata": {
-    "name": "endpoint",
-    "group": "default"
-  },
-  "tags": [
-    "endpoint"
-  ],
-  "type": "TYPE_INVERTED",
-  "location": "LOCATION_SERIES",
-  "updated_at": "2021-04-15T01:30:15.01Z"
-}
diff --git 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/endpoint_id.json
 
b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/endpoint_id.json
deleted file mode 100644
index 7da3b0d2f5..0000000000
--- 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/endpoint_id.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
-  "metadata": {
-    "name": "endpoint_id",
-    "group": "default"
-  },
-  "tags": [
-    "endpoint_id"
-  ],
-  "type": "TYPE_INVERTED",
-  "location": "LOCATION_SERIES",
-  "updated_at": "2021-04-15T01:30:15.01Z"
-}
diff --git 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/endpoint_name.json
 
b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/endpoint_name.json
deleted file mode 100644
index 0678ae4691..0000000000
--- 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/endpoint_name.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
-  "metadata": {
-    "name": "endpoint_name",
-    "group": "default"
-  },
-  "tags": [
-    "endpoint_name"
-  ],
-  "type": "TYPE_INVERTED",
-  "location": "LOCATION_SERIES",
-  "updated_at": "2021-04-15T01:30:15.01Z"
-}
diff --git 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/entity_id.json
 
b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/entity_id.json
deleted file mode 100644
index 31ece658a6..0000000000
--- 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/entity_id.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
-  "metadata": {
-    "name": "entity_id",
-    "group": "default"
-  },
-  "tags": [
-    "entity_id"
-  ],
-  "type": "TYPE_INVERTED",
-  "location": "LOCATION_SERIES",
-  "updated_at": "2021-04-15T01:30:15.01Z"
-}
diff --git 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/http.method.json
 
b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/http.method.json
deleted file mode 100644
index 3001154bfc..0000000000
--- 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/http.method.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
-  "metadata": {
-    "name": "http.method",
-    "group": "default"
-  },
-  "tags": [
-    "http.method"
-  ],
-  "type": "TYPE_INVERTED",
-  "location": "LOCATION_SERIES",
-  "updated_at": "2021-04-15T01:30:15.01Z"
-}
diff --git 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/id.json
 
b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/id.json
deleted file mode 100644
index c90b39ac62..0000000000
--- 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/id.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
-  "metadata": {
-    "name": "id",
-    "group": "default"
-  },
-  "tags": [
-    "id"
-  ],
-  "type": "TYPE_INVERTED",
-  "location": "LOCATION_SERIES",
-  "updated_at": "2021-04-15T01:30:15.01Z"
-}
diff --git 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/last_ping.json
 
b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/last_ping.json
deleted file mode 100644
index 7d063b2dd4..0000000000
--- 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/last_ping.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
-  "metadata": {
-    "name": "last_ping",
-    "group": "default"
-  },
-  "tags": [
-    "last_ping"
-  ],
-  "type": "TYPE_TREE",
-  "location": "LOCATION_SERIES",
-  "updated_at": "2021-04-15T01:30:15.01Z"
-}
\ No newline at end of file
diff --git 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/last_update_time_bucket.json
 
b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/last_update_time_bucket.json
deleted file mode 100644
index bbde5cf37b..0000000000
--- 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/last_update_time_bucket.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
-  "metadata": {
-    "name": "last_update_time_bucket",
-    "group": "default"
-  },
-  "tags": [
-    "last_update_time_bucket"
-  ],
-  "type": "TYPE_TREE",
-  "location": "LOCATION_SERIES",
-  "updated_at": "2021-04-15T01:30:15.01Z"
-}
\ No newline at end of file
diff --git 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/latency.json
 
b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/latency.json
deleted file mode 100644
index 4eb445055f..0000000000
--- 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/latency.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
-  "metadata": {
-    "name": "latency",
-    "group": "default"
-  },
-  "tags": [
-    "latency"
-  ],
-  "type": "TYPE_TREE",
-  "location": "LOCATION_SERIES",
-  "updated_at": "2021-04-15T01:30:15.01Z"
-}
diff --git 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/layer.json
 
b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/layer.json
deleted file mode 100644
index 05455e1d6b..0000000000
--- 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/layer.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
-  "metadata": {
-    "name": "layer",
-    "group": "default"
-  },
-  "tags": [
-    "layer"
-  ],
-  "type": "TYPE_INVERTED",
-  "location": "LOCATION_SERIES",
-  "updated_at": "2021-04-15T01:30:15.01Z"
-}
diff --git 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/max_sampling_count.json
 
b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/max_sampling_count.json
deleted file mode 100644
index 1fb14a84c2..0000000000
--- 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/max_sampling_count.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
-  "metadata": {
-    "name": "max_sampling_count",
-    "group": "default"
-  },
-  "tags": [
-    "max_sampling_count"
-  ],
-  "type": "TYPE_TREE",
-  "location": "LOCATION_SERIES",
-  "updated_at": "2021-04-15T01:30:15.01Z"
-}
diff --git 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/min_duration_threshold.json
 
b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/min_duration_threshold.json
deleted file mode 100644
index f359e2d5ba..0000000000
--- 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/min_duration_threshold.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
-  "metadata": {
-    "name": "min_duration_threshold",
-    "group": "default"
-  },
-  "tags": [
-    "min_duration_threshold"
-  ],
-  "type": "TYPE_TREE",
-  "location": "LOCATION_SERIES",
-  "updated_at": "2021-04-15T01:30:15.01Z"
-}
diff --git 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/mq.broker.json
 
b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/mq.broker.json
deleted file mode 100644
index 0cfbd278dd..0000000000
--- 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/mq.broker.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
-  "metadata": {
-    "name": "mq.broker",
-    "group": "default"
-  },
-  "tags": [
-    "mq.broker"
-  ],
-  "type": "TYPE_INVERTED",
-  "location": "LOCATION_SERIES",
-  "updated_at": "2021-04-15T01:30:15.01Z"
-}
diff --git 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/mq.queue.json
 
b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/mq.queue.json
deleted file mode 100644
index 0c589fc6e4..0000000000
--- 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/mq.queue.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
-  "metadata": {
-    "name": "mq.queue",
-    "group": "default"
-  },
-  "tags": [
-    "mq.queue"
-  ],
-  "type": "TYPE_INVERTED",
-  "location": "LOCATION_SERIES",
-  "updated_at": "2021-04-15T01:30:15.01Z"
-}
diff --git 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/mq.topic.json
 
b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/mq.topic.json
deleted file mode 100644
index 5dc51fcf66..0000000000
--- 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/mq.topic.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
-  "metadata": {
-    "name": "mq.topic",
-    "group": "default"
-  },
-  "tags": [
-    "mq.topic"
-  ],
-  "type": "TYPE_INVERTED",
-  "location": "LOCATION_SERIES",
-  "updated_at": "2021-04-15T01:30:15.01Z"
-}
diff --git 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/name.json
 
b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/name.json
deleted file mode 100644
index db25d029f2..0000000000
--- 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/name.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
-  "metadata": {
-    "name": "name",
-    "group": "default"
-  },
-  "tags": [
-    "name"
-  ],
-  "type": "TYPE_INVERTED",
-  "location": "LOCATION_SERIES",
-  "updated_at": "2021-04-15T01:30:15.01Z"
-}
diff --git 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/operation_time.json
 
b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/operation_time.json
deleted file mode 100644
index 30222bc484..0000000000
--- 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/operation_time.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
-  "metadata": {
-    "name": "operation_time",
-    "group": "default"
-  },
-  "tags": [
-    "operation_time"
-  ],
-  "type": "TYPE_TREE",
-  "location": "LOCATION_SERIES",
-  "updated_at": "2021-04-15T01:30:15.01Z"
-}
diff --git 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/segment_id.json
 
b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/segment_id.json
deleted file mode 100644
index a58129eab2..0000000000
--- 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/segment_id.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
-  "metadata": {
-    "name": "segment_id",
-    "group": "default"
-  },
-  "tags": [
-    "segment_id"
-  ],
-  "type": "TYPE_INVERTED",
-  "location": "LOCATION_SERIES",
-  "updated_at": "2021-04-15T01:30:15.01Z"
-}
diff --git 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/sequence.json
 
b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/sequence.json
deleted file mode 100644
index 2bbd960809..0000000000
--- 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/sequence.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
-  "metadata": {
-    "name": "sequence",
-    "group": "default"
-  },
-  "tags": [
-    "sequence"
-  ],
-  "type": "TYPE_TREE",
-  "location": "LOCATION_SERIES",
-  "updated_at": "2021-04-15T01:30:15.01Z"
-}
diff --git 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/service.json
 
b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/service.json
deleted file mode 100644
index 4764f16eca..0000000000
--- 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/service.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
-  "metadata": {
-    "name": "service",
-    "group": "default"
-  },
-  "tags": [
-    "service"
-  ],
-  "type": "TYPE_INVERTED",
-  "location": "LOCATION_SERIES",
-  "updated_at": "2021-04-15T01:30:15.01Z"
-}
diff --git 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/service_group.json
 
b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/service_group.json
deleted file mode 100644
index 3cecbefa13..0000000000
--- 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/service_group.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
-  "metadata": {
-    "name": "service_group",
-    "group": "default"
-  },
-  "tags": [
-    "service_group"
-  ],
-  "type": "TYPE_INVERTED",
-  "location": "LOCATION_SERIES",
-  "updated_at": "2021-04-15T01:30:15.01Z"
-}
diff --git 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/service_id.json
 
b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/service_id.json
deleted file mode 100644
index 76c3f67d22..0000000000
--- 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/service_id.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
-  "metadata": {
-    "name": "service_id",
-    "group": "default"
-  },
-  "tags": [
-    "service_id"
-  ],
-  "type": "TYPE_INVERTED",
-  "location": "LOCATION_SERIES",
-  "updated_at": "2021-04-15T01:30:15.01Z"
-}
diff --git 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/service_instance.json
 
b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/service_instance.json
deleted file mode 100644
index 73d84e7151..0000000000
--- 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/service_instance.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
-  "metadata": {
-    "name": "service_instance",
-    "group": "default"
-  },
-  "tags": [
-    "service_instance"
-  ],
-  "type": "TYPE_INVERTED",
-  "location": "LOCATION_SERIES",
-  "updated_at": "2021-04-15T01:30:15.01Z"
-}
diff --git 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/source_endpoint.json
 
b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/source_endpoint.json
deleted file mode 100644
index 164962f91c..0000000000
--- 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/source_endpoint.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
-  "metadata": {
-    "name": "source_endpoint",
-    "group": "default"
-  },
-  "tags": [
-    "source_endpoint"
-  ],
-  "type": "TYPE_INVERTED",
-  "location": "LOCATION_SERIES",
-  "updated_at": "2021-04-15T01:30:15.01Z"
-}
diff --git 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/source_service_id.json
 
b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/source_service_id.json
deleted file mode 100644
index f54b191164..0000000000
--- 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/source_service_id.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
-  "metadata": {
-    "name": "source_service_id",
-    "group": "default"
-  },
-  "tags": [
-    "component_id"
-  ],
-  "type": "TYPE_INVERTED",
-  "location": "LOCATION_SERIES",
-  "updated_at": "2021-04-15T01:30:15.01Z"
-}
diff --git 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/start_time.json
 
b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/start_time.json
deleted file mode 100644
index 5a73ad12f4..0000000000
--- 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/start_time.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
-  "metadata": {
-    "name": "start_time",
-    "group": "default"
-  },
-  "tags": [
-    "start_time"
-  ],
-  "type": "TYPE_TREE",
-  "location": "LOCATION_SERIES",
-  "updated_at": "2021-04-15T01:30:15.01Z"
-}
diff --git 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/status_code.json
 
b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/status_code.json
deleted file mode 100644
index ad034773f5..0000000000
--- 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/status_code.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
-  "metadata": {
-    "name": "status_code",
-    "group": "default"
-  },
-  "tags": [
-    "status_code"
-  ],
-  "type": "TYPE_INVERTED",
-  "location": "LOCATION_SERIES",
-  "updated_at": "2021-04-15T01:30:15.01Z"
-}
diff --git 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/trace_id.json
 
b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/trace_id.json
deleted file mode 100644
index 2f84bfb489..0000000000
--- 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/trace_id.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
-  "metadata": {
-    "name": "trace_id",
-    "group": "default"
-  },
-  "tags": [
-    "trace_id"
-  ],
-  "type": "TYPE_TREE",
-  "location": "LOCATION_GLOBAL",
-  "updated_at": "2021-04-15T01:30:15.01Z"
-}
diff --git 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/type.json
 
b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/type.json
deleted file mode 100644
index db25d029f2..0000000000
--- 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/type.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
-  "metadata": {
-    "name": "name",
-    "group": "default"
-  },
-  "tags": [
-    "name"
-  ],
-  "type": "TYPE_INVERTED",
-  "location": "LOCATION_SERIES",
-  "updated_at": "2021-04-15T01:30:15.01Z"
-}
diff --git 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/uuid.json
 
b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/uuid.json
deleted file mode 100644
index 4cd401c3dc..0000000000
--- 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/uuid.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
-  "metadata": {
-    "name": "uuid",
-    "group": "default"
-  },
-  "tags": [
-    "uuid"
-  ],
-  "type": "TYPE_INVERTED",
-  "location": "LOCATION_SERIES",
-  "updated_at": "2021-04-15T01:30:15.01Z"
-}
diff --git 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/instance_traffic.json
 
b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/instance_traffic.json
deleted file mode 100644
index fc728af744..0000000000
--- 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/instance_traffic.json
+++ /dev/null
@@ -1,40 +0,0 @@
-{
-  "metadata": {
-    "name": "instance_traffic",
-    "group": "default-stream"
-  },
-  "tag_families": [
-    {
-      "name": "data",
-      "tags": [
-        {
-          "name": "data_binary",
-          "type": "TAG_TYPE_DATA_BINARY"
-        }
-      ]
-    },
-    {
-      "name": "searchable",
-      "tags": [
-        {
-          "name": "service_id",
-          "type": "TAG_TYPE_STRING"
-        },
-        {
-          "name": "last_ping",
-          "type": "TAG_TYPE_INT"
-        },
-        {
-          "name": "id",
-          "type": "TAG_TYPE_STRING"
-        }
-      ]
-    }
-  ],
-  "entity": {
-    "tag_names": [
-      "service_id"
-    ]
-  },
-  "updated_at": "2021-04-15T01:30:15.01Z"
-}
\ No newline at end of file
diff --git 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/network_address_alias.json
 
b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/network_address_alias.json
deleted file mode 100644
index 0dc6f344c0..0000000000
--- 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/network_address_alias.json
+++ /dev/null
@@ -1,45 +0,0 @@
-{
-  "metadata": {
-    "name": "network_address_alias",
-    "group": "default-stream"
-  },
-  "tag_families": [
-    {
-      "name": "data",
-      "tags": [
-        {
-          "name": "time_bucket",
-          "type": "TAG_TYPE_INT"
-        },
-        {
-          "name": "address",
-          "type": "TAG_TYPE_STRING"
-        },
-        {
-          "name": "represent_service_id",
-          "type": "TAG_TYPE_STRING"
-        },
-        {
-          "name": "represent_service_instance_id",
-          "type": "TAG_TYPE_STRING"
-        }
-      ]
-    },
-    {
-      "name": "searchable",
-      "tags": [
-        {
-          "name": "last_update_time_bucket",
-          "type": "TAG_TYPE_INT"
-        }
-      ]
-    }
-  ],
-  "entity": {
-    "tag_names": [
-      "represent_service_id",
-      "represent_service_instance_id"
-    ]
-  },
-  "updated_at": "2021-04-15T01:30:15.01Z"
-}
\ No newline at end of file
diff --git 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/profile_task.json
 
b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/profile_task.json
deleted file mode 100644
index 85c5901c8c..0000000000
--- 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/profile_task.json
+++ /dev/null
@@ -1,59 +0,0 @@
-{
-  "metadata": {
-    "name": "profile_task",
-    "group": "default-stream"
-  },
-  "tag_families": [
-    {
-      "name": "data",
-      "tags": []
-    },
-    {
-      "name": "searchable",
-      "tags": [
-        {
-          "name": "id",
-          "type": "TAG_TYPE_STRING"
-        },
-        {
-          "name": "service_id",
-          "type": "TAG_TYPE_STRING"
-        },
-        {
-          "name": "endpoint_name",
-          "type": "TAG_TYPE_STRING"
-        },
-        {
-          "name": "start_time",
-          "type": "TAG_TYPE_INT"
-        },
-        {
-          "name": "duration",
-          "type": "TAG_TYPE_INT"
-        },
-        {
-          "name": "min_duration_threshold",
-          "type": "TAG_TYPE_INT"
-        },
-        {
-          "name": "dump_period",
-          "type": "TAG_TYPE_INT"
-        },
-        {
-          "name": "create_time",
-          "type": "TAG_TYPE_INT"
-        },
-        {
-          "name": "max_sampling_count",
-          "type": "TAG_TYPE_INT"
-        }
-      ]
-    }
-  ],
-  "entity": {
-    "tag_names": [
-      "service_id"
-    ]
-  },
-  "updated_at": "2021-04-15T01:30:15.01Z"
-}
\ No newline at end of file
diff --git 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/profile_task_log.json
 
b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/profile_task_log.json
deleted file mode 100644
index 6fa6ccb244..0000000000
--- 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/profile_task_log.json
+++ /dev/null
@@ -1,40 +0,0 @@
-{
-  "metadata": {
-    "name": "profile_task_log",
-    "group": "default-stream"
-  },
-  "tag_families": [
-    {
-      "name": "data",
-      "tags": [
-        {
-          "name": "task_id",
-          "type": "TAG_TYPE_STRING"
-        },
-        {
-          "name": "operation_type",
-          "type": "TAG_TYPE_INT"
-        }
-      ]
-    },
-    {
-      "name": "searchable",
-      "tags": [
-        {
-          "name": "operation_time",
-          "type": "TAG_TYPE_INT"
-        },
-        {
-          "name": "instance_id",
-          "type": "TAG_TYPE_STRING"
-        }
-      ]
-    }
-  ],
-  "entity": {
-    "tag_names": [
-      "instance_id"
-    ]
-  },
-  "updated_at": "2021-04-15T01:30:15.01Z"
-}
\ No newline at end of file
diff --git 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/profile_task_segment_snapshot.json
 
b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/profile_task_segment_snapshot.json
deleted file mode 100644
index a5fcbcbf5c..0000000000
--- 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/profile_task_segment_snapshot.json
+++ /dev/null
@@ -1,44 +0,0 @@
-{
-  "metadata": {
-    "name": "profile_task_segment_snapshot",
-    "group": "default-stream"
-  },
-  "tag_families": [
-    {
-      "name": "data",
-      "tags": [
-        {
-          "name": "stack_binary",
-          "type": "TAG_TYPE_DATA_BINARY"
-        }
-      ]
-    },
-    {
-      "name": "searchable",
-      "tags": [
-        {
-          "name": "task_id",
-          "type": "TAG_TYPE_STRING"
-        },
-        {
-          "name": "segment_id",
-          "type": "TAG_TYPE_STRING"
-        },
-        {
-          "name": "dump_time",
-          "type": "TAG_TYPE_INT"
-        },
-        {
-          "name": "sequence",
-          "type": "TAG_TYPE_INT"
-        }
-      ]
-    }
-  ],
-  "entity": {
-    "tag_names": [
-      "task_id"
-    ]
-  },
-  "updated_at": "2021-04-15T01:30:15.01Z"
-}
\ No newline at end of file
diff --git 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/segment.json
 
b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/segment.json
deleted file mode 100644
index 7a8343d45c..0000000000
--- 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/segment.json
+++ /dev/null
@@ -1,86 +0,0 @@
-{
-  "metadata": {
-    "name": "segment",
-    "group": "default-stream"
-  },
-  "tag_families": [
-    {
-      "name": "data",
-      "tags": [
-        {
-          "name": "data_binary",
-          "type": "TAG_TYPE_DATA_BINARY"
-        }
-      ]
-    },
-    {
-      "name": "searchable",
-      "tags": [
-        {
-          "name": "trace_id",
-          "type": "TAG_TYPE_STRING"
-        },
-        {
-          "name": "is_error",
-          "type": "TAG_TYPE_INT"
-        },
-        {
-          "name": "service_id",
-          "type": "TAG_TYPE_STRING"
-        },
-        {
-          "name": "service_instance_id",
-          "type": "TAG_TYPE_STRING"
-        },
-        {
-          "name": "endpoint_id",
-          "type": "TAG_TYPE_STRING"
-        },
-        {
-          "name": "latency",
-          "type": "TAG_TYPE_INT"
-        },
-        {
-          "name": "start_time",
-          "type": "TAG_TYPE_INT"
-        },
-        {
-          "name": "http.method",
-          "type": "TAG_TYPE_STRING"
-        },
-        {
-          "name": "status_code",
-          "type": "TAG_TYPE_STRING"
-        },
-        {
-          "name": "db.type",
-          "type": "TAG_TYPE_STRING"
-        },
-        {
-          "name": "db.instance",
-          "type": "TAG_TYPE_STRING"
-        },
-        {
-          "name": "mq.queue",
-          "type": "TAG_TYPE_STRING"
-        },
-        {
-          "name": "mq.topic",
-          "type": "TAG_TYPE_STRING"
-        },
-        {
-          "name": "mq.broker",
-          "type": "TAG_TYPE_STRING"
-        }
-      ]
-    }
-  ],
-  "entity": {
-    "tag_names": [
-      "service_id",
-      "service_instance_id",
-      "is_error"
-    ]
-  },
-  "updated_at": "2021-04-15T01:30:15.01Z"
-}
\ No newline at end of file
diff --git 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/service_instance_relation_client_side.json
 
b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/service_instance_relation_client_side.json
deleted file mode 100644
index edd49ef287..0000000000
--- 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/service_instance_relation_client_side.json
+++ /dev/null
@@ -1,56 +0,0 @@
-{
-  "metadata": {
-    "name": "service_instance_relation_client_side",
-    "group": "default-stream"
-  },
-  "tag_families": [
-    {
-      "name": "data",
-      "tags": [
-        {
-          "name": "component_id",
-          "type": "TAG_TYPE_INT"
-        },
-        {
-          "name": "source_service_instance_id",
-          "type": "TAG_TYPE_STRING"
-        },
-        {
-          "name": "dest_service_instance_id",
-          "type": "TAG_TYPE_STRING"
-        }
-      ]
-    },
-    {
-      "name": "searchable",
-      "tags": [
-        {
-          "name": "source_service_id",
-          "type": "TAG_TYPE_STRING"
-        },
-        {
-          "name": "dest_service_id",
-          "type": "TAG_TYPE_STRING"
-        },
-        {
-          "name": "entity_id",
-          "type": "TAG_TYPE_STRING"
-        }
-      ]
-    }
-  ],
-  "entity": {
-    "tag_names": [
-      "source_service_id",
-      "dest_service_id"
-    ]
-  },
-  "opts": {
-    "shard_num": 2,
-    "ttl": {
-      "val": 7,
-      "unit": "DURATION_UNIT_DAY"
-    }
-  },
-  "updated_at": "2021-04-15T01:30:15.01Z"
-}
\ No newline at end of file
diff --git 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/service_instance_relation_server_side.json
 
b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/service_instance_relation_server_side.json
deleted file mode 100644
index a8c6089421..0000000000
--- 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/service_instance_relation_server_side.json
+++ /dev/null
@@ -1,56 +0,0 @@
-{
-  "metadata": {
-    "name": "service_instance_relation_server_side",
-    "group": "default-stream"
-  },
-  "tag_families": [
-    {
-      "name": "data",
-      "tags": [
-        {
-          "name": "component_id",
-          "type": "TAG_TYPE_INT"
-        },
-        {
-          "name": "source_service_instance_id",
-          "type": "TAG_TYPE_STRING"
-        },
-        {
-          "name": "dest_service_instance_id",
-          "type": "TAG_TYPE_STRING"
-        }
-      ]
-    },
-    {
-      "name": "searchable",
-      "tags": [
-        {
-          "name": "source_service_id",
-          "type": "TAG_TYPE_STRING"
-        },
-        {
-          "name": "dest_service_id",
-          "type": "TAG_TYPE_STRING"
-        },
-        {
-          "name": "entity_id",
-          "type": "TAG_TYPE_STRING"
-        }
-      ]
-    }
-  ],
-  "entity": {
-    "tag_names": [
-      "source_service_id",
-      "dest_service_id"
-    ]
-  },
-  "opts": {
-    "shard_num": 2,
-    "ttl": {
-      "val": 7,
-      "unit": "DURATION_UNIT_DAY"
-    }
-  },
-  "updated_at": "2021-04-15T01:30:15.01Z"
-}
\ No newline at end of file
diff --git 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/service_relation_client_side.json
 
b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/service_relation_client_side.json
deleted file mode 100644
index 1f74420c2c..0000000000
--- 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/service_relation_client_side.json
+++ /dev/null
@@ -1,41 +0,0 @@
-{
-  "metadata": {
-    "name": "service_relation_client_side",
-    "group": "default-stream"
-  },
-  "tag_families": [
-    {
-      "name": "data",
-      "tags": [
-        {
-          "name": "component_id",
-          "type": "TAG_TYPE_INT"
-        }
-      ]
-    },
-    {
-      "name": "searchable",
-      "tags": [
-        {
-          "name": "source_service_id",
-          "type": "TAG_TYPE_STRING"
-        },
-        {
-          "name": "dest_service_id",
-          "type": "TAG_TYPE_STRING"
-        },
-        {
-          "name": "entity_id",
-          "type": "TAG_TYPE_STRING"
-        }
-      ]
-    }
-  ],
-  "entity": {
-    "tag_names": [
-      "source_service_id",
-      "dest_service_id"
-    ]
-  },
-  "updated_at": "2021-04-15T01:30:15.01Z"
-}
\ No newline at end of file
diff --git 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/service_relation_server_side.json
 
b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/service_relation_server_side.json
deleted file mode 100644
index 13c2cc6177..0000000000
--- 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/service_relation_server_side.json
+++ /dev/null
@@ -1,41 +0,0 @@
-{
-  "metadata": {
-    "name": "service_relation_server_side",
-    "group": "default-stream"
-  },
-  "tag_families": [
-    {
-      "name": "data",
-      "tags": [
-        {
-          "name": "component_id",
-          "type": "TAG_TYPE_INT"
-        }
-      ]
-    },
-    {
-      "name": "searchable",
-      "tags": [
-        {
-          "name": "source_service_id",
-          "type": "TAG_TYPE_STRING"
-        },
-        {
-          "name": "dest_service_id",
-          "type": "TAG_TYPE_STRING"
-        },
-        {
-          "name": "entity_id",
-          "type": "TAG_TYPE_STRING"
-        }
-      ]
-    }
-  ],
-  "entity": {
-    "tag_names": [
-      "source_service_id",
-      "dest_service_id"
-    ]
-  },
-  "updated_at": "2021-04-15T01:30:15.01Z"
-}
\ No newline at end of file
diff --git 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/service_traffic.json
 
b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/service_traffic.json
deleted file mode 100644
index b009a199cf..0000000000
--- 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/service_traffic.json
+++ /dev/null
@@ -1,44 +0,0 @@
-{
-  "metadata": {
-    "name": "service_traffic",
-    "group": "default-stream"
-  },
-  "tag_families": [
-    {
-      "name": "data",
-      "tags": [
-        {
-          "name": "short_name",
-          "type": "TAG_TYPE_STRING"
-        }
-      ]
-    },
-    {
-      "name": "searchable",
-      "tags": [
-        {
-          "name": "name",
-          "type": "TAG_TYPE_STRING"
-        },
-        {
-          "name": "service_id",
-          "type": "TAG_TYPE_STRING"
-        },
-        {
-          "name": "service_group",
-          "type": "TAG_TYPE_STRING"
-        },
-        {
-          "name": "layer",
-          "type": "TAG_TYPE_INT"
-        }
-      ]
-    }
-  ],
-  "entity": {
-    "tag_names": [
-      "service_id"
-    ]
-  },
-  "updated_at": "2021-04-15T01:30:15.01Z"
-}
\ No newline at end of file
diff --git 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/ui_template.json
 
b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/ui_template.json
deleted file mode 100644
index b01e8baae0..0000000000
--- 
a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/ui_template.json
+++ /dev/null
@@ -1,44 +0,0 @@
-{
-  "metadata": {
-    "name": "ui_template",
-    "group": "default-stream"
-  },
-  "tag_families": [
-    {
-      "name": "data",
-      "tags": [
-        {
-          "name": "type",
-          "type": "TAG_TYPE_STRING"
-        },
-        {
-          "name": "configuration",
-          "type": "TAG_TYPE_STRING"
-        },
-        {
-          "name": "activated",
-          "type": "TAG_TYPE_INT"
-        }
-      ]
-    },
-    {
-      "name": "searchable",
-      "tags": [
-        {
-          "name": "name",
-          "type": "TAG_TYPE_STRING"
-        },
-        {
-          "name": "disabled",
-          "type": "TAG_TYPE_INT"
-        }
-      ]
-    }
-  ],
-  "entity": {
-    "tag_names": [
-      "name"
-    ]
-  },
-  "updated_at": "2021-04-15T01:30:15.01Z"
-}
\ No newline at end of file

Reply via email to