You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@skywalking.apache.org by ha...@apache.org on 2024/04/07 23:25:35 UTC

(skywalking-banyandb-java-client) 01/01: Bump api

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

hanahmily pushed a commit to branch bump-api
in repository https://gitbox.apache.org/repos/asf/skywalking-banyandb-java-client.git

commit 0dcb1e0a7acf04f14054d2dad49a7130d56754b1
Author: Gao Hongtao <ha...@gmail.com>
AuthorDate: Mon Apr 8 07:25:09 2024 +0800

    Bump api
    
    Signed-off-by: Gao Hongtao <ha...@gmail.com>
---
 .../banyandb/v1/client/metadata/Group.java         | 19 ++----
 .../banyandb/v1/client/metadata/IndexRule.java     | 47 +++-----------
 src/main/proto/banyandb/v1/banyandb-common.proto   | 11 ++--
 src/main/proto/banyandb/v1/banyandb-database.proto | 72 ++++++++++------------
 .../v1/client/BanyanDBClientMeasureQueryTest.java  |  2 +-
 .../v1/client/BanyanDBClientMeasureWriteTest.java  |  2 +-
 .../v1/client/BanyanDBClientStreamQueryTest.java   |  2 +-
 .../v1/client/BanyanDBClientStreamWriteTest.java   |  2 +-
 .../banyandb/v1/client/BanyanDBClientTestCI.java   |  4 +-
 .../v1/client/ITBanyanDBMeasureQueryTests.java     |  4 +-
 .../v1/client/ITBanyanDBStreamQueryTests.java      |  4 +-
 .../metadata/IndexRuleMetadataRegistryTest.java    |  8 +--
 .../metadata/MeasureMetadataRegistryTest.java      |  6 +-
 .../metadata/StreamMetadataRegistryTest.java       |  6 +-
 14 files changed, 71 insertions(+), 118 deletions(-)

diff --git a/src/main/java/org/apache/skywalking/banyandb/v1/client/metadata/Group.java b/src/main/java/org/apache/skywalking/banyandb/v1/client/metadata/Group.java
index 4fcca7d..0d7cb09 100644
--- a/src/main/java/org/apache/skywalking/banyandb/v1/client/metadata/Group.java
+++ b/src/main/java/org/apache/skywalking/banyandb/v1/client/metadata/Group.java
@@ -38,37 +38,32 @@ public abstract class Group extends NamedSchema<BanyandbCommon.Group> {
      */
     abstract int shardNum();
 
-    @Nullable
-    abstract IntervalRule blockInterval();
-
     @Nullable
     abstract IntervalRule segmentInterval();
 
     @Nullable
     abstract IntervalRule ttl();
 
-    public static Group create(String name, Catalog catalog, int shardNum, IntervalRule blockInterval, IntervalRule segmentInterval, IntervalRule ttl) {
+    public static Group create(String name, Catalog catalog, int shardNum, IntervalRule segmentInterval, IntervalRule ttl) {
         Preconditions.checkArgument(shardNum > 0, "shardNum should more than 0");
-        Preconditions.checkNotNull(blockInterval, "blockInterval is null");
         Preconditions.checkNotNull(segmentInterval, "segmentInterval is null");
         Preconditions.checkNotNull(ttl, "ttl is null");
-        return new AutoValue_Group(null, name, null, catalog, shardNum, blockInterval, segmentInterval, ttl);
+        return new AutoValue_Group(null, name, null, catalog, shardNum, segmentInterval, ttl);
     }
 
-    public static Group create(String name, Catalog catalog, int shardNum, IntervalRule blockInterval, IntervalRule segmentInterval, IntervalRule ttl, ZonedDateTime updatedAt) {
+    public static Group create(String name, Catalog catalog, int shardNum, IntervalRule segmentInterval, IntervalRule ttl, ZonedDateTime updatedAt) {
         Preconditions.checkArgument(shardNum > 0, "shardNum should more than 0");
-        Preconditions.checkNotNull(blockInterval, "blockInterval is null");
         Preconditions.checkNotNull(segmentInterval, "segmentInterval is null");
         Preconditions.checkNotNull(ttl, "ttl is null");
-        return new AutoValue_Group(null, name, updatedAt, catalog, shardNum, blockInterval, segmentInterval, ttl);
+        return new AutoValue_Group(null, name, updatedAt, catalog, shardNum, segmentInterval, ttl);
     }
 
     public static Group create(String name) {
-        return new AutoValue_Group(null, name, null, Catalog.UNSPECIFIED, 0, null, null, null);
+        return new AutoValue_Group(null, name, null, Catalog.UNSPECIFIED, 0, null, null);
     }
 
     public static Group create(String name, ZonedDateTime updatedAt) {
-        return new AutoValue_Group(null, name, updatedAt, Catalog.UNSPECIFIED, 0, null, null, null);
+        return new AutoValue_Group(null, name, updatedAt, Catalog.UNSPECIFIED, 0, null, null);
     }
 
         @Override
@@ -80,7 +75,6 @@ public abstract class Group extends NamedSchema<BanyandbCommon.Group> {
             if (shardNum() > 0) {
                 builder.setResourceOpts(BanyandbCommon.ResourceOpts.newBuilder()
                         .setShardNum(shardNum())
-                        .setBlockInterval(blockInterval().serialize())
                         .setSegmentInterval(segmentInterval().serialize())
                         .setTtl(ttl().serialize())
                         .build());
@@ -104,7 +98,6 @@ public abstract class Group extends NamedSchema<BanyandbCommon.Group> {
                 TimeUtils.parseTimestamp(group.getUpdatedAt()),
                 catalog,
                 opts == null ? 0 : opts.getShardNum(),
-                opts == null ? null : IntervalRule.fromProtobuf(opts.getBlockInterval()),
                 opts == null ? null : IntervalRule.fromProtobuf(opts.getSegmentInterval()),
                 opts == null ? null : IntervalRule.fromProtobuf(opts.getTtl()));
     }
diff --git a/src/main/java/org/apache/skywalking/banyandb/v1/client/metadata/IndexRule.java b/src/main/java/org/apache/skywalking/banyandb/v1/client/metadata/IndexRule.java
index 99aa088..72fe375 100644
--- a/src/main/java/org/apache/skywalking/banyandb/v1/client/metadata/IndexRule.java
+++ b/src/main/java/org/apache/skywalking/banyandb/v1/client/metadata/IndexRule.java
@@ -27,6 +27,7 @@ import org.apache.skywalking.banyandb.v1.client.util.TimeUtils;
 
 import javax.annotation.Nullable;
 import java.time.ZonedDateTime;
+import java.util.Objects;
 
 @AutoValue
 public abstract class IndexRule extends NamedSchema<BanyandbDatabase.IndexRule> {
@@ -42,11 +43,6 @@ public abstract class IndexRule extends NamedSchema<BanyandbDatabase.IndexRule>
      */
     abstract IndexType indexType();
 
-    /**
-     * indexLocation indicates where to store index.
-     */
-    abstract IndexLocation indexLocation();
-
     /**
      * analyzer indicates how to analyze the value.
      */
@@ -63,20 +59,18 @@ public abstract class IndexRule extends NamedSchema<BanyandbDatabase.IndexRule>
         return toBuilder().setAnalyzer(analyzer).build();
     }
 
-    public static IndexRule create(String name, IndexType indexType, IndexLocation indexLocation) {
+    public static IndexRule create(String name, IndexType indexType) {
         return new AutoValue_IndexRule.Builder().setName(name)
                 .setTags(ImmutableList.of(name))
                 .setIndexType(indexType)
-                .setIndexLocation(indexLocation)
                 .build();
     }
 
     @VisibleForTesting
-    static IndexRule create(String group, String name, IndexType indexType, IndexLocation indexLocation) {
+    static IndexRule create(String group, String name, IndexType indexType) {
         return new AutoValue_IndexRule.Builder().setGroup(group).setName(name)
                 .setTags(ImmutableList.of(name))
                 .setIndexType(indexType)
-                .setIndexLocation(indexLocation)
                 .build();
     }
 
@@ -90,8 +84,6 @@ public abstract class IndexRule extends NamedSchema<BanyandbDatabase.IndexRule>
 
         abstract Builder setIndexType(IndexType indexType);
 
-        abstract Builder setIndexLocation(IndexLocation indexLocation);
-
         abstract Builder setAnalyzer(Analyzer analyzer);
 
         abstract Builder setUpdatedAt(ZonedDateTime updatedAt);
@@ -104,7 +96,6 @@ public abstract class IndexRule extends NamedSchema<BanyandbDatabase.IndexRule>
         final BanyandbDatabase.IndexRule.Builder b = BanyandbDatabase.IndexRule.newBuilder()
                 .setMetadata(buildMetadata())
                 .addAllTags(tags())
-                .setLocation(indexLocation().location)
                 .setType(indexType().type);
         Analyzer a = analyzer();
         if (a != null) {
@@ -118,13 +109,11 @@ public abstract class IndexRule extends NamedSchema<BanyandbDatabase.IndexRule>
 
     public static IndexRule fromProtobuf(BanyandbDatabase.IndexRule pb) {
         IndexType indexType = IndexType.fromProtobuf(pb.getType());
-        IndexLocation indexLocation = IndexLocation.fromProtobuf(pb.getLocation());
         Analyzer analyzer = Analyzer.fromProtobuf(pb.getAnalyzer());
         return new AutoValue_IndexRule.Builder()
                 .setGroup(pb.getMetadata().getGroup())
                 .setName(pb.getMetadata().getName())
                 .setUpdatedAt(TimeUtils.parseTimestamp(pb.getUpdatedAt()))
-                .setIndexLocation(indexLocation)
                 .setIndexType(indexType)
                 .setAnalyzer(analyzer)
                 .setTags(ImmutableList.copyOf(pb.getTagsList())).build();
@@ -132,37 +121,15 @@ public abstract class IndexRule extends NamedSchema<BanyandbDatabase.IndexRule>
 
     @RequiredArgsConstructor
     public enum IndexType {
-        TREE(BanyandbDatabase.IndexRule.Type.TYPE_TREE), INVERTED(BanyandbDatabase.IndexRule.Type.TYPE_INVERTED);
+        INVERTED(BanyandbDatabase.IndexRule.Type.TYPE_INVERTED);
 
         private final BanyandbDatabase.IndexRule.Type type;
 
         private static IndexType fromProtobuf(BanyandbDatabase.IndexRule.Type type) {
-            switch (type) {
-                case TYPE_TREE:
-                    return TREE;
-                case TYPE_INVERTED:
-                    return INVERTED;
-                default:
-                    throw new IllegalArgumentException("unrecognized index type");
-            }
-        }
-    }
-
-    @RequiredArgsConstructor
-    public enum IndexLocation {
-        SERIES(BanyandbDatabase.IndexRule.Location.LOCATION_SERIES), GLOBAL(BanyandbDatabase.IndexRule.Location.LOCATION_GLOBAL);
-
-        private final BanyandbDatabase.IndexRule.Location location;
-
-        private static IndexLocation fromProtobuf(BanyandbDatabase.IndexRule.Location loc) {
-            switch (loc) {
-                case LOCATION_GLOBAL:
-                    return GLOBAL;
-                case LOCATION_SERIES:
-                    return SERIES;
-                default:
-                    throw new IllegalArgumentException("unrecognized index location");
+            if (Objects.requireNonNull(type) == BanyandbDatabase.IndexRule.Type.TYPE_INVERTED) {
+                return INVERTED;
             }
+            throw new IllegalArgumentException("unrecognized index type");
         }
     }
 
diff --git a/src/main/proto/banyandb/v1/banyandb-common.proto b/src/main/proto/banyandb/v1/banyandb-common.proto
index 112b8f9..f8d0f3c 100644
--- a/src/main/proto/banyandb/v1/banyandb-common.proto
+++ b/src/main/proto/banyandb/v1/banyandb-common.proto
@@ -35,7 +35,9 @@ message Metadata {
   // group contains a set of options, like retention policy, max
   string group = 1;
   // name of the entity
-  string name = 2 [(validate.rules).string.min_len = 1];
+  string name = 2;
+  // id is the unique identifier of the entity
+  // if id is not set, the system will generate a unique id
   uint32 id = 3;
   // readonly. create_revision is the revision of last creation on this key.
   int64 create_revision = 4;
@@ -58,13 +60,10 @@ message IntervalRule {
 message ResourceOpts {
   // shard_num is the number of shards
   uint32 shard_num = 1 [(validate.rules).uint32.gt = 0];
-  // block_interval indicates the length of a block
-  // block_interval should be less than or equal to segment_interval
-  IntervalRule block_interval = 2 [(validate.rules).message.required = true];
   // segment_interval indicates the length of a segment
-  IntervalRule segment_interval = 3 [(validate.rules).message.required = true];;
+  IntervalRule segment_interval = 2 [(validate.rules).message.required = true];
   // ttl indicates time to live, how long the data will be cached
-  IntervalRule ttl = 4 [(validate.rules).message.required = true];
+  IntervalRule ttl = 3 [(validate.rules).message.required = true];
 }
 
 // Group is an internal object for Group management
diff --git a/src/main/proto/banyandb/v1/banyandb-database.proto b/src/main/proto/banyandb/v1/banyandb-database.proto
index c532df2..3f4aebe 100644
--- a/src/main/proto/banyandb/v1/banyandb-database.proto
+++ b/src/main/proto/banyandb/v1/banyandb-database.proto
@@ -22,6 +22,7 @@ option java_package = "org.apache.skywalking.banyandb.database.v1";
 package banyandb.database.v1;
 
 import "google/protobuf/timestamp.proto";
+import "validate/validate.proto";
 import "banyandb/v1/banyandb-common.proto";
 import "banyandb/v1/banyandb-model.proto";
 
@@ -32,18 +33,17 @@ enum TagType {
   TAG_TYPE_STRING_ARRAY = 3;
   TAG_TYPE_INT_ARRAY = 4;
   TAG_TYPE_DATA_BINARY = 5;
-  TAG_TYPE_ID = 6;
 }
 
 message TagFamilySpec {
-  string name = 1;
+  string name = 1 [(validate.rules).string.min_len = 1];
   // tags defines accepted tags
-  repeated TagSpec tags = 2;
+  repeated TagSpec tags = 2 [(validate.rules).repeated.min_items = 1];
 }
 
 message TagSpec {
-  string name = 1;
-  TagType type = 2;
+  string name = 1 [(validate.rules).string.min_len = 1];
+  TagType type = 2 [(validate.rules).enum.defined_only = true];
   // indexed_only indicates whether the tag is stored
   // True: It's indexed only, but not stored
   // False: it's stored and indexed
@@ -53,17 +53,17 @@ message TagSpec {
 // Stream intends to store streaming data, for example, traces or logs
 message Stream {
   // metadata is the identity of a trace series
-  common.v1.Metadata metadata = 1;
+  common.v1.Metadata metadata = 1 [(validate.rules).message.required = true];
   // tag_families
-  repeated TagFamilySpec tag_families = 2;
+  repeated TagFamilySpec tag_families = 2 [(validate.rules).repeated.min_items = 1];
   // entity indicates how to generate a series and shard a stream
-  Entity entity = 3;
+  Entity entity = 3 [(validate.rules).message.required = true];
   // updated_at indicates when the stream is updated
   google.protobuf.Timestamp updated_at = 4;
 }
 
 message Entity {
-  repeated string tag_names = 1;
+  repeated string tag_names = 1 [(validate.rules).repeated.min_items = 1];
 }
 
 enum FieldType {
@@ -87,25 +87,25 @@ enum CompressionMethod {
 // FieldSpec is the specification of field
 message FieldSpec {
   // name is the identity of a field
-  string name = 1;
+  string name = 1 [(validate.rules).string.min_len = 1];
   // field_type denotes the type of field value
-  FieldType field_type = 2;
+  FieldType field_type = 2 [(validate.rules).enum.defined_only = true];
   // encoding_method indicates how to encode data during writing
-  EncodingMethod encoding_method = 3;
+  EncodingMethod encoding_method = 3 [(validate.rules).enum.defined_only = true];
   // compression_method indicates how to compress data during writing
-  CompressionMethod compression_method = 4;
+  CompressionMethod compression_method = 4 [(validate.rules).enum.defined_only = true];
 }
 
 // Measure intends to store data point
 message Measure {
   // metadata is the identity of a measure
-  common.v1.Metadata metadata = 1;
+  common.v1.Metadata metadata = 1 [(validate.rules).message.required = true];
   // tag_families are for filter measures
-  repeated TagFamilySpec tag_families = 2;
+  repeated TagFamilySpec tag_families = 2 [(validate.rules).repeated.min_items = 1];
   // fields denote measure values
   repeated FieldSpec fields = 3;
   // entity indicates which tags will be to generate a series and shard a measure
-  Entity entity = 4;
+  Entity entity = 4 [(validate.rules).message.required = true];
   // interval indicates how frequently to send a data point
   // valid time units are "ns", "us" (or "µs"), "ms", "s", "m", "h", "d".
   string interval = 5;
@@ -116,15 +116,16 @@ message Measure {
 // TopNAggregation generates offline TopN statistics for a measure's TopN approximation
 message TopNAggregation {
   // metadata is the identity of an aggregation
-  common.v1.Metadata metadata = 1;
+  common.v1.Metadata metadata = 1 [(validate.rules).message.required = true];
   // source_measure denotes the data source of this aggregation
-  common.v1.Metadata source_measure = 2;
+  common.v1.Metadata source_measure = 2 [(validate.rules).message.required = true];
   // field_name is the name of field used for ranking
-  string field_name = 3;
+  string field_name = 3 [(validate.rules).string.min_len = 1];
   // field_value_sort indicates how to sort fields
   // ASC: bottomN
   // DESC: topN
   // UNSPECIFIED: topN + bottomN
+  // todo validate plugin exist bug https://github.com/bufbuild/protoc-gen-validate/issues/672
   model.v1.Sort field_value_sort = 4;
   // group_by_tag_names groups data points into statistical counters
   repeated string group_by_tag_names = 5;
@@ -142,28 +143,20 @@ message TopNAggregation {
 // IndexRule should bind to a subject through an IndexRuleBinding to generate proper indices.
 message IndexRule {
   // metadata define the rule's identity
-  common.v1.Metadata metadata = 1;
+  common.v1.Metadata metadata = 1 [(validate.rules).message.required = true];
   // tags are the combination that refers to an indexed object
   // If the elements in tags are more than 1, the object will generate a multi-tag index
   // Caveat: All tags in a multi-tag MUST have an identical IndexType
-  repeated string tags = 2;
+  repeated string tags = 2 [(validate.rules).repeated.min_items = 1];
   // Type determine the index structure under the hood
   enum Type {
     TYPE_UNSPECIFIED = 0;
-    TYPE_TREE = 1;
-    TYPE_INVERTED = 2;
+    TYPE_INVERTED = 1;
   }
   // type is the IndexType of this IndexObject.
-  Type type = 3;
-  enum Location {
-    LOCATION_UNSPECIFIED = 0;
-    LOCATION_SERIES = 1;
-    LOCATION_GLOBAL = 2;
-  }
-  // location indicates where to store index.
-  Location location = 4;
+  Type type = 3 [(validate.rules).enum.defined_only = true];
   // updated_at indicates when the IndexRule is updated
-  google.protobuf.Timestamp updated_at = 5;
+  google.protobuf.Timestamp updated_at = 4;
   enum Analyzer {
     ANALYZER_UNSPECIFIED = 0;
     // Keyword analyzer is a “noop” analyzer which returns the entire input string as a single token.
@@ -176,15 +169,16 @@ message IndexRule {
     ANALYZER_SIMPLE = 3;
   }
   // analyzer analyzes tag value to support the full-text searching for TYPE_INVERTED indices.
-  Analyzer analyzer = 6;
+  Analyzer analyzer = 5;
 }
 
 // Subject defines which stream or measure would generate indices
 message Subject {
   // catalog is where the subject belongs to
+  // todo validate plugin exist bug https://github.com/bufbuild/protoc-gen-validate/issues/672
   common.v1.Catalog catalog = 1;
   // name refers to a stream or measure in a particular catalog
-  string name = 2;
+  string name = 2 [(validate.rules).string.min_len = 1];
 }
 
 // IndexRuleBinding is a bridge to connect severalIndexRules to a subject
@@ -192,16 +186,16 @@ message Subject {
 // to control how to generate time series indices.
 message IndexRuleBinding {
   // metadata is the identity of this binding
-  common.v1.Metadata metadata = 1;
+  common.v1.Metadata metadata = 1 [(validate.rules).message.required = true];
   // rules refers to the IndexRule
-  repeated string rules = 2;
+  repeated string rules = 2 [(validate.rules).repeated.min_items = 1];
   // subject indicates the subject of binding action
-  Subject subject = 3;
+  Subject subject = 3 [(validate.rules).message.required = true];
   // begin_at_nanoseconds is the timestamp, after which the binding will be active
-  google.protobuf.Timestamp begin_at = 4;
+  google.protobuf.Timestamp begin_at = 4 [(validate.rules).timestamp.required = true];
   // expire_at_nanoseconds it the timestamp, after which the binding will be inactive
   // expire_at_nanoseconds must be larger than begin_at_nanoseconds
-  google.protobuf.Timestamp expire_at = 5;
+  google.protobuf.Timestamp expire_at = 5 [(validate.rules).timestamp.required = true];
   // updated_at indicates when the IndexRuleBinding is updated
   google.protobuf.Timestamp updated_at = 6;
 }
diff --git a/src/test/java/org/apache/skywalking/banyandb/v1/client/BanyanDBClientMeasureQueryTest.java b/src/test/java/org/apache/skywalking/banyandb/v1/client/BanyanDBClientMeasureQueryTest.java
index df13c15..cc93f34 100644
--- a/src/test/java/org/apache/skywalking/banyandb/v1/client/BanyanDBClientMeasureQueryTest.java
+++ b/src/test/java/org/apache/skywalking/banyandb/v1/client/BanyanDBClientMeasureQueryTest.java
@@ -70,7 +70,7 @@ public class BanyanDBClientMeasureQueryTest extends AbstractBanyanDBClientTest {
                         .build())
                 .addField(Measure.FieldSpec.newIntField("total").compressWithZSTD().encodeWithGorilla().build())
                 .addField(Measure.FieldSpec.newIntField("value").compressWithZSTD().encodeWithGorilla().build())
-                .addIndex(IndexRule.create("scope", IndexRule.IndexType.INVERTED, IndexRule.IndexLocation.SERIES))
+                .addIndex(IndexRule.create("scope", IndexRule.IndexType.INVERTED))
                 .build();
         client.define(m);
     }
diff --git a/src/test/java/org/apache/skywalking/banyandb/v1/client/BanyanDBClientMeasureWriteTest.java b/src/test/java/org/apache/skywalking/banyandb/v1/client/BanyanDBClientMeasureWriteTest.java
index f5b966a..7aa46b0 100644
--- a/src/test/java/org/apache/skywalking/banyandb/v1/client/BanyanDBClientMeasureWriteTest.java
+++ b/src/test/java/org/apache/skywalking/banyandb/v1/client/BanyanDBClientMeasureWriteTest.java
@@ -66,7 +66,7 @@ public class BanyanDBClientMeasureWriteTest extends AbstractBanyanDBClientTest {
                         .build())
                 .addField(Measure.FieldSpec.newIntField("total").compressWithZSTD().encodeWithGorilla().build())
                 .addField(Measure.FieldSpec.newIntField("value").compressWithZSTD().encodeWithGorilla().build())
-                .addIndex(IndexRule.create("scope", IndexRule.IndexType.INVERTED, IndexRule.IndexLocation.SERIES))
+                .addIndex(IndexRule.create("scope", IndexRule.IndexType.INVERTED))
                 .build();
         client.define(measure);
     }
diff --git a/src/test/java/org/apache/skywalking/banyandb/v1/client/BanyanDBClientStreamQueryTest.java b/src/test/java/org/apache/skywalking/banyandb/v1/client/BanyanDBClientStreamQueryTest.java
index 9ed482e..1a737fd 100644
--- a/src/test/java/org/apache/skywalking/banyandb/v1/client/BanyanDBClientStreamQueryTest.java
+++ b/src/test/java/org/apache/skywalking/banyandb/v1/client/BanyanDBClientStreamQueryTest.java
@@ -81,7 +81,7 @@ public class BanyanDBClientStreamQueryTest extends AbstractBanyanDBClientTest {
                         .addTagSpec(TagFamilySpec.TagSpec.newIntTag("start_time"))
                         .addTagSpec(TagFamilySpec.TagSpec.newIntTag("duration"))
                         .build())
-                .addIndex(IndexRule.create("trace_id", IndexRule.IndexType.INVERTED, IndexRule.IndexLocation.GLOBAL))
+                .addIndex(IndexRule.create("trace_id", IndexRule.IndexType.INVERTED))
                 .build();
         this.client.define(expectedStream);
     }
diff --git a/src/test/java/org/apache/skywalking/banyandb/v1/client/BanyanDBClientStreamWriteTest.java b/src/test/java/org/apache/skywalking/banyandb/v1/client/BanyanDBClientStreamWriteTest.java
index f69147a..0112730 100644
--- a/src/test/java/org/apache/skywalking/banyandb/v1/client/BanyanDBClientStreamWriteTest.java
+++ b/src/test/java/org/apache/skywalking/banyandb/v1/client/BanyanDBClientStreamWriteTest.java
@@ -99,7 +99,7 @@ public class BanyanDBClientStreamWriteTest extends AbstractBanyanDBClientTest {
                         .addTagSpec(TagFamilySpec.TagSpec.newStringTag("mq.topic"))
                         .addTagSpec(TagFamilySpec.TagSpec.newStringTag("mq.queue"))
                         .build())
-                .addIndex(IndexRule.create("trace_id", IndexRule.IndexType.INVERTED, IndexRule.IndexLocation.GLOBAL))
+                .addIndex(IndexRule.create("trace_id", IndexRule.IndexType.INVERTED))
                 .build();
         this.client.define(stream);
     }
diff --git a/src/test/java/org/apache/skywalking/banyandb/v1/client/BanyanDBClientTestCI.java b/src/test/java/org/apache/skywalking/banyandb/v1/client/BanyanDBClientTestCI.java
index a6359f1..e1e7bdd 100644
--- a/src/test/java/org/apache/skywalking/banyandb/v1/client/BanyanDBClientTestCI.java
+++ b/src/test/java/org/apache/skywalking/banyandb/v1/client/BanyanDBClientTestCI.java
@@ -28,9 +28,9 @@ import java.io.IOException;
 
 @Slf4j
 public class BanyanDBClientTestCI {
-    private static final String REGISTRY = "ghcr.io";
+    private static final String REGISTRY = "docker.io";
     private static final String IMAGE_NAME = "apache/skywalking-banyandb";
-    private static final String TAG = "f3abf75e66695f3c9fcae3138ad55e7a9d74f39a";
+    private static final String TAG = "v0.0.0-dev";
 
     private static final String IMAGE = REGISTRY + "/" + IMAGE_NAME + ":" + TAG;
 
diff --git a/src/test/java/org/apache/skywalking/banyandb/v1/client/ITBanyanDBMeasureQueryTests.java b/src/test/java/org/apache/skywalking/banyandb/v1/client/ITBanyanDBMeasureQueryTests.java
index 3f8c731..faa80d6 100644
--- a/src/test/java/org/apache/skywalking/banyandb/v1/client/ITBanyanDBMeasureQueryTests.java
+++ b/src/test/java/org/apache/skywalking/banyandb/v1/client/ITBanyanDBMeasureQueryTests.java
@@ -48,9 +48,9 @@ public class ITBanyanDBMeasureQueryTests extends BanyanDBClientTestCI {
     @Before
     public void setUp() throws IOException, BanyanDBException, InterruptedException {
         this.setUpConnection();
-        Group expectedGroup = this.client.define(Group.create("sw_metric", Catalog.MEASURE, 2, IntervalRule.create(IntervalRule.Unit.HOUR, 4), IntervalRule.create(IntervalRule.Unit.DAY, 1), IntervalRule.create(IntervalRule.Unit.DAY, 7)));
+        Group expectedGroup = this.client.define(Group.create("sw_metric", Catalog.MEASURE, 2, IntervalRule.create(IntervalRule.Unit.HOUR, 4), IntervalRule.create(IntervalRule.Unit.DAY, 7)));
         Assert.assertNotNull(expectedGroup);
-        Measure expectedMeasure = Measure.create("sw_metric", "service_cpm_minute", Duration.ofMinutes(1)).setEntityRelativeTags("entity_id").addTagFamily(TagFamilySpec.create("default").addTagSpec(TagFamilySpec.TagSpec.newStringTag("entity_id")).build()).addField(Measure.FieldSpec.newIntField("total").compressWithZSTD().encodeWithGorilla().build()).addField(Measure.FieldSpec.newIntField("value").compressWithZSTD().encodeWithGorilla().build()).addIndex(IndexRule.create("scope", IndexRule [...]
+        Measure expectedMeasure = Measure.create("sw_metric", "service_cpm_minute", Duration.ofMinutes(1)).setEntityRelativeTags("entity_id").addTagFamily(TagFamilySpec.create("default").addTagSpec(TagFamilySpec.TagSpec.newStringTag("entity_id")).build()).addField(Measure.FieldSpec.newIntField("total").compressWithZSTD().encodeWithGorilla().build()).addField(Measure.FieldSpec.newIntField("value").compressWithZSTD().encodeWithGorilla().build()).addIndex(IndexRule.create("scope", IndexRule [...]
         client.define(expectedMeasure);
         Assert.assertNotNull(expectedMeasure);
         processor = client.buildMeasureWriteProcessor(1000, 1, 1);
diff --git a/src/test/java/org/apache/skywalking/banyandb/v1/client/ITBanyanDBStreamQueryTests.java b/src/test/java/org/apache/skywalking/banyandb/v1/client/ITBanyanDBStreamQueryTests.java
index 9088ebe..7091221 100644
--- a/src/test/java/org/apache/skywalking/banyandb/v1/client/ITBanyanDBStreamQueryTests.java
+++ b/src/test/java/org/apache/skywalking/banyandb/v1/client/ITBanyanDBStreamQueryTests.java
@@ -47,7 +47,7 @@ public class ITBanyanDBStreamQueryTests extends BanyanDBClientTestCI {
     public void setUp() throws IOException, BanyanDBException, InterruptedException {
         this.setUpConnection();
         Group expectedGroup = this.client.define(
-                Group.create("default", Catalog.STREAM, 2, IntervalRule.create(IntervalRule.Unit.HOUR, 4),
+                Group.create("default", Catalog.STREAM, 2,
                         IntervalRule.create(IntervalRule.Unit.DAY, 1),
                         IntervalRule.create(IntervalRule.Unit.DAY, 7))
         );
@@ -72,7 +72,7 @@ public class ITBanyanDBStreamQueryTests extends BanyanDBClientTestCI {
                         .addTagSpec(TagFamilySpec.TagSpec.newStringTag("mq.topic"))
                         .addTagSpec(TagFamilySpec.TagSpec.newStringTag("mq.queue"))
                         .build())
-                .addIndex(IndexRule.create("trace_id", IndexRule.IndexType.INVERTED, IndexRule.IndexLocation.GLOBAL))
+                .addIndex(IndexRule.create("trace_id", IndexRule.IndexType.INVERTED))
                 .build();
         this.client.define(expectedStream);
         Assert.assertNotNull(expectedStream);
diff --git a/src/test/java/org/apache/skywalking/banyandb/v1/client/metadata/IndexRuleMetadataRegistryTest.java b/src/test/java/org/apache/skywalking/banyandb/v1/client/metadata/IndexRuleMetadataRegistryTest.java
index dcae37c..c5c229f 100644
--- a/src/test/java/org/apache/skywalking/banyandb/v1/client/metadata/IndexRuleMetadataRegistryTest.java
+++ b/src/test/java/org/apache/skywalking/banyandb/v1/client/metadata/IndexRuleMetadataRegistryTest.java
@@ -38,14 +38,14 @@ public class IndexRuleMetadataRegistryTest extends AbstractBanyanDBClientTest {
 
     @Test
     public void testIndexRuleRegistry_create() throws BanyanDBException {
-        IndexRule indexRule = IndexRule.create("default", "db.instance", IndexRule.IndexType.INVERTED, IndexRule.IndexLocation.SERIES);
+        IndexRule indexRule = IndexRule.create("default", "db.instance", IndexRule.IndexType.INVERTED);
         this.registry.create(indexRule);
         Assert.assertEquals(indexRuleRegistry.size(), 1);
     }
 
     @Test
     public void testIndexRuleRegistry_createAndGet() throws BanyanDBException {
-        IndexRule indexRule = IndexRule.create("default", "db.instance", IndexRule.IndexType.INVERTED, IndexRule.IndexLocation.SERIES);
+        IndexRule indexRule = IndexRule.create("default", "db.instance", IndexRule.IndexType.INVERTED);
         indexRule = indexRule.withAnalyzer(IndexRule.Analyzer.SIMPLE);
         this.registry.create(indexRule);
         IndexRule getIndexRule = this.registry.get("default", "db.instance");
@@ -56,7 +56,7 @@ public class IndexRuleMetadataRegistryTest extends AbstractBanyanDBClientTest {
 
     @Test
     public void testIndexRuleRegistry_createAndList() throws BanyanDBException {
-        IndexRule indexRule = IndexRule.create("default", "db.instance", IndexRule.IndexType.INVERTED, IndexRule.IndexLocation.SERIES);
+        IndexRule indexRule = IndexRule.create("default", "db.instance", IndexRule.IndexType.INVERTED);
         this.registry.create(indexRule);
         List<IndexRule> listIndexRule = this.registry.list("default");
         Assert.assertNotNull(listIndexRule);
@@ -66,7 +66,7 @@ public class IndexRuleMetadataRegistryTest extends AbstractBanyanDBClientTest {
 
     @Test
     public void testIndexRuleRegistry_createAndDelete() throws BanyanDBException {
-        IndexRule indexRule = IndexRule.create("default", "db.instance", IndexRule.IndexType.INVERTED, IndexRule.IndexLocation.SERIES);
+        IndexRule indexRule = IndexRule.create("default", "db.instance", IndexRule.IndexType.INVERTED);
         this.registry.create(indexRule);
         boolean deleted = this.registry.delete("default", "db.instance");
         Assert.assertTrue(deleted);
diff --git a/src/test/java/org/apache/skywalking/banyandb/v1/client/metadata/MeasureMetadataRegistryTest.java b/src/test/java/org/apache/skywalking/banyandb/v1/client/metadata/MeasureMetadataRegistryTest.java
index e87bef1..bd2fca4 100644
--- a/src/test/java/org/apache/skywalking/banyandb/v1/client/metadata/MeasureMetadataRegistryTest.java
+++ b/src/test/java/org/apache/skywalking/banyandb/v1/client/metadata/MeasureMetadataRegistryTest.java
@@ -44,7 +44,7 @@ public class MeasureMetadataRegistryTest extends AbstractBanyanDBClientTest {
                 .addField(Measure.FieldSpec.newIntField("total").compressWithZSTD().encodeWithGorilla().build())
                 .addField(Measure.FieldSpec.newIntField("value").compressWithZSTD().encodeWithGorilla().build())
                 .addField(Measure.FieldSpec.newFloatField("sum").compressWithZSTD().encodeWithGorilla().build())
-                .addIndex(IndexRule.create("scope", IndexRule.IndexType.INVERTED, IndexRule.IndexLocation.SERIES))
+                .addIndex(IndexRule.create("scope", IndexRule.IndexType.INVERTED))
                 .build();
         this.client.define(expectedMeasure);
         Assert.assertTrue(measureRegistry.containsKey("service_cpm_minute"));
@@ -66,7 +66,7 @@ public class MeasureMetadataRegistryTest extends AbstractBanyanDBClientTest {
                 .addField(Measure.FieldSpec.newIntField("total").compressWithZSTD().encodeWithGorilla().build())
                 .addField(Measure.FieldSpec.newIntField("value").compressWithZSTD().encodeWithGorilla().build())
                 .addField(Measure.FieldSpec.newFloatField("sum").compressWithZSTD().encodeWithGorilla().build())
-                .addIndex(IndexRule.create("scope", IndexRule.IndexType.INVERTED, IndexRule.IndexLocation.SERIES))
+                .addIndex(IndexRule.create("scope", IndexRule.IndexType.INVERTED))
                 .build();
         this.client.define(expectedMeasure);
         List<Measure> actualMeasures = new MeasureMetadataRegistry(this.channel).list("sw_metric");
@@ -86,7 +86,7 @@ public class MeasureMetadataRegistryTest extends AbstractBanyanDBClientTest {
                 .addField(Measure.FieldSpec.newIntField("total").compressWithZSTD().encodeWithGorilla().build())
                 .addField(Measure.FieldSpec.newIntField("value").compressWithZSTD().encodeWithGorilla().build())
                 .addField(Measure.FieldSpec.newFloatField("sum").compressWithZSTD().encodeWithGorilla().build())
-                .addIndex(IndexRule.create("scope", IndexRule.IndexType.INVERTED, IndexRule.IndexLocation.SERIES))
+                .addIndex(IndexRule.create("scope", IndexRule.IndexType.INVERTED))
                 .build();
         this.client.define(expectedMeasure);
         boolean deleted = this.client.delete(expectedMeasure);
diff --git a/src/test/java/org/apache/skywalking/banyandb/v1/client/metadata/StreamMetadataRegistryTest.java b/src/test/java/org/apache/skywalking/banyandb/v1/client/metadata/StreamMetadataRegistryTest.java
index 140608a..0e88def 100644
--- a/src/test/java/org/apache/skywalking/banyandb/v1/client/metadata/StreamMetadataRegistryTest.java
+++ b/src/test/java/org/apache/skywalking/banyandb/v1/client/metadata/StreamMetadataRegistryTest.java
@@ -46,7 +46,7 @@ public class StreamMetadataRegistryTest extends AbstractBanyanDBClientTest {
                         .addTagSpec(TagFamilySpec.TagSpec.newStringTag("service_id"))
                         .addTagSpec(TagFamilySpec.TagSpec.newStringTag("service_instance_id"))
                         .build())
-                .addIndex(IndexRule.create("trace_id", IndexRule.IndexType.INVERTED, IndexRule.IndexLocation.GLOBAL))
+                .addIndex(IndexRule.create("trace_id", IndexRule.IndexType.INVERTED))
                 .build();
         this.client.define(expectedStream);
         Assert.assertTrue(streamRegistry.containsKey("sw"));
@@ -69,7 +69,7 @@ public class StreamMetadataRegistryTest extends AbstractBanyanDBClientTest {
                         .addTagSpec(TagFamilySpec.TagSpec.newIntTag("state"))
                         .addTagSpec(TagFamilySpec.TagSpec.newStringTag("service_id"))
                         .build())
-                .addIndex(IndexRule.create("trace_id", IndexRule.IndexType.INVERTED, IndexRule.IndexLocation.GLOBAL))
+                .addIndex(IndexRule.create("trace_id", IndexRule.IndexType.INVERTED))
                 .build();
         client.define(expectedStream);
         List<Stream> actualStreams = new StreamMetadataRegistry(this.channel).list("default");
@@ -90,7 +90,7 @@ public class StreamMetadataRegistryTest extends AbstractBanyanDBClientTest {
                         .addTagSpec(TagFamilySpec.TagSpec.newIntTag("state"))
                         .addTagSpec(TagFamilySpec.TagSpec.newStringTag("service_id"))
                         .build())
-                .addIndex(IndexRule.create("trace_id", IndexRule.IndexType.INVERTED, IndexRule.IndexLocation.GLOBAL))
+                .addIndex(IndexRule.create("trace_id", IndexRule.IndexType.INVERTED))
                 .build();
         this.client.define(expectedStream);
         boolean deleted = this.client.delete(expectedStream);