タイムラインモデルを使用する場合は、TimelineStoreFactory、TimelineMetaStore、およびTimelineStoreを初期化する必要があります。このトピックでは、初期化の設定と操作の実行方法について説明します。
前提条件
AccessKeyペアが構成されていること。詳細については、AccessKeyペアの構成を参照してください。
Tablestoreインスタンスのエンドポイントが取得されていること。詳細については、Tablestoreインスタンスのエンドポイントの取得を参照してください。
TimelineStoreFactoryの初期化
SyncClientをパラメーターとして使用してTimelineStoreFactoryを初期化し、メタデータとタイムラインデータを管理するStoreを作成します。
エラーによる必要な再試行操作は、SyncClientの再試行ポリシーによって異なります。SyncClientを再試行操作用に構成できます。特別な要件がある場合は、RetryStrategy操作を呼び出してカスタム再試行ポリシーを指定できます。
/**
* 再試行ポリシーを構成します。
* コード:configuration.setRetryStrategy(new DefaultRetryStrategy());
**/
ClientConfiguration configuration = new ClientConfiguration();
SyncClient client = new SyncClient(
"http://instanceName.cn-shanghai.ots.aliyuncs.com",
System.getenv("OTS_AK_ENV"),
System.getenv("OTS_SK_ENV"),
"instanceName", configuration);
TimelineStoreFactory serviceFactory = new TimelineStoreFactoryImpl(client);
TimelineMetaStoreの初期化
メタテーブルのスキーマを作成します。スキーマには、IdentifierやMetaIndexなどのパラメーターが含まれます。TimelineStoreFactoryを使用して、メタデータを管理するStoreを作成して取得します。メタテーブル名、インデックス名、プライマリキーフィールド、インデックスタイプなどのパラメーターを指定する必要があります。
TimelineIdentifierSchema idSchema = new TimelineIdentifierSchema.Builder()
.addStringField("timeline_id").build();
IndexSchema metaIndex = new IndexSchema();
metaIndex.setFieldSchemas(Arrays.asList(// インデックスフィールドの名前とタイプを指定します。
new FieldSchema("group_name", FieldType.TEXT).setIndex(true).setAnalyzer(FieldSchema.Analyzer.MaxWord),
new FieldSchema("create_time", FieldType.LONG).setIndex(true)
));
TimelineMetaSchema metaSchema = new TimelineMetaSchema("groupMeta", idSchema)
.withIndex("metaIndex", metaIndex); // インデックスを構成します。
TimelineMetaStore timelineMetaStore = serviceFactory.createMetaStore(metaSchema);
テーブルの作成
metaSchemaのパラメーターに基づいてテーブルを作成します。metaSchemaでインデックスが構成されている場合、テーブルの作成後にインデックスが作成されます。
timelineMetaStore.prepareTables();
テーブルの削除
テーブルにインデックスが作成されている場合、テーブルの削除前にインデックスが削除されます。
timelineMetaStore.dropAllTables();
TimelineStoreの初期化
タイムラインテーブルのスキーマを作成します。スキーマには、IdentifierやTimelineIndexなどのパラメーターが含まれます。TimelineStoreFactoryを使用して、タイムラインデータを管理するStoreを作成して取得します。タイムラインテーブル名、インデックス名、プライマリキーフィールド、インデックスタイプなどのパラメーターを指定する必要があります。
BatchStore操作は、TablestoreのDefaultTableStoreWriterに基づいて同時実行パフォーマンスを向上させます。スレッドプール内の同時実行スレッド数を設定できます。
TimelineIdentifierSchema idSchema = new TimelineIdentifierSchema.Builder()
.addStringField("timeline_id").build();
IndexSchema timelineIndex = new IndexSchema();
timelineIndex.setFieldSchemas(Arrays.asList(// インデックスフィールドの名前とタイプを指定します。
new FieldSchema("text", FieldType.TEXT).setIndex(true).setAnalyzer(FieldSchema.Analyzer.MaxWord),
new FieldSchema("receivers", FieldType.KEYWORD).setIndex(true).setIsArray(true)
));
TimelineSchema timelineSchema = new TimelineSchema("timeline", idSchema)
.autoGenerateSeqId() // SequenceId値を生成する方法として、自動インクリメントプライマリキー列を指定します。
.setCallbackExecuteThreads(5) // DefaultTableStoreWriterの初期スレッド数を5に設定します。
.withIndex("metaIndex", timelineIndex); // インデックスを構成します。
TimelineStore timelineStore = serviceFactory.createTimelineStore(timelineSchema);
テーブルの作成
TimelineSchemaのパラメーターに基づいてテーブルを作成します。TimelineSchemaでインデックスが構成されている場合、テーブルの作成後にインデックスが作成されます。
timelineStore.prepareTables();
テーブルの削除
テーブルにインデックスが作成されている場合、テーブルの削除前にインデックスが削除されます。
timelineStore.dropAllTables();