Para usar o modelo Timeline, inicialize três componentes principais: TimelineStoreFactory, TimelineMetaStore e TimelineStore. Este tópico explica o fluxo de inicialização, descreve cada componente e fornece exemplos de código Java.
Pré-requisitos
Configure um par de AccessKey. Para mais informações, consulte Inicializar um cliente Tablestore.
Obtenha o endpoint de uma instância do Tablestore. Para mais informações, consulte Inicializar um cliente Tablestore.
Modelo de objetos
A tabela a seguir lista as classes principais envolvidas na inicialização do modelo Timeline e suas finalidades.
|
Classe |
Finalidade |
|
|
Cliente síncrono para o Tablestore que oferece métodos para gerenciar tabelas e dados. Suporta políticas de nova tentativa configuráveis. |
|
|
Fábrica que cria instâncias de |
|
|
Defina a estrutura da coluna de chave primária para identificar timelines. |
|
|
Especifique os campos do índice de pesquisa para busca de texto completo e consultas booleanas. |
|
|
Gerencie metadados das timelines. Os metadados são armazenados em uma estrutura de esquema livre e podem conter qualquer coluna. |
|
|
Gerencie os dados de mensagens da timeline, com suporte a IDs de sequência autoincrementais e gravação em lote. |
Cadeia de dependências de inicialização
O diagrama a seguir ilustra como os componentes dependem uns dos outros durante a inicialização:
SyncClient (connection + authentication)
|
v
TimelineStoreFactory
|
+--> TimelineMetaStore (metadata table + search index)
| |
| +--> prepareTables() / dropAllTables()
|
+--> TimelineStore (message table + search index + batch writer)
|
+--> prepareTables() / dropAllTables()
Inicializar o TimelineStoreFactory
O TimelineStoreFactory é o ponto de entrada para criar stores que gerenciam metadados e dados da timeline. Inicialize-o passando uma instância de SyncClient.
A política de nova tentativa do SyncClient determina o comportamento de repetição. Configure o SyncClient com uma política personalizada. Se tiver requisitos específicos, chame a operação RetryStrategy para definir essa política.
/**
* Configure the retry policy.
* Code: configuration.setRetryStrategy(new DefaultRetryStrategy());
**/
ClientConfiguration configuration = new ClientConfiguration();
SyncClient client = new SyncClient(
"yourEndpoint",
// Obtain the AccessKey ID and AccessKey secret from the environment variables.
System.getenv("TABLESTORE_ACCESS_KEY_ID"),
System.getenv("TABLESTORE_ACCESS_KEY_SECRET"),
"yourInstanceName", configuration);
TimelineStoreFactory serviceFactory = new TimelineStoreFactoryImpl(client);
Inicializar o TimelineMetaStore
O TimelineMetaStore gerencia os metadados das suas timelines. Para inicializá-lo, defina um esquema que especifique a estrutura da coluna de chave primária (Identifier) e a configuração do índice de pesquisa (MetaIndex). Em seguida, use o TimelineStoreFactory para criar o store.
Especifique os seguintes parâmetros: nome da tabela de metadados, nome do índice de pesquisa, coluna de chave primária e tipo do índice de pesquisa.
TimelineIdentifierSchema idSchema = new TimelineIdentifierSchema.Builder()
.addStringField("timeline_id").build();
IndexSchema metaIndex = new IndexSchema();
metaIndex.setFieldSchemas(Arrays.asList(//Specify the names and types of index fields.
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); //Configure the index.
TimelineMetaStore timelineMetaStore = serviceFactory.createMetaStore(metaSchema);
Criar uma tabela
Chame prepareTables() para criar uma tabela com base nos parâmetros definidos em metaSchema. Se houver um índice de pesquisa configurado em metaSchema, ele será criado após a criação da tabela.
timelineMetaStore.prepareTables();
Excluir uma tabela
Chame dropAllTables() para excluir a tabela. Caso exista um índice de pesquisa associado, o sistema o excluirá antes de excluir a tabela.
timelineMetaStore.dropAllTables();
Inicializar o TimelineStore
O TimelineStore gerencia os dados de mensagens da timeline. Assim como no TimelineMetaStore, defina um esquema que especifique a estrutura da coluna de chave primária (Identifier) e a configuração do índice de pesquisa (TimelineIndex). Depois, use o TimelineStoreFactory para criar o store.
Especifique os seguintes parâmetros: nome da tabela da timeline, nome do índice de pesquisa, coluna de chave primária e tipo do índice de pesquisa.
A operação BatchStore melhora o desempenho de concorrência com base no DefaultTableStoreWriter do Tablestore. Defina o número de threads simultâneas no pool de threads conforme sua necessidade.
TimelineIdentifierSchema idSchema = new TimelineIdentifierSchema.Builder()
.addStringField("timeline_id").build();
IndexSchema timelineIndex = new IndexSchema();
timelineIndex.setFieldSchemas(Arrays.asList(// Specify the names and types of index fields.
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() //Specify the auto-increment primary key column as the method to generate the SequenceId value.
.setCallbackExecuteThreads(5) //Set the number of initial threads of DefaultTableStoreWriter to 5.
.withIndex("metaIndex", timelineIndex); //Configure the index.
TimelineStore timelineStore = serviceFactory.createTimelineStore(timelineSchema);
Criar uma tabela
Chame prepareTables() para criar uma tabela com base nos parâmetros em TimelineSchema. Se houver um índice de pesquisa configurado em TimelineSchema, ele será criado após a criação da tabela.
timelineStore.prepareTables();
Excluir uma tabela
Chame dropAllTables() para excluir a tabela. Se a tabela possuir um índice de pesquisa, este será excluído antes da própria tabela.
timelineStore.dropAllTables();