You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@skywalking.apache.org by lu...@apache.org on 2022/04/30 12:56:44 UTC

[skywalking] 18/25: support metadata, segment and topo

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 837b3cd75d38d7b87a0d7e11cd0c68316f6785f5
Author: Megrez Lu <lu...@gmail.com>
AuthorDate: Tue Feb 15 21:43:51 2022 +0800

    support metadata, segment and topo
---
 .../plugin/banyandb/BanyanDBStorageClient.java     |  21 ++-
 .../plugin/banyandb/BanyanDBStorageProvider.java   |   7 +-
 .../storage/plugin/banyandb/StreamMetaInfo.java    |  14 +-
 .../schema/NetworkAddressAliasBuilder.java         |   2 +-
 .../schema/ProfileTaskLogRecordBuilder.java        |   9 +-
 ...ceInstanceRelationClientSideMetricsBuilder.java |   4 +-
 .../ServiceRelationClientSideMetricsBuilder.java   |   2 +-
 .../banyandb/stream/AbstractBanyanDBDAO.java       |   7 +-
 .../banyandb/stream/BanyanDBManagementDAO.java     |   4 -
 .../banyandb/stream/BanyanDBMetadataQueryDAO.java  |  18 ++-
 .../banyandb/stream/BanyanDBNoneStreamDAO.java     |   2 +-
 .../stream/BanyanDBProfileTaskLogQueryDAO.java     |  13 +-
 .../stream/BanyanDBProfileTaskQueryDAO.java        |   2 +-
 .../BanyanDBProfileThreadSnapshotQueryDAO.java     |   2 +-
 .../banyandb/stream/BanyanDBTopologyQueryDAO.java  | 167 ++++++++++++++++++---
 .../banyandb/stream/BanyanDBTraceQueryDAO.java     |  45 +++---
 .../metadata/endpoint_relation_server_side.json    |  13 +-
 .../main/resources/metadata/endpoint_traffic.json  |  12 +-
 .../src/main/resources/metadata/events.json        |  12 +-
 .../resources/metadata/index_rules/disabled.json   |   2 +-
 .../index_rules/{disabled.json => dump_time.json}  |   6 +-
 .../index_rules/{disabled.json => layer.json}      |   4 +-
 .../{disabled.json => operation_time.json}         |   6 +-
 .../index_rules/{disabled.json => segment_id.json} |   4 +-
 .../index_rules/{disabled.json => sequence.json}   |   6 +-
 .../{disabled.json => service_group.json}          |   4 +-
 .../main/resources/metadata/instance_traffic.json  |  13 +-
 .../resources/metadata/network_address_alias.json  |  13 +-
 .../src/main/resources/metadata/profile_task.json  |  12 +-
 ...instance_traffic.json => profile_task_log.json} |  31 ++--
 ...fic.json => profile_task_segment_snapshot.json} |  29 ++--
 .../src/main/resources/metadata/segment.json       |  11 +-
 .../service_instance_relation_client_side.json     |   6 +-
 .../service_instance_relation_server_side.json     |   6 +-
 .../metadata/service_relation_client_side.json     |  13 +-
 .../metadata/service_relation_server_side.json     |  13 +-
 .../main/resources/metadata/service_traffic.json   |  14 +-
 .../src/main/resources/metadata/ui_template.json   |  12 +-
 38 files changed, 317 insertions(+), 244 deletions(-)

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 7d61e4e085..6b4780cad7 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
@@ -19,10 +19,12 @@
 package org.apache.skywalking.oap.server.storage.plugin.banyandb;
 
 import org.apache.skywalking.banyandb.v1.client.BanyanDBClient;
+import org.apache.skywalking.banyandb.v1.client.GroupedBanyanDBClient;
 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.metadata.Group;
 import org.apache.skywalking.banyandb.v1.client.metadata.IndexRule;
 import org.apache.skywalking.banyandb.v1.client.metadata.Stream;
 import org.apache.skywalking.oap.server.library.client.Client;
@@ -38,10 +40,15 @@ import java.io.IOException;
  */
 public class BanyanDBStorageClient implements Client, HealthCheckable {
     private final BanyanDBClient client;
+    private GroupedBanyanDBClient streamClient;
     private final DelegatedHealthChecker healthChecker = new DelegatedHealthChecker();
 
-    public BanyanDBStorageClient(String host, int port, String group) {
-        this.client = new BanyanDBClient(host, port, group);
+    public BanyanDBStorageClient(String host, int port) {
+        this.client = new BanyanDBClient(host, port);
+    }
+
+    public void defineStreamGroup(Group group) {
+        this.streamClient = this.client.attachGroup(group);
     }
 
     @Override
@@ -56,7 +63,7 @@ public class BanyanDBStorageClient implements Client, HealthCheckable {
 
     public StreamQueryResponse query(StreamQuery streamQuery) {
         try {
-            StreamQueryResponse response = this.client.queryStreams(streamQuery);
+            StreamQueryResponse response = this.streamClient.queryStreams(streamQuery);
             this.healthChecker.health();
             return response;
         } catch (Throwable t) {
@@ -66,18 +73,18 @@ public class BanyanDBStorageClient implements Client, HealthCheckable {
     }
 
     public void createStream(StreamMetaInfo streamMetaInfo) {
-        Stream stm = this.client.define(streamMetaInfo.getStream());
+        Stream stm = this.streamClient.define(streamMetaInfo.getStream());
         if (stm != null) {
-            this.client.defineIndexRules(stm, streamMetaInfo.getIndexRules().toArray(new IndexRule[]{}));
+            this.streamClient.defineIndexRules(stm, streamMetaInfo.getIndexRules().toArray(new IndexRule[]{}));
         }
     }
 
     public void write(StreamWrite streamWrite) {
-        this.client.write(streamWrite);
+        this.streamClient.write(streamWrite);
     }
 
     public StreamBulkWriteProcessor createBulkProcessor(int maxBulkSize, int flushInterval, int concurrency) {
-        return this.client.buildStreamWriteProcessor(maxBulkSize, flushInterval, concurrency);
+        return this.streamClient.buildStreamWriteProcessor(maxBulkSize, flushInterval, concurrency);
     }
 
     @Override
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 6d4340e48d..b938ab1159 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
@@ -18,6 +18,8 @@
 
 package org.apache.skywalking.oap.server.storage.plugin.banyandb;
 
+import org.apache.skywalking.banyandb.v1.client.metadata.Catalog;
+import org.apache.skywalking.banyandb.v1.client.metadata.Group;
 import org.apache.skywalking.oap.server.core.CoreModule;
 import org.apache.skywalking.oap.server.core.config.ConfigService;
 import org.apache.skywalking.oap.server.core.storage.IBatchDAO;
@@ -93,7 +95,7 @@ public class BanyanDBStorageProvider extends ModuleProvider {
     public void prepare() throws ServiceNotProvidedException, ModuleStartException {
         this.registerServiceImplementation(StorageBuilderFactory.class, new BanyanDBStorageBuilderFactory());
 
-        this.client = new BanyanDBStorageClient(config.getHost(), config.getPort(), config.getGroup());
+        this.client = new BanyanDBStorageClient(config.getHost(), config.getPort());
 
         // Stream
         this.registerServiceImplementation(IBatchDAO.class, new BanyanDBBatchDAO(client, config.getMaxBulkSize(), config.getFlushInterval(), config.getConcurrentWriteThreads()));
@@ -133,6 +135,9 @@ public class BanyanDBStorageProvider extends ModuleProvider {
         this.client.registerChecker(healthChecker);
         try {
             this.client.connect();
+            // create stream group
+            final Group streamGroup = new Group("default-stream", Catalog.STREAM, 2);
+            this.client.defineStreamGroup(streamGroup);
             BanyanDBIndexInstaller installer = new BanyanDBIndexInstaller(client, getManager());
             getManager().find(CoreModule.NAME).provider().getService(ModelCreator.class).addModelListener(installer);
         } catch (Exception e) {
diff --git a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/StreamMetaInfo.java b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/StreamMetaInfo.java
index de7af730ee..0a2af94339 100644
--- a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/StreamMetaInfo.java
+++ b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/StreamMetaInfo.java
@@ -19,13 +19,13 @@
 package org.apache.skywalking.oap.server.storage.plugin.banyandb;
 
 import com.google.common.base.Charsets;
+import com.google.common.collect.ImmutableSet;
 import com.google.common.io.CharStreams;
 import com.google.protobuf.util.JsonFormat;
 import lombok.Builder;
 import lombok.Getter;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.skywalking.banyandb.database.v1.BanyandbDatabase;
-import org.apache.skywalking.banyandb.v1.client.metadata.Duration;
 import org.apache.skywalking.banyandb.v1.client.metadata.IndexRule;
 import org.apache.skywalking.banyandb.v1.client.metadata.Stream;
 import org.apache.skywalking.banyandb.v1.client.metadata.TagFamilySpec;
@@ -38,6 +38,7 @@ import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 
 @Getter
 @Builder
@@ -69,14 +70,13 @@ public class StreamMetaInfo {
             log.warn("fail to find stream schema {}", model.getName());
             return null;
         }
-        BanyandbDatabase.Duration duration = pbStream.getOpts().getTtl();
-        Duration ttl = Duration.fromProtobuf(duration);
-        final Stream stream = new Stream(pbStream.getMetadata().getName(), pbStream.getOpts().getShardNum(), ttl);
+        final Stream stream = new Stream(pbStream.getMetadata().getName());
 
         List<IndexRule> indexRules = new ArrayList<>();
 
-        stream.setEntityTagNames(pbStream.getEntity().getTagNamesList());
+        Set<String> entityNameSet = ImmutableSet.copyOf(pbStream.getEntity().getTagNamesList());
 
+        stream.setEntityTagNames(pbStream.getEntity().getTagNamesList());
 
         for (BanyandbDatabase.TagFamilySpec pbTagFamilySpec : pbStream.getTagFamiliesList()) {
             final TagFamilySpec tagFamilySpec = TagFamilySpec.fromProtobuf(pbTagFamilySpec);
@@ -85,6 +85,10 @@ public class StreamMetaInfo {
             // if the tag family equals to "searchable", build index rules
             if (tagFamilySpec.getTagFamilyName().equals(TAG_FAMILY_SEARCHABLE)) {
                 for (final TagFamilySpec.TagSpec tagSpec : tagFamilySpec.getTagSpecs()) {
+                    // check if this spec exists in the entity names
+                    if (entityNameSet.contains(tagSpec.getTagName())) {
+                        continue;
+                    }
                     BanyandbDatabase.IndexRule pbIndexRule = parseIndexRulesFromJSON(model.getName(), tagSpec.getTagName());
                     if (pbIndexRule == null) {
                         log.warn("fail to find the index rule for {}", tagSpec.getTagName());
diff --git a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/schema/NetworkAddressAliasBuilder.java b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/schema/NetworkAddressAliasBuilder.java
index ca2d78d2ef..e429f80b9c 100644
--- a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/schema/NetworkAddressAliasBuilder.java
+++ b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/schema/NetworkAddressAliasBuilder.java
@@ -35,7 +35,7 @@ public class NetworkAddressAliasBuilder extends BanyanDBStorageDataBuilder<Netwo
 
     @Override
     protected List<SerializableTag<BanyandbModel.TagValue>> dataTags(NetworkAddressAlias entity) {
-        List<SerializableTag<BanyandbModel.TagValue>> data = new ArrayList<>(3);
+        List<SerializableTag<BanyandbModel.TagValue>> data = new ArrayList<>(4);
         // 0 - time_bucket
         data.add(TagAndValue.longField(entity.getTimeBucket()));
         // 1 - address
diff --git a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/schema/ProfileTaskLogRecordBuilder.java b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/schema/ProfileTaskLogRecordBuilder.java
index a0cab9c112..1f861ab4cd 100644
--- a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/schema/ProfileTaskLogRecordBuilder.java
+++ b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/schema/ProfileTaskLogRecordBuilder.java
@@ -24,20 +24,21 @@ import org.apache.skywalking.banyandb.v1.client.TagAndValue;
 import org.apache.skywalking.oap.server.core.profile.ProfileTaskLogRecord;
 
 import java.util.ArrayList;
-import java.util.Collections;
 import java.util.List;
 
 public class ProfileTaskLogRecordBuilder extends BanyanDBStorageDataBuilder<ProfileTaskLogRecord> {
     @Override
     protected List<SerializableTag<BanyandbModel.TagValue>> searchableTags(ProfileTaskLogRecord entity) {
-        return Collections.singletonList(TagAndValue.longField(entity.getOperationTime()));
+        List<SerializableTag<BanyandbModel.TagValue>> searchable = new ArrayList<>(2);
+        searchable.add(TagAndValue.longField(entity.getOperationTime()));
+        searchable.add(TagAndValue.stringField(entity.getInstanceId()));
+        return searchable;
     }
 
     @Override
     protected List<SerializableTag<BanyandbModel.TagValue>> dataTags(ProfileTaskLogRecord entity) {
-        List<SerializableTag<BanyandbModel.TagValue>> data = new ArrayList<>();
+        List<SerializableTag<BanyandbModel.TagValue>> data = new ArrayList<>(2);
         data.add(TagAndValue.stringField(entity.getTaskId()));
-        data.add(TagAndValue.stringField(entity.getInstanceId()));
         data.add(TagAndValue.longField(entity.getOperationType()));
         return data;
     }
diff --git a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/schema/ServiceInstanceRelationClientSideMetricsBuilder.java b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/schema/ServiceInstanceRelationClientSideMetricsBuilder.java
index a7f0f1b156..dc4de6ddcb 100644
--- a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/schema/ServiceInstanceRelationClientSideMetricsBuilder.java
+++ b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/schema/ServiceInstanceRelationClientSideMetricsBuilder.java
@@ -29,7 +29,7 @@ import java.util.List;
 public class ServiceInstanceRelationClientSideMetricsBuilder extends BanyanDBStorageDataBuilder<ServiceInstanceRelationClientSideMetrics> {
     @Override
     protected List<SerializableTag<BanyandbModel.TagValue>> searchableTags(ServiceInstanceRelationClientSideMetrics entity) {
-        List<SerializableTag<BanyandbModel.TagValue>> searchable = new ArrayList<>();
+        List<SerializableTag<BanyandbModel.TagValue>> searchable = new ArrayList<>(3);
         searchable.add(TagAndValue.stringField(entity.getSourceServiceId()));
         searchable.add(TagAndValue.stringField(entity.getDestServiceId()));
         searchable.add(TagAndValue.stringField(entity.getEntityId()));
@@ -38,7 +38,7 @@ public class ServiceInstanceRelationClientSideMetricsBuilder extends BanyanDBSto
 
     @Override
     protected List<SerializableTag<BanyandbModel.TagValue>> dataTags(ServiceInstanceRelationClientSideMetrics entity) {
-        List<SerializableTag<BanyandbModel.TagValue>> data = new ArrayList<>();
+        List<SerializableTag<BanyandbModel.TagValue>> data = new ArrayList<>(3);
         data.add(TagAndValue.longField(entity.getComponentId()));
         data.add(TagAndValue.stringField(entity.getSourceServiceInstanceId()));
         data.add(TagAndValue.stringField(entity.getDestServiceInstanceId()));
diff --git a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/schema/ServiceRelationClientSideMetricsBuilder.java b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/schema/ServiceRelationClientSideMetricsBuilder.java
index 3d50dde043..cf8ae73fdf 100644
--- a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/schema/ServiceRelationClientSideMetricsBuilder.java
+++ b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/schema/ServiceRelationClientSideMetricsBuilder.java
@@ -30,7 +30,7 @@ import java.util.List;
 public class ServiceRelationClientSideMetricsBuilder extends BanyanDBStorageDataBuilder<ServiceRelationClientSideMetrics> {
     @Override
     protected List<SerializableTag<BanyandbModel.TagValue>> searchableTags(ServiceRelationClientSideMetrics entity) {
-        List<SerializableTag<BanyandbModel.TagValue>> searchable = new ArrayList<>();
+        List<SerializableTag<BanyandbModel.TagValue>> searchable = new ArrayList<>(3);
         searchable.add(TagAndValue.stringField(entity.getSourceServiceId()));
         searchable.add(TagAndValue.stringField(entity.getDestServiceId()));
         searchable.add(TagAndValue.stringField(entity.getEntityId()));
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 a3d2f1dc85..04690a30cb 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
@@ -27,10 +27,15 @@ import org.apache.skywalking.oap.server.core.storage.AbstractDAO;
 import org.apache.skywalking.oap.server.storage.plugin.banyandb.BanyanDBStorageClient;
 import org.apache.skywalking.oap.server.storage.plugin.banyandb.StreamMetaInfo;
 
+import java.time.Instant;
 import java.util.List;
 import java.util.function.Function;
 
 public abstract class AbstractBanyanDBDAO extends AbstractDAO<BanyanDBStorageClient> {
+    private static final Instant UPPER_BOUND = Instant.ofEpochSecond(0, Long.MAX_VALUE);
+
+    private static final TimestampRange LARGEST_TIME_RANGE = new TimestampRange(0, UPPER_BOUND.toEpochMilli());
+
     protected AbstractBanyanDBDAO(BanyanDBStorageClient client) {
         super(client);
     }
@@ -43,7 +48,7 @@ public abstract class AbstractBanyanDBDAO extends AbstractDAO<BanyanDBStorageCli
                                         QueryBuilder builder) {
         final StreamQuery query;
         if (timestampRange == null) {
-            query = new StreamQuery(indexName, searchableTags);
+            query = new StreamQuery(indexName, LARGEST_TIME_RANGE, searchableTags);
         } else {
             query = new StreamQuery(indexName, timestampRange, searchableTags);
         }
diff --git a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBManagementDAO.java b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBManagementDAO.java
index 1990181804..a87a94434d 100644
--- a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBManagementDAO.java
+++ b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBManagementDAO.java
@@ -41,9 +41,6 @@ import java.util.Collections;
  * @param <T> The only ManagementData we have now is {@link UITemplate}
  */
 public class BanyanDBManagementDAO<T extends ManagementData> extends AbstractBanyanDBDAO implements IManagementDAO {
-    private final static long START_TIME_MILLI =
-            ZonedDateTime.of(2022, 1, 1, 0, 0, 0, 0,
-                    ZoneOffset.UTC).toInstant().toEpochMilli();
     private final BanyanDBStorageDataBuilder<T> storageBuilder;
 
     public BanyanDBManagementDAO(BanyanDBStorageClient client, BanyanDBStorageDataBuilder<T> storageBuilder) {
@@ -56,7 +53,6 @@ public class BanyanDBManagementDAO<T extends ManagementData> extends AbstractBan
         // ensure only insert once
         StreamQueryResponse resp = query(UITemplate.INDEX_NAME,
                 Collections.singletonList(UITemplate.NAME),
-                new TimestampRange(START_TIME_MILLI, Instant.now().toEpochMilli()),
                 new QueryBuilder() {
                     @Override
                     public void apply(StreamQuery query) {
diff --git a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBMetadataQueryDAO.java b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBMetadataQueryDAO.java
index 447d6316ac..85ea280b72 100644
--- a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBMetadataQueryDAO.java
+++ b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBMetadataQueryDAO.java
@@ -62,10 +62,11 @@ public class BanyanDBMetadataQueryDAO extends AbstractBanyanDBDAO implements IMe
     @Override
     public List<Service> listServices(final String layer, final String group) throws IOException {
         StreamQueryResponse resp = query(ServiceTraffic.INDEX_NAME,
-                ImmutableList.of(ServiceTraffic.NAME, ServiceTraffic.LAYER, ServiceTraffic.GROUP),
+                ImmutableList.of(ServiceTraffic.NAME, ServiceTraffic.SERVICE_ID, ServiceTraffic.GROUP, ServiceTraffic.LAYER),
                 new QueryBuilder() {
                     @Override
                     public void apply(StreamQuery query) {
+                        query.setDataProjections(Collections.singletonList(ServiceTraffic.SHORT_NAME));
                         if (StringUtil.isNotEmpty(layer)) {
                             query.appendCondition(eq(ServiceTraffic.LAYER, Layer.valueOf(layer).value()));
                         }
@@ -81,10 +82,12 @@ public class BanyanDBMetadataQueryDAO extends AbstractBanyanDBDAO implements IMe
     @Override
     public List<Service> getServices(String serviceId) throws IOException {
         StreamQueryResponse resp = query(ServiceTraffic.INDEX_NAME,
-                ImmutableList.of(ServiceTraffic.NAME, ServiceTraffic.LAYER, ServiceTraffic.GROUP),
+                ImmutableList.of(ServiceTraffic.NAME, ServiceTraffic.SERVICE_ID, ServiceTraffic.GROUP, ServiceTraffic.LAYER),
                 new QueryBuilder() {
                     @Override
                     public void apply(StreamQuery query) {
+                        query.setDataProjections(Collections.singletonList(ServiceTraffic.SHORT_NAME));
+
                         query.appendCondition(eq(ServiceTraffic.SERVICE_ID, serviceId));
                     }
                 });
@@ -116,9 +119,11 @@ public class BanyanDBMetadataQueryDAO extends AbstractBanyanDBDAO implements IMe
     @Override
     public ServiceInstance getInstance(String instanceId) throws IOException {
         StreamQueryResponse resp = query(InstanceTraffic.INDEX_NAME,
-                ImmutableList.of(InstanceTraffic.NAME, InstanceTraffic.SERVICE_ID), new QueryBuilder() {
+                ImmutableList.of(StreamMetaInfo.ID), new QueryBuilder() {
                     @Override
                     public void apply(StreamQuery query) {
+                        query.setDataProjections(Collections.singletonList("data_binary"));
+
                         query.appendCondition(eq(StreamMetaInfo.ID, instanceId));
                     }
                 });
@@ -145,8 +150,8 @@ public class BanyanDBMetadataQueryDAO extends AbstractBanyanDBDAO implements IMe
         public Endpoint apply(RowEntity row) {
             Endpoint endpoint = new Endpoint();
             final List<TagAndValue<?>> searchable = row.getTagFamilies().get(0);
-            endpoint.setId((String) searchable.get(0).getValue());
-            endpoint.setName((String) searchable.get(1).getValue());
+            endpoint.setId(row.getId());
+            endpoint.setName((String) searchable.get(0).getValue()); // 0 - name
             return endpoint;
         }
     }
@@ -179,7 +184,8 @@ public class BanyanDBMetadataQueryDAO extends AbstractBanyanDBDAO implements IMe
                     RemoteData remoteData = RemoteData.parseFrom((ByteString) o);
                     instanceTraffic.deserialize(remoteData);
                     serviceInstance.setName(instanceTraffic.getName());
-                    serviceInstance.setId(instanceTraffic.getServiceId());
+                    serviceInstance.setId(row.getId());
+                    serviceInstance.setInstanceUUID(serviceInstance.getId());
                     serviceInstance.setLayer(instanceTraffic.getLayer().name());
 
                     if (instanceTraffic.getProperties() != null) {
diff --git a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBNoneStreamDAO.java b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBNoneStreamDAO.java
index e19ff9af98..ae5c766897 100644
--- a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBNoneStreamDAO.java
+++ b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBNoneStreamDAO.java
@@ -41,7 +41,7 @@ public class BanyanDBNoneStreamDAO<T extends NoneStream> implements INoneStreamD
 
     @Override
     public void insert(Model model, NoneStream noneStream) throws IOException {
-        final long timestamp = TimeBucket.getTimeBucket(noneStream.getTimeBucket(), model.getDownsampling());
+        final long timestamp = TimeBucket.getTimestamp(noneStream.getTimeBucket(), model.getDownsampling());
         StreamWrite.StreamWriteBuilder builder =
                 this.storageBuilder.entity2Storage((T) noneStream)
                         .name(model.getName())
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 3a4910f3b5..1da585bb4b 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
@@ -48,12 +48,11 @@ public class BanyanDBProfileTaskLogQueryDAO extends AbstractBanyanDBDAO implemen
     @Override
     public List<ProfileTaskLog> getTaskLogList() throws IOException {
         StreamQueryResponse resp = query(ProfileTaskLogRecord.INDEX_NAME,
-                ImmutableList.of(ProfileTaskLogRecord.OPERATION_TIME),
+                ImmutableList.of(ProfileTaskLogRecord.OPERATION_TIME, ProfileTaskLogRecord.INSTANCE_ID),
                 new QueryBuilder() {
                     @Override
                     public void apply(StreamQuery query) {
                         query.setDataProjections(ImmutableList.of(ProfileTaskLogRecord.TASK_ID,
-                                ProfileTaskLogRecord.INSTANCE_ID,
                                 ProfileTaskLogRecord.OPERATION_TYPE));
                         query.setLimit(BanyanDBProfileTaskLogQueryDAO.this.queryMaxSize);
                     }
@@ -71,13 +70,13 @@ public class BanyanDBProfileTaskLogQueryDAO extends AbstractBanyanDBDAO implemen
             final List<TagAndValue<?>> searchable = row.getTagFamilies().get(0);
             // searchable - operation_time
             profileTaskLog.setOperationTime(((Number) searchable.get(0).getValue()).longValue());
+            // searchable - instance_id
+            profileTaskLog.setInstanceId((String) searchable.get(1).getValue());
             final List<TagAndValue<?>> data = row.getTagFamilies().get(1);
-            // searchable - task_id
+            // data - task_id
             profileTaskLog.setTaskId((String) data.get(0).getValue());
-            // searchable - instance_id
-            profileTaskLog.setInstanceId((String) data.get(1).getValue());
-            // searchable - operation_type
-            profileTaskLog.setOperationType(ProfileTaskLogOperationType.parse(((Number) data.get(2).getValue()).intValue()));
+            // data - operation_type
+            profileTaskLog.setOperationType(ProfileTaskLogOperationType.parse(((Number) data.get(1).getValue()).intValue()));
             return profileTaskLog;
         }
     }
diff --git a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBProfileTaskQueryDAO.java b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBProfileTaskQueryDAO.java
index 93cc99c6c3..4bf0996eb8 100644
--- a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBProfileTaskQueryDAO.java
+++ b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBProfileTaskQueryDAO.java
@@ -72,7 +72,7 @@ public class BanyanDBProfileTaskQueryDAO extends AbstractBanyanDBDAO implements
                             query.setLimit(limit);
                         }
 
-                        query.setOrderBy(new StreamQuery.OrderBy(ProfileTaskRecord.START_TIME, StreamQuery.OrderBy.Type.DESC));
+//                        query.setOrderBy(new StreamQuery.OrderBy(ProfileTaskRecord.START_TIME, StreamQuery.OrderBy.Type.DESC));
                     }
                 });
 
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 4da87ac9e5..6df30bb465 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
@@ -124,7 +124,7 @@ public class BanyanDBProfileThreadSnapshotQueryDAO extends AbstractBanyanDBDAO i
     @Override
     public SegmentRecord getProfiledSegment(String segmentId) throws IOException {
         StreamQueryResponse resp = query(SegmentRecord.INDEX_NAME,
-                ImmutableList.of("trace_id", "state", "service_id", "service_instance_id", "endpoint_id", "duration", "start_time"),
+                ImmutableList.of(SegmentRecord.TRACE_ID, SegmentRecord.IS_ERROR, SegmentRecord.SERVICE_ID, SegmentRecord.SERVICE_INSTANCE_ID, SegmentRecord.ENDPOINT_ID, SegmentRecord.LATENCY, SegmentRecord.START_TIME),
                 new QueryBuilder() {
                     @Override
                     public void apply(StreamQuery query) {
diff --git a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBTopologyQueryDAO.java b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBTopologyQueryDAO.java
index f574e9b24a..660190dd10 100644
--- a/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBTopologyQueryDAO.java
+++ b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/java/org/apache/skywalking/oap/server/storage/plugin/banyandb/stream/BanyanDBTopologyQueryDAO.java
@@ -18,7 +18,18 @@
 
 package org.apache.skywalking.oap.server.storage.plugin.banyandb.stream;
 
+import com.google.common.collect.ImmutableList;
+import com.google.common.collect.ImmutableSet;
+import io.vavr.Tuple2;
+import io.vavr.Tuple4;
+import lombok.RequiredArgsConstructor;
+import org.apache.skywalking.banyandb.v1.client.RowEntity;
+import org.apache.skywalking.banyandb.v1.client.StreamQuery;
+import org.apache.skywalking.banyandb.v1.client.StreamQueryResponse;
+import org.apache.skywalking.banyandb.v1.client.TimestampRange;
+import org.apache.skywalking.oap.server.core.Const;
 import org.apache.skywalking.oap.server.core.UnexpectedException;
+import org.apache.skywalking.oap.server.core.analysis.TimeBucket;
 import org.apache.skywalking.oap.server.core.analysis.manual.relation.endpoint.EndpointRelationServerSideMetrics;
 import org.apache.skywalking.oap.server.core.analysis.manual.relation.instance.ServiceInstanceRelationClientSideMetrics;
 import org.apache.skywalking.oap.server.core.analysis.manual.relation.instance.ServiceInstanceRelationServerSideMetrics;
@@ -34,6 +45,8 @@ import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
+import java.util.Set;
+import java.util.stream.Collectors;
 
 public class BanyanDBTopologyQueryDAO extends AbstractBanyanDBDAO implements ITopologyQueryDAO {
     public BanyanDBTopologyQueryDAO(BanyanDBStorageClient client) {
@@ -71,7 +84,7 @@ public class BanyanDBTopologyQueryDAO extends AbstractBanyanDBDAO implements ITo
         return loadServiceCalls(
                 ServiceRelationServerSideMetrics.INDEX_NAME, startTB, endTB,
                 ServiceRelationServerSideMetrics.SOURCE_SERVICE_ID,
-                ServiceRelationServerSideMetrics.DEST_SERVICE_ID, new ArrayList<>(0), DetectPoint.SERVER
+                ServiceRelationServerSideMetrics.DEST_SERVICE_ID, Collections.emptyList(), DetectPoint.SERVER
         );
     }
 
@@ -80,7 +93,7 @@ public class BanyanDBTopologyQueryDAO extends AbstractBanyanDBDAO implements ITo
         return loadServiceCalls(
                 ServiceRelationClientSideMetrics.INDEX_NAME, startTB, endTB,
                 ServiceRelationClientSideMetrics.SOURCE_SERVICE_ID,
-                ServiceRelationClientSideMetrics.DEST_SERVICE_ID, new ArrayList<>(0), DetectPoint.CLIENT
+                ServiceRelationClientSideMetrics.DEST_SERVICE_ID, Collections.emptyList(), DetectPoint.CLIENT
         );
     }
 
@@ -106,17 +119,11 @@ public class BanyanDBTopologyQueryDAO extends AbstractBanyanDBDAO implements ITo
 
     @Override
     public List<Call.CallDetail> loadEndpointRelation(long startTB, long endTB, String destEndpointId) throws IOException {
-        List<Call.CallDetail> calls = loadEndpointFromSide(
+        return loadEndpointCalls(
                 EndpointRelationServerSideMetrics.INDEX_NAME, startTB, endTB,
                 EndpointRelationServerSideMetrics.SOURCE_ENDPOINT,
-                EndpointRelationServerSideMetrics.DEST_ENDPOINT, destEndpointId, false
+                EndpointRelationServerSideMetrics.DEST_ENDPOINT, destEndpointId
         );
-        calls.addAll(
-                loadEndpointFromSide(EndpointRelationServerSideMetrics.INDEX_NAME, startTB, endTB,
-                        EndpointRelationServerSideMetrics.SOURCE_ENDPOINT,
-                        EndpointRelationServerSideMetrics.DEST_ENDPOINT, destEndpointId, true
-                ));
-        return calls;
     }
 
     private List<Call.CallDetail> loadServiceCalls(String tableName,
@@ -126,8 +133,37 @@ public class BanyanDBTopologyQueryDAO extends AbstractBanyanDBDAO implements ITo
                                                    String destCName,
                                                    List<String> serviceIds,
                                                    DetectPoint detectPoint) throws IOException {
-        // TODO: we will impl this method after we support `OR`
-        return Collections.emptyList();
+        TimestampRange timeRange = new TimestampRange(TimeBucket.getTimestamp(startTB), TimeBucket.getTimestamp(endTB));
+        List<Call.CallDetail> calls = new ArrayList<>();
+        if (serviceIds.isEmpty()) {
+            StreamQueryResponse resp = query(tableName, Collections.emptyList(), timeRange, new QueryBuilder() {
+                @Override
+                void apply(StreamQuery query) {
+                    // query component_id
+                    query.setDataProjections(Collections.singletonList(ServiceRelationServerSideMetrics.COMPONENT_ID));
+                }
+            });
+
+            calls.addAll(resp.getElements().stream().map(new ServiceCallDetailDeserializer(detectPoint)).collect(Collectors.toList()));
+        } else {
+            for (String fieldOfInterest : ImmutableList.of(sourceCName, destCName)) {
+                for (String serviceID : serviceIds) {
+                    StreamQueryResponse resp = query(tableName, ImmutableList.of(fieldOfInterest), timeRange, new QueryBuilder() {
+                        @Override
+                        void apply(StreamQuery query) {
+                            // query component_id
+                            query.setDataProjections(Collections.singletonList(ServiceRelationServerSideMetrics.COMPONENT_ID));
+
+                            query.appendCondition(eq(fieldOfInterest, serviceID));
+                        }
+                    });
+
+                    calls.addAll(resp.getElements().stream().map(new ServiceCallDetailDeserializer(detectPoint)).collect(Collectors.toList()));
+                }
+            }
+        }
+
+        return calls;
     }
 
     private List<Call.CallDetail> loadServiceInstanceCalls(String tableName,
@@ -138,18 +174,103 @@ public class BanyanDBTopologyQueryDAO extends AbstractBanyanDBDAO implements ITo
                                                            String sourceServiceId,
                                                            String destServiceId,
                                                            DetectPoint detectPoint) throws IOException {
-        // TODO: we will impl this method after we support `OR`
-        return Collections.emptyList();
+        TimestampRange timeRange = new TimestampRange(TimeBucket.getTimestamp(startTB), TimeBucket.getTimestamp(endTB));
+
+        Set<Tuple4<String, String, String, String>> productQuerySet = ImmutableSet.of(
+                new Tuple4<>(sourceCName, sourceServiceId, descCName, destServiceId),
+                new Tuple4<>(sourceCName, destServiceId, descCName, sourceServiceId)
+        );
+
+        List<Call.CallDetail> calls = new ArrayList<>();
+
+        for (Tuple4<String, String, String, String> querySet : productQuerySet) {
+            StreamQueryResponse resp = query(tableName, ImmutableList.of(querySet._1(), querySet._3()), timeRange, new QueryBuilder() {
+                @Override
+                void apply(StreamQuery query) {
+                    // query component_id
+                    query.setDataProjections(Collections.singletonList(ServiceRelationServerSideMetrics.COMPONENT_ID));
+
+                    query.appendCondition(eq(querySet._1(), querySet._2()));
+                    query.appendCondition(eq(querySet._3(), querySet._4()));
+                }
+            });
+
+            calls.addAll(resp.getElements().stream().map(new InstanceCallDetailDeserializer(detectPoint)).collect(Collectors.toList()));
+        }
+
+        return calls;
     }
 
-    private List<Call.CallDetail> loadEndpointFromSide(String tableName,
-                                                       long startTB,
-                                                       long endTB,
-                                                       String sourceCName,
-                                                       String destCName,
-                                                       String id,
-                                                       boolean isSourceId) throws IOException {
-        // TODO: we will impl this method after we support `OR`
-        return Collections.emptyList();
+    private List<Call.CallDetail> loadEndpointCalls(String tableName,
+                                                    long startTB,
+                                                    long endTB,
+                                                    String sourceCName,
+                                                    String destCName,
+                                                    String id) throws IOException {
+        TimestampRange timeRange = new TimestampRange(TimeBucket.getTimestamp(startTB), TimeBucket.getTimestamp(endTB));
+
+        Set<Tuple2<String, String>> allPossibleQuerySet = ImmutableSet.of(
+                new Tuple2<>(sourceCName, id),
+                new Tuple2<>(destCName, id)
+        );
+
+        List<Call.CallDetail> calls = new ArrayList<>();
+
+        for (Tuple2<String, String> querySet : allPossibleQuerySet) {
+            StreamQueryResponse resp = query(tableName, ImmutableList.of(querySet._1()), timeRange, new QueryBuilder() {
+                @Override
+                void apply(StreamQuery query) {
+                    query.appendCondition(eq(querySet._1(), querySet._2()));
+                }
+            });
+
+            calls.addAll(resp.getElements().stream().map(new EndpointCallDetailDeserializer()).collect(Collectors.toList()));
+        }
+
+        return calls;
+    }
+
+    @RequiredArgsConstructor
+    public static class ServiceCallDetailDeserializer implements RowEntityDeserializer<Call.CallDetail> {
+        private final DetectPoint detectPoint;
+
+        @Override
+        public Call.CallDetail apply(RowEntity rowEntity) {
+            Call.CallDetail call = new Call.CallDetail();
+            String[] idsSlice = rowEntity.getId().split(Const.ID_CONNECTOR);
+            String entityId = idsSlice[1];
+            int componentId = ((Number) rowEntity.getTagFamilies().get(1) // Tag Family: "data"
+                    .get(0).getValue()).intValue();
+            call.buildFromServiceRelation(entityId, componentId, this.detectPoint);
+            return call;
+        }
+    }
+
+    @RequiredArgsConstructor
+    public static class InstanceCallDetailDeserializer implements RowEntityDeserializer<Call.CallDetail> {
+        private final DetectPoint detectPoint;
+
+        @Override
+        public Call.CallDetail apply(RowEntity rowEntity) {
+            Call.CallDetail call = new Call.CallDetail();
+            String[] idsSlice = rowEntity.getId().split(Const.ID_CONNECTOR);
+            String entityId = idsSlice[1];
+            int componentId = ((Number) rowEntity.getTagFamilies().get(1) // Tag Family: "data"
+                    .get(0).getValue()).intValue();
+            call.buildFromInstanceRelation(entityId, componentId, this.detectPoint);
+            return call;
+        }
+    }
+
+    @RequiredArgsConstructor
+    public static class EndpointCallDetailDeserializer implements RowEntityDeserializer<Call.CallDetail> {
+        @Override
+        public Call.CallDetail apply(RowEntity rowEntity) {
+            Call.CallDetail call = new Call.CallDetail();
+            String[] idsSlice = rowEntity.getId().split(Const.ID_CONNECTOR);
+            String entityId = idsSlice[1];
+            call.buildFromEndpointRelation(entityId, DetectPoint.SERVER);
+            return call;
+        }
     }
 }
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 66053e268d..642ed519fc 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
@@ -21,7 +21,6 @@ package org.apache.skywalking.oap.server.storage.plugin.banyandb.stream;
 import com.google.common.base.Strings;
 import com.google.common.collect.ImmutableList;
 import com.google.protobuf.ByteString;
-import lombok.Getter;
 import org.apache.skywalking.banyandb.v1.client.RowEntity;
 import org.apache.skywalking.banyandb.v1.client.StreamQuery;
 import org.apache.skywalking.banyandb.v1.client.StreamQueryResponse;
@@ -37,6 +36,7 @@ import org.apache.skywalking.oap.server.core.query.type.Span;
 import org.apache.skywalking.oap.server.core.query.type.TraceBrief;
 import org.apache.skywalking.oap.server.core.query.type.TraceState;
 import org.apache.skywalking.oap.server.core.storage.query.ITraceQueryDAO;
+import org.apache.skywalking.oap.server.library.util.BooleanUtils;
 import org.apache.skywalking.oap.server.library.util.CollectionUtils;
 import org.apache.skywalking.oap.server.storage.plugin.banyandb.BanyanDBStorageClient;
 import org.apache.skywalking.oap.server.storage.plugin.banyandb.schema.SegmentRecordBuilder;
@@ -79,13 +79,10 @@ public class BanyanDBTraceQueryDAO extends AbstractBanyanDBDAO implements ITrace
 
                 switch (traceState) {
                     case ERROR:
-                        query.appendCondition(eq(SegmentRecord.IS_ERROR, TraceStateStorage.ERROR.getState()));
+                        query.appendCondition(eq(SegmentRecord.IS_ERROR, BooleanUtils.TRUE));
                         break;
                     case SUCCESS:
-                        query.appendCondition(eq(SegmentRecord.IS_ERROR, TraceStateStorage.SUCCESS.getState()));
-                        break;
-                    default:
-                        query.appendCondition(eq(SegmentRecord.IS_ERROR, TraceStateStorage.ALL.getState()));
+                        query.appendCondition(eq(SegmentRecord.IS_ERROR, BooleanUtils.FALSE));
                         break;
                 }
 
@@ -118,7 +115,14 @@ public class BanyanDBTraceQueryDAO extends AbstractBanyanDBDAO implements ITrace
         }
 
         StreamQueryResponse resp = query(SegmentRecord.INDEX_NAME,
-                ImmutableList.of("trace_id", "is_error", "endpoint_id", "latency", "start_time"), tsRange, q);
+                ImmutableList.of(SegmentRecord.TRACE_ID, // 0 - trace_id
+                        SegmentRecord.IS_ERROR, // 1 - is_error
+                        SegmentRecord.SERVICE_ID, // 2 - service_id
+                        SegmentRecord.SERVICE_INSTANCE_ID, // 3 - service_instance_id
+                        SegmentRecord.ENDPOINT_ID, // 4 - endpoint_id
+                        SegmentRecord.LATENCY, // 5 - latency
+                        SegmentRecord.START_TIME), // 6 - start_time
+                tsRange, q);
 
         List<BasicTrace> basicTraces = resp.getElements().stream().map(new BasicTraceDeserializer()).collect(Collectors.toList());
 
@@ -131,11 +135,17 @@ public class BanyanDBTraceQueryDAO extends AbstractBanyanDBDAO implements ITrace
     @Override
     public List<SegmentRecord> queryByTraceId(String traceId) throws IOException {
         StreamQueryResponse resp = query(SegmentRecord.INDEX_NAME,
-                ImmutableList.of("trace_id", "is_error", "service_id", "service_instance_id", "endpoint_id", "latency", "start_time"),
+                ImmutableList.of(SegmentRecord.TRACE_ID, // 0 - trace_id
+                        SegmentRecord.IS_ERROR, // 1 - is_error
+                        SegmentRecord.SERVICE_ID, // 2 - service_id
+                        SegmentRecord.SERVICE_INSTANCE_ID, // 3 - service_instance_id
+                        SegmentRecord.ENDPOINT_ID, // 4 - endpoint_id
+                        SegmentRecord.LATENCY, // 5 - latency
+                        SegmentRecord.START_TIME), // 6 - start_time
                 new QueryBuilder() {
                     @Override
                     public void apply(StreamQuery query) {
-                        query.setDataProjections(Collections.singletonList("data_binary"));
+                        query.setDataProjections(Collections.singletonList(SegmentRecord.DATA_BINARY));
                         query.appendCondition(eq(SegmentRecord.TRACE_ID, traceId));
                     }
                 });
@@ -148,17 +158,6 @@ public class BanyanDBTraceQueryDAO extends AbstractBanyanDBDAO implements ITrace
         return Collections.emptyList();
     }
 
-    public enum TraceStateStorage {
-        ALL(0), SUCCESS(1), ERROR(2);
-
-        @Getter
-        private final int state;
-
-        TraceStateStorage(int state) {
-            this.state = state;
-        }
-    }
-
     public static class BasicTraceDeserializer implements RowEntityDeserializer<BasicTrace> {
         @Override
         public BasicTrace apply(RowEntity row) {
@@ -168,10 +167,10 @@ public class BanyanDBTraceQueryDAO extends AbstractBanyanDBDAO implements ITrace
             trace.getTraceIds().add((String) searchable.get(0).getValue());
             trace.setError(((Long) searchable.get(1).getValue()).intValue() == 1);
             trace.getEndpointNames().add(IDManager.EndpointID.analysisId(
-                    (String) searchable.get(2).getValue()
+                    (String) searchable.get(4).getValue()
             ).getEndpointName());
-            trace.setDuration(((Long) searchable.get(3).getValue()).intValue());
-            trace.setStart(String.valueOf(searchable.get(4).getValue()));
+            trace.setDuration(((Long) searchable.get(5).getValue()).intValue());
+            trace.setStart(String.valueOf(searchable.get(6).getValue()));
             return trace;
         }
     }
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
index 0c59e84357..2a203c1679 100644
--- 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
@@ -1,7 +1,7 @@
 {
   "metadata": {
     "name": "endpoint_relation_server_side",
-    "group": "default"
+    "group": "default-stream"
   },
   "tag_families": [
     {
@@ -33,14 +33,9 @@
   ],
   "entity": {
     "tag_names": [
+      "source_endpoint",
+      "dest_endpoint"
     ]
   },
-  "opts": {
-    "shard_num": 2,
-    "ttl": {
-      "val": 7,
-      "unit": "DURATION_UNIT_DAY"
-    }
-  },
-  "updated_at_nanoseconds": "2021-04-15T01:30:15.01Z"
+  "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
index 9b0d1f40ca..459b77d808 100644
--- 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
@@ -1,7 +1,7 @@
 {
   "metadata": {
     "name": "endpoint_traffic",
-    "group": "default"
+    "group": "default-stream"
   },
   "tag_families": [
     {
@@ -24,14 +24,8 @@
   ],
   "entity": {
     "tag_names": [
+      "service_id"
     ]
   },
-  "opts": {
-    "shard_num": 2,
-    "ttl": {
-      "val": 7,
-      "unit": "DURATION_UNIT_DAY"
-    }
-  },
-  "updated_at_nanoseconds": "2021-04-15T01:30:15.01Z"
+  "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
index 9c0f091ac2..37a02eca24 100644
--- 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
@@ -1,7 +1,7 @@
 {
   "metadata": {
     "name": "events",
-    "group": "default"
+    "group": "default-stream"
   },
   "tag_families": [
     {
@@ -57,14 +57,8 @@
   ],
   "entity": {
     "tag_names": [
+      "uuid"
     ]
   },
-  "opts": {
-    "shard_num": 2,
-    "ttl": {
-      "val": 7,
-      "unit": "DURATION_UNIT_DAY"
-    }
-  },
-  "updated_at_nanoseconds": "2021-04-15T01:30:15.01Z"
+  "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/disabled.json b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/disabled.json
index 8cfb12816a..19a1c1b204 100644
--- 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
@@ -6,7 +6,7 @@
   "tags": [
     "disabled"
   ],
-  "type": "TYPE_INVERTED",
+  "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/disabled.json b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/dump_time.json
similarity index 67%
copy from oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/disabled.json
copy to oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/dump_time.json
index 8cfb12816a..6073ee7740 100644
--- 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/dump_time.json
@@ -1,12 +1,12 @@
 {
   "metadata": {
-    "name": "disabled",
+    "name": "dump_time",
     "group": "default"
   },
   "tags": [
-    "disabled"
+    "dump_time"
   ],
-  "type": "TYPE_INVERTED",
+  "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/disabled.json b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/layer.json
similarity index 81%
copy from oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/disabled.json
copy to oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/layer.json
index 8cfb12816a..05455e1d6b 100644
--- 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/layer.json
@@ -1,10 +1,10 @@
 {
   "metadata": {
-    "name": "disabled",
+    "name": "layer",
     "group": "default"
   },
   "tags": [
-    "disabled"
+    "layer"
   ],
   "type": "TYPE_INVERTED",
   "location": "LOCATION_SERIES",
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/operation_time.json
similarity index 65%
copy from oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/disabled.json
copy to oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/operation_time.json
index 8cfb12816a..30222bc484 100644
--- 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/operation_time.json
@@ -1,12 +1,12 @@
 {
   "metadata": {
-    "name": "disabled",
+    "name": "operation_time",
     "group": "default"
   },
   "tags": [
-    "disabled"
+    "operation_time"
   ],
-  "type": "TYPE_INVERTED",
+  "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/disabled.json b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/segment_id.json
similarity index 79%
copy from oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/disabled.json
copy to oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/segment_id.json
index 8cfb12816a..a58129eab2 100644
--- 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/segment_id.json
@@ -1,10 +1,10 @@
 {
   "metadata": {
-    "name": "disabled",
+    "name": "segment_id",
     "group": "default"
   },
   "tags": [
-    "disabled"
+    "segment_id"
   ],
   "type": "TYPE_INVERTED",
   "location": "LOCATION_SERIES",
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/sequence.json
similarity index 67%
copy from oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/disabled.json
copy to oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/sequence.json
index 8cfb12816a..2bbd960809 100644
--- 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/sequence.json
@@ -1,12 +1,12 @@
 {
   "metadata": {
-    "name": "disabled",
+    "name": "sequence",
     "group": "default"
   },
   "tags": [
-    "disabled"
+    "sequence"
   ],
-  "type": "TYPE_INVERTED",
+  "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/disabled.json b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/service_group.json
similarity index 77%
copy from oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/disabled.json
copy to oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/index_rules/service_group.json
index 8cfb12816a..3cecbefa13 100644
--- 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/service_group.json
@@ -1,10 +1,10 @@
 {
   "metadata": {
-    "name": "disabled",
+    "name": "service_group",
     "group": "default"
   },
   "tags": [
-    "disabled"
+    "service_group"
   ],
   "type": "TYPE_INVERTED",
   "location": "LOCATION_SERIES",
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
index b63b29c2c2..fc728af744 100644
--- 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
@@ -1,7 +1,7 @@
 {
   "metadata": {
     "name": "instance_traffic",
-    "group": "default"
+    "group": "default-stream"
   },
   "tag_families": [
     {
@@ -33,15 +33,8 @@
   ],
   "entity": {
     "tag_names": [
-
+      "service_id"
     ]
   },
-  "opts": {
-    "shard_num": 2,
-    "ttl": {
-      "val": 7,
-      "unit": "DURATION_UNIT_DAY"
-    }
-  },
-  "updated_at_nanoseconds": "2021-04-15T01:30:15.01Z"
+  "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
index 6d46d97799..0dc6f344c0 100644
--- 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
@@ -1,7 +1,7 @@
 {
   "metadata": {
     "name": "network_address_alias",
-    "group": "default"
+    "group": "default-stream"
   },
   "tag_families": [
     {
@@ -37,14 +37,9 @@
   ],
   "entity": {
     "tag_names": [
+      "represent_service_id",
+      "represent_service_instance_id"
     ]
   },
-  "opts": {
-    "shard_num": 2,
-    "ttl": {
-      "val": 52000,
-      "unit": "DURATION_UNIT_WEEK"
-    }
-  },
-  "updated_at_nanoseconds": "2021-04-15T01:30:15.01Z"
+  "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
index 10aa497e74..85c5901c8c 100644
--- 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
@@ -1,7 +1,7 @@
 {
   "metadata": {
     "name": "profile_task",
-    "group": "default"
+    "group": "default-stream"
   },
   "tag_families": [
     {
@@ -52,14 +52,8 @@
   ],
   "entity": {
     "tag_names": [
+      "service_id"
     ]
   },
-  "opts": {
-    "shard_num": 2,
-    "ttl": {
-      "val": 7,
-      "unit": "DURATION_UNIT_DAY"
-    }
-  },
-  "updated_at_nanoseconds": "2021-04-15T01:30:15.01Z"
+  "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/instance_traffic.json b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/profile_task_log.json
similarity index 51%
copy from oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/instance_traffic.json
copy to oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/profile_task_log.json
index b63b29c2c2..6fa6ccb244 100644
--- 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/profile_task_log.json
@@ -1,15 +1,19 @@
 {
   "metadata": {
-    "name": "instance_traffic",
-    "group": "default"
+    "name": "profile_task_log",
+    "group": "default-stream"
   },
   "tag_families": [
     {
       "name": "data",
       "tags": [
         {
-          "name": "data_binary",
-          "type": "TAG_TYPE_DATA_BINARY"
+          "name": "task_id",
+          "type": "TAG_TYPE_STRING"
+        },
+        {
+          "name": "operation_type",
+          "type": "TAG_TYPE_INT"
         }
       ]
     },
@@ -17,15 +21,11 @@
       "name": "searchable",
       "tags": [
         {
-          "name": "service_id",
-          "type": "TAG_TYPE_STRING"
-        },
-        {
-          "name": "last_ping",
+          "name": "operation_time",
           "type": "TAG_TYPE_INT"
         },
         {
-          "name": "id",
+          "name": "instance_id",
           "type": "TAG_TYPE_STRING"
         }
       ]
@@ -33,15 +33,8 @@
   ],
   "entity": {
     "tag_names": [
-
+      "instance_id"
     ]
   },
-  "opts": {
-    "shard_num": 2,
-    "ttl": {
-      "val": 7,
-      "unit": "DURATION_UNIT_DAY"
-    }
-  },
-  "updated_at_nanoseconds": "2021-04-15T01:30:15.01Z"
+  "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/instance_traffic.json b/oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/profile_task_segment_snapshot.json
similarity index 56%
copy from oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/instance_traffic.json
copy to oap-server/server-storage-plugin/storage-banyandb-plugin/src/main/resources/metadata/profile_task_segment_snapshot.json
index b63b29c2c2..a5fcbcbf5c 100644
--- 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/profile_task_segment_snapshot.json
@@ -1,14 +1,14 @@
 {
   "metadata": {
-    "name": "instance_traffic",
-    "group": "default"
+    "name": "profile_task_segment_snapshot",
+    "group": "default-stream"
   },
   "tag_families": [
     {
       "name": "data",
       "tags": [
         {
-          "name": "data_binary",
+          "name": "stack_binary",
           "type": "TAG_TYPE_DATA_BINARY"
         }
       ]
@@ -17,31 +17,28 @@
       "name": "searchable",
       "tags": [
         {
-          "name": "service_id",
+          "name": "task_id",
           "type": "TAG_TYPE_STRING"
         },
         {
-          "name": "last_ping",
+          "name": "segment_id",
+          "type": "TAG_TYPE_STRING"
+        },
+        {
+          "name": "dump_time",
           "type": "TAG_TYPE_INT"
         },
         {
-          "name": "id",
-          "type": "TAG_TYPE_STRING"
+          "name": "sequence",
+          "type": "TAG_TYPE_INT"
         }
       ]
     }
   ],
   "entity": {
     "tag_names": [
-
+      "task_id"
     ]
   },
-  "opts": {
-    "shard_num": 2,
-    "ttl": {
-      "val": 7,
-      "unit": "DURATION_UNIT_DAY"
-    }
-  },
-  "updated_at_nanoseconds": "2021-04-15T01:30:15.01Z"
+  "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
index 066fa45c38..7a8343d45c 100644
--- 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
@@ -1,7 +1,7 @@
 {
   "metadata": {
     "name": "segment",
-    "group": "default"
+    "group": "default-stream"
   },
   "tag_families": [
     {
@@ -82,12 +82,5 @@
       "is_error"
     ]
   },
-  "opts": {
-    "shard_num": 2,
-    "ttl": {
-      "val": 7,
-      "unit": "DURATION_UNIT_DAY"
-    }
-  },
-  "updated_at_nanoseconds": "2021-04-15T01:30:15.01Z"
+  "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
index 1a6f380e62..edd49ef287 100644
--- 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
@@ -1,7 +1,7 @@
 {
   "metadata": {
     "name": "service_instance_relation_client_side",
-    "group": "default"
+    "group": "default-stream"
   },
   "tag_families": [
     {
@@ -41,6 +41,8 @@
   ],
   "entity": {
     "tag_names": [
+      "source_service_id",
+      "dest_service_id"
     ]
   },
   "opts": {
@@ -50,5 +52,5 @@
       "unit": "DURATION_UNIT_DAY"
     }
   },
-  "updated_at_nanoseconds": "2021-04-15T01:30:15.01Z"
+  "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
index 2fa5c396b4..a8c6089421 100644
--- 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
@@ -1,7 +1,7 @@
 {
   "metadata": {
     "name": "service_instance_relation_server_side",
-    "group": "default"
+    "group": "default-stream"
   },
   "tag_families": [
     {
@@ -41,6 +41,8 @@
   ],
   "entity": {
     "tag_names": [
+      "source_service_id",
+      "dest_service_id"
     ]
   },
   "opts": {
@@ -50,5 +52,5 @@
       "unit": "DURATION_UNIT_DAY"
     }
   },
-  "updated_at_nanoseconds": "2021-04-15T01:30:15.01Z"
+  "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
index b12e95adaa..1f74420c2c 100644
--- 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
@@ -1,7 +1,7 @@
 {
   "metadata": {
     "name": "service_relation_client_side",
-    "group": "default"
+    "group": "default-stream"
   },
   "tag_families": [
     {
@@ -33,14 +33,9 @@
   ],
   "entity": {
     "tag_names": [
+      "source_service_id",
+      "dest_service_id"
     ]
   },
-  "opts": {
-    "shard_num": 2,
-    "ttl": {
-      "val": 7,
-      "unit": "DURATION_UNIT_DAY"
-    }
-  },
-  "updated_at_nanoseconds": "2021-04-15T01:30:15.01Z"
+  "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
index 8844639714..13c2cc6177 100644
--- 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
@@ -1,7 +1,7 @@
 {
   "metadata": {
     "name": "service_relation_server_side",
-    "group": "default"
+    "group": "default-stream"
   },
   "tag_families": [
     {
@@ -33,14 +33,9 @@
   ],
   "entity": {
     "tag_names": [
+      "source_service_id",
+      "dest_service_id"
     ]
   },
-  "opts": {
-    "shard_num": 2,
-    "ttl": {
-      "val": 7,
-      "unit": "DURATION_UNIT_DAY"
-    }
-  },
-  "updated_at_nanoseconds": "2021-04-15T01:30:15.01Z"
+  "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
index ba0f1c07ed..b009a199cf 100644
--- 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
@@ -1,7 +1,7 @@
 {
   "metadata": {
-    "name": "endpoint_traffic",
-    "group": "default"
+    "name": "service_traffic",
+    "group": "default-stream"
   },
   "tag_families": [
     {
@@ -37,14 +37,8 @@
   ],
   "entity": {
     "tag_names": [
+      "service_id"
     ]
   },
-  "opts": {
-    "shard_num": 2,
-    "ttl": {
-      "val": 7,
-      "unit": "DURATION_UNIT_DAY"
-    }
-  },
-  "updated_at_nanoseconds": "2021-04-15T01:30:15.01Z"
+  "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
index e2a404ff5f..b01e8baae0 100644
--- 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
@@ -1,7 +1,7 @@
 {
   "metadata": {
     "name": "ui_template",
-    "group": "default"
+    "group": "default-stream"
   },
   "tag_families": [
     {
@@ -37,14 +37,8 @@
   ],
   "entity": {
     "tag_names": [
+      "name"
     ]
   },
-  "opts": {
-    "shard_num": 2,
-    "ttl": {
-      "val": 52000,
-      "unit": "DURATION_UNIT_WEEK"
-    }
-  },
-  "updated_at_nanoseconds": "2021-04-15T01:30:15.01Z"
+  "updated_at": "2021-04-15T01:30:15.01Z"
 }
\ No newline at end of file