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
<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.