Todos os produtos
Search
Central de documentação

Hologres:Acesse dados não estruturados do OSS com tabela de objetos

Última atualização: Jul 14, 2026

As tabelas de objetos mapeiam arquivos armazenados no OSS em uma tabela Hologres consultável. Semelhante a uma tabela externa, esse recurso é projetado especificamente para dados não estruturados, como imagens, PDFs, áudio e vídeo. O Hologres V4.0 e versões posteriores oferecem suporte a ele.

Com as tabelas de objetos, você pode:

  • Consultar metadados de arquivos do OSS usando SQL padrão sem mover os dados para fora do OSS.

  • Processar dados não estruturados de ponta a ponta combinando tabelas de objetos com Dynamic Tables e AI Functions, sem necessidade de serviços externos de embedding.

  • Detectar alterações nos arquivos de forma incremental para evitar o reprocessamento de arquivos inalterados e reduzir custos de computação.

Pré-requisitos

Antes de começar, verifique se você possui:

  • Uma instância Hologres executando a versão V4.0 ou posterior. Para fazer upgrade, consulte Fazer upgrade de uma instância

  • Um bucket do OSS contendo os arquivos que você deseja acessar

  • Uma função RAM com acesso de leitura ao bucket do OSS. Para encontrar o ARN (Alibaba Cloud Resource Name) da função, acesse o console do Resource Access Management (RAM), clique em Identity Management > Role e, em seguida, clique no nome da função

Limitações

  • Há suporte apenas para endpoints de rede clássica.

  • Há suporte apenas para atualização manual. Não há atualização automática.

  • Por padrão, as tabelas de objetos verificam apenas o diretório de nível superior do caminho especificado. Subdiretórios não são incluídos. Para verificar subdiretórios recursivamente, execute:

    Nota

    Varreduras recursivas consomem mais recursos do que varreduras de nível superior. Defina path para o diretório mais específico que contém seus arquivos de destino.

    ALTER DATABASE <db_name> SET hg_experimental_enable_oss_meta_recursive = on;

Crie uma tabela de objetos

As tabelas de objetos possuem um esquema fixo — não é necessário especificar colunas ao criá-las.

Sintaxe:

CREATE OBJECT TABLE [IF NOT EXISTS] [schema_name.]<table_name>
WITH (
  -- Required
  path          = '<oss_path>',
  oss_endpoint  = '<oss_endpoint>',
  role_arn      = '<role_arn>',

  -- Optional
  [orientation                  = 'column | row | row,column',]
  [table_group                  = '<table_group_name>',]
  [distribution_key             = '<column_name>[,...]',]
  [clustering_key               = '<column_name>[:asc][,...]',]
  [storage_mode                 = 'hot | cold',]
  [event_time_column            = '<column_name>[,...]',]
  [bitmap_columns               = '<column_name>[,...]',]
  [dictionary_encoding_columns  = '<column_name>[,...]',]
  [time_to_live_in_seconds      = '<non_negative_integer>']
);

Após criar uma tabela de objetos, atualize-a uma vez para carregar os dados:

REFRESH OBJECT TABLE [schema_name.]<table_name>;

Parâmetros obrigatórios

Parâmetros opcionais

Parâmetro

Descrição

Exemplo

path

Caminho do diretório OSS que contém seus arquivos. A tabela de objetos lê metadados dos arquivos neste diretório.

oss://my-bucket/my-dir

oss_endpoint

Endpoint de rede clássica do OSS para a região do bucket. Para consultar os endpoints por região, visualize .

oss-ap-southeast-1-internal.aliyuncs.com

role_arn

ARN de uma função RAM com acesso de leitura ao bucket do OSS.

acs:ram::role-id:role/role-name

Parâmetro

Padrão

Descrição

orientation

column

Formato de armazenamento. Valores suportados: column, row, row,column. Consulte Formatos de armazenamento de tabela.

table_group

Grupo de tabelas padrão

Grupo de tabelas e contagem de shards para a tabela de objetos.

distribution_key

object_uri

Chave de distribuição.

clustering_key

object_uri

Chave de clustering.

storage_mode

hot

Modo de armazenamento. Valores suportados: hot (armazenamento quente), cold (armazenamento frio). Consulte Camadas de dados.

event_time_column

last_modified_at

Coluna de tempo de evento (chave de segmento).

bitmap_columns

object_uri:auto,etag:auto

Colunas do índice bitmap.

dictionary_encoding_columns

object_uri:auto,etag:auto

Colunas de codificação de dicionário.

time_to_live_in_seconds

3153600000

Ciclo de vida dos dados da tabela em segundos.

Consultar uma tabela de objetos

Após a atualização inicial, consulte uma tabela de objetos como qualquer tabela padrão:

SELECT * FROM <object_table_name>;

As tabelas de objetos possuem as seguintes colunas fixas:

Para visualizar o DDL ou as propriedades de armazenamento de uma tabela de objetos, use um dos seguintes comandos:

-- View DDL
SELECT hg_dump_script('[schema_name.]<object_table_name>');

-- View storage properties
SELECT * FROM hologres.hg_table_properties WHERE table_name = '<object_table_name>';

Atualize uma tabela de objetos

Atualize uma tabela de objetos para sincronizar os metadados dos arquivos do OSS. Há suporte apenas para atualização manual.

REFRESH OBJECT TABLE [schema_name.]<table_name>;
Nota

A atualização consome recursos de computação. Para minimizar custos, defina path para o diretório mais específico que contém seus arquivos de destino.

Gerencie uma tabela de objetos

Renomear ou mover uma tabela de objetos

-- Rename
ALTER OBJECT TABLE [IF EXISTS] <table_name> RENAME TO <new_name>;

-- Move to a different schema
ALTER OBJECT TABLE [IF EXISTS] [schema_name.]<table_name> SET SCHEMA <new_schema>;

Exclua uma tabela de objetos

-- Moves to the recycle bin if it is enabled; otherwise, permanently deletes
DROP OBJECT TABLE [IF EXISTS] <table_name>;

-- Permanently deletes without moving to the recycle bin
DROP OBJECT TABLE [IF EXISTS] <table_name> FORCE;

Se a lixeira do banco de dados estiver ativada, excluir uma tabela de objetos a move automaticamente para a lixeira. É possível recuperar a tabela de objetos usando o comando de recuperação da lixeira, e ela permanece como uma tabela de objetos após a recuperação. Para mais detalhes, consulte Lixeira.

Aviso

A opção FORCE exclui permanentemente a tabela de objetos. A recuperação não é possível.

Coluna

Tipo

Descrição

object_uri

TEXT

Caminho exato do arquivo no OSS.

etag

TEXT

Identificador exclusivo para o conteúdo do arquivo, atribuído quando o objeto é criado.

file

FILE

Estrutura semelhante a JSON contendo metadados detalhados do arquivo. Analise-a usando tipos JSON e JSONB. Os campos incluem: object_uri, etag, size, last_modified_at, owner_name, object_source (sempre OSS), oss_endpoint, object_table_id e role_arn.

metadata

JSON

Metadados personalizados anexados ao arquivo.

Crie uma tabela para armazenar dados de PDF com embedding.

Crie uma tabela interna do Hologres para armazenar dados de PDF com embedding. Construa um índice vetorial nesta tabela para pesquisa vetorial.

-- Create embedding table
CREATE  TABLE public.embed_pdf_bs (
    object_uri text NOT NULL,
    etag text NOT NULL,
    chunk text NOT NULL,
    embedding_vector float4[] CHECK(array_ndims(embedding_vector) = 1 AND array_length(embedding_vector, 1) =1024)
) WITH (
bitmap_columns = 'object_uri,etag,chunk',
clustering_key = 'object_uri,etag',
distribution_key = 'object_uri',
vectors = '{
      "embedding_vector": {
        "algorithm": "HGraph",
        "distance_method": "Cosine",
        "builder_params": {
        "base_quantization_type": "sq8_uniform",
        "max_degree": 64,
        "ef_construction": 400,
        "precise_quantization_type": "fp32",
        "use_reorder": true
        }
      }}'
      );

Chame a AI Function para gerar embeddings e dividir os PDFs em chunks, e então grave os resultados na tabela.

-- Convert PDFs to documents and embed
insert into public.embed_pdf_bs 
  WITH parsed_doc AS (
    SELECT object_uri, etag, ai_parse_document(file, 'auto', 'markdown') AS doc 
    FROM pdf_bs_challenge_financial_14b_dataset limit 1), 
  chunked_doc AS (
    SELECT object_uri, etag, unnest(ai_chunk(doc, 300, 50)) AS chunk 
    FROM parsed_doc )
  SELECT object_uri, etag, chunk, ai_embed(chunk) AS embedding_vector 
  FROM chunked_doc
  WHERE chunk IS NOT NULL AND length(chunk) > 0;

Pesquise e infira o conteúdo do PDF.

É possível avaliar se a perspectiva futura de uma empresa é otimista ou pessimista com base nas tendências financeiras nos prospectos. Isso ajuda a orientar decisões de investimento. Exemplo de SQL:

WITH
  -- Embed question and retrieve
  embedding_recall AS (
    SELECT chunk FROM embed_pdf_bs
    ORDER BY
    approx_cosine_distance(
      embedding_vector,
      ai_embed('In the reporting period, what were the year-on-year growth rates for revenue and net profit of Hunan Goke Microelectronics Co., Ltd. in 2014, 2015, and 2016?')
    ) DESC
    LIMIT 20
  ),
  -- Concatenate top chunks
  concat_top_chunks AS (
    SELECT string_agg(chunk, E'\n\n----\n\n') AS merged_chunks FROM embedding_recall
  )
-- Generate final answer
SELECT
  ai_gen('Analyze whether the following financial trend is optimistic or pessimistic, and explain why: ' ||
         ai_gen('In the reporting period, what were the year-on-year growth rates for revenue and net profit of Hunan Goke Microelectronics Co., Ltd. in 2014, 2015, and 2016? '  || merged_chunks))
FROM concat_top_chunks;

A consulta retorna:

ai_gen
----
"From the provided financial data and growth analysis, Hunan Goke Microelectronics Co., Ltd. showed an overall **optimistic** performance trend from 2014 to 2016, for the following reasons:

### 1. **Revenue grew consistently**
- Revenue increased by 112.94% in 2014, 103.00% in 2015, and 33.22% in 2016. This indicates steady business expansion and rising market demand.
- Growth was driven by mass production and sales of new products (e.g., smart surveillance chips and GK-series chips) and partnerships with well-known distributors, highlighting strengths in product innovation and market outreach.

### 2. **Net profit rose significantly**
- Net profit surged by 467.53% in 2014, 8.21% in 2015, and 33.07% in 2016. Although growth slowed in 2015, it remained positive.
- In 2016, higher-margin products (e.g., solid-state storage chips) contributed more to revenue, while sales expenses declined. This reflects successful optimization of product mix and cost control.

### 3. **Product mix improved and innovation advanced**
- In 2014, the company benefited from the opening of the Live Satellite market. In 2015, smart surveillance chips entered mass production. In 2016, GK-series chips were adopted by major distributors. This shows the company’s ability to align with market needs and drive growth through innovation.
- Higher-margin products made up a larger share of sales, boosting overall profitability.

### 4. **Market reach expanded**
- Partnerships with leading distributors (e.g., Koton and Shijie) indicate breakthroughs in channel development, helping expand market share and brand influence.

### 5. **Overall trend is positive**
- Although revenue growth slowed in 2016 compared to 2015, net profit continued to rise at a healthy pace. This signals improved operational efficiency and profitability. It shows the company adapts well to market changes and optimizes effectively.

### Conclusion:
Overall, Hunan Goke Microelectronics Co., Ltd. showed an **optimistic** performance trend from 2014 to 2016. The company achieved consistent growth in both revenue and net profit. It strengthened its core competitiveness and profitability through product mix optimization, innovation, and market expansion. While revenue growth slowed in 2016, stable net profit growth reflects strong operational management and cost control."

Nome da função

Nome do modelo

Descrição da função do modelo

CPU por réplica

Memória por réplica

GPU por réplica

Número de réplicas

to_doc

ds4sd/docling-models

Converter PDFs em documentos.

20 core

100 G

1 GPU (48 G)

1

chunk

recursive-character-text-splitter

Dividir documentos. Dividir PDFs grandes.

15 core

30 G

0 GPU (0 G)

1

pdf_embed

BAAI/bge-base-zh-v1.5

Embedding de documentos.

7 core

30 G

1 GPU (96 G)

1

llm

Qwen/Qwen3-32B

Usar um Modelo de Linguagem Grande (LLM) para inferir o conteúdo do documento recuperado com base em prompts.

7 core

30 G

1 GPU (96 G)

1

Melhores práticas

As tabelas de objetos funcionam com Dynamic Tables, AI Functions, pesquisa vetorial e pesquisa de texto completo para automatizar o processamento, a pesquisa e a análise de dados não estruturados. Para mais detalhes, consulte: