Artigo
· Jun. 11 3min de leitura

Pesquisando os limites do novo tipo de dados VECTOR

Traduzido do Concurso de Artigos da Comunidade Espanhola 

Seguindo o último concurso de programação no OEX (Open EXchange) eu tive algumas observações surpreendentes.
Havia aplicações quase exclusivas baseadas numa combinação de IA (Inteligência Artificial) com módulos Python "pré-cozidas".
Porém, indo mais a fundo, todos os exemplos usaram os mesmos fatores técnicos do IRIS.

Considerando o ponto de vista do IRIS, foi praticamente a mesma coisa seja buscando por textos, ou imagens, ou outro tipo de padrão. Acabou em métodos quase intercambiáveis.

Isso me lembra de uma situação privada na minha casa.
Minha mulher e esposa mantém uma coleção incrivelmente
grande (na minha opinião) de saias, blusas e todos as outras
roupas. Mas no fim, é a minha mulher e minha filha com
quem eu converso e vivo - não importa o que as esteja
envolvendo.

Voltando ao concurso:
Vários invólucros para mais ou menos o mesmo conteúdo técnico de IRIS.
Todos estavam correndo pela mesma estrada. Ninguém nunca tocou nenhum limite.

Então, eu tentei ir mais a fundo e descobrir os limites do tipo de dados VECTOR.
Todos os vetores tem 2 parâmetros de base
- DATATYPE estático: "integer" (ou "int"), "double", "decimal", "string" e "timestamp".
- LEN(gth) (comprimento) semi-dinâmico: > 0 frequentemente referenciado também como POSITION (posição); um Integer (número inteiro) puro.

Esse parâmetro LEN/POSITION é o equivalente ao que você conhece por dimensões matemáticas de um vetor.
Claro que no universo de Einstein você pode necessitar apenas de 4 dimensões ou menos, baseado em sua Teoria da Relatividade.
Mesmo a Teoria Cosmológica de Cordas que surgiu nos anos 60 não passa de 11 ou 12 dimensões.
Mas todas os bons pacotes de soluções para análises textuais "pré-cozidos"  usam 238, 354, >1200... dimensões e talvez até mais.

Então: Qual é o limite definido pelo IRIS para as possíveis posições?
A documentação oficial não tem a resposta.
Então, eu peguei minha janela do terminal e tentei

for i=1:1 set $vector(test,I,"int")=i
;; muito rápido
<VECTOR>
zwrite i
i=65537

Tentei com todos os tipos de dados: o limite é  65536

OK. O comprimento de tipos numéricos * 65536 é claro por baixo do mágico limite <MAXSTRING> maior que 3 Mb

MAS: O que está acontecendo com o tipo "string" se seu tamanho tem uma dimensão significativa?

O resultado impressionante:
Eu tive sucesso com 65536 posições e uma STRING de 3.600.000 bytes.
A string_teste está alguns kB abaixo de <MAXSTRING>
No entanto!  Isso é um total de 225.000 MB em um só VECTOR!
Eu não consigo imaginar como isso poderia ser feito.

Sem dúvida, manejar esse gigante incomum leva tempo e você terá que esperar tempo o suficiente para qualquer acesso.
Mas isso demonstra que o tipo de dados VECTOR é capaz de servir todo requisito prático sem ser limitado por design.

Desejo muito sucesso a você quando trabalhar com VECTORs.

Discussão (0)1
Entre ou crie uma conta para continuar