Nouvelle publication

Pesquisar

Question
· Avr 27, 2024

Failed to allocate TCP Buffer for zlib compress.

While performing the IRIS upgrade on our backup test server I noticed the following error in the messages log after restarting IRIS:

04/26/24-16:28:36:788 (5701964) 1 [Utility.Event] (HSHCPRT) Failed to retrieve journal file #9567 from FCHHSHCPRTTX02/PRT: Failed to allocate a 33686036 byte tcp buffer for zlib compress.

Stumped on this one, I logged a WRC and looked at some things with support but was not able to resolve the issue.  Any help would be greatly appreciated.

3 Comments
Discussion (3)2
Connectez-vous ou inscrivez-vous pour continuer
Article
· Avr 27, 2024 2m de lecture

Recherche vectorielle géographique #1

Utilisation géographique de la recherche vectorielle

L'idée de base est d'utiliser des vecteurs au sens mathématique.
J'ai utilisé des coordonnées géographiques. Celles-ci ne sont bien sûr que bidimensionnelles
mais elles sont beaucoup plus faciles à suivre en tant que vecteurs dans le cadre d'une analyse de texte à plus de 200 dimensions.

L'exemple charge une liste de capitales mondiales avec leurs coordonnées
Les coordonnées sont interprétées comme des vecteurs à partir du point géographique 0°N/0 W
(un point très humide dans le golfe de Guinée, à plus de 400 km de la côte africaine).
Trouver des directions communes à partir de ce point est tout à fait théorique.
L'ajustement à votre point de départ préféré est donc mis en œuvre.
Il est maintenant logique de trouver des directions similaires pour une ville cible.
Il s'agit d'une utilisation mathématique de la fonction VECTOR_COSINE() autre que la recherche de texte.

Et comme il ne s'agit que de 2 dimensions, la COSINE correspond à ce que nous avons (espérons-le) appris à l'école.
Les résultats sont donc beaucoup plus faciles à comprendre : 

  • 1 = correspondance totale, même direction, écart de 0° par rapport à l'original
  • 0 = pas de correspondance du tout, la direction est éloignée de 90° de l'original
  • -1 = direction totalement opposée, pointant vers l'arrière de 180° par rapport à l'original
  •  ~0,999 = très proche de l'original 

Vous obtenez simplement des informations sur la direction, pas sur la taille.
Ainsi, votre vecteur de Paris à Budapest pointe également vers Minsk ou un autre endroit en Asie.

La démo est contrôlée par un menu plus simple :

  Use Geographc Vectors
=========================
     1 - Initialize Tables
     2 - Import Data
     3 - Set Base Location
     4 - Generate Vectors
     5 - Select Target Location
     6 - Show Best Matches
Select Function or * to exit :

pour plusieurs tentatives, vous redémarrez toujours à

  • #3. Définir le lieu de départ
  • #4. Ajustez les coordonnées à la base que vous avez choisie
  • #5. Définissez votre emplacement cible en définissant votre vecteur de base.
  • #6 voir ce qui se trouve entre ou devant votre vecteur
    • ajuster la tolérance de -1...+1

GitHub

Video

DemoServer Mgmt Portal
DemoServer WebTerminal
 

1 Comment
Discussion (1)1
Connectez-vous ou inscrivez-vous pour continuer
Article
· Avr 27, 2024 3m de lecture

Recherche vectorielle géographique #2

Surprises techniques à l'aide de VECTORs

La construction de mon exemple technologique m'a permis de faire un certain nombre de découvertes que je souhaite partager.
Les premiers vecteurs que j'ai touchés sont apparus avec l'analyse de texte et plus de 200 dimensions.
Je dois avouer que je me sens bien dans le monde à 4 dimensions d'Einstein.
Les 7 à 15 dimensions qui peuplent la théorie des cordes dépassent quelque peu la frontière.
Mais 200 et plus, c'est définitivement bien au-delà de mon horizon mathématique.

Ndt : Je partage avec Robert la difficulté d'abstraction pour un grand nombre de dimensions, ce qui pour moi, rend l'exemple suivant très pertinent

Je me suis donc tourné vers notre planète et j'ai trouvé qu'un vecteur de (latitude, longitude) à 2 dimensions était suffisant pour les tests.
Un tableau pratique des capitales a été trouvé et a fourni un échantillon de données de test (abrégé).

CAPITAL COUNTRY LATITUDE LONGITUDE
Kabul Afghanistan 34.28N 69.11E
Tirana Albania 41.18N 19.49E
Algiers Algeria 36.42N 03.08E
Pago Pago American Samoa 14.16S 170.43W
Andorra la Vella Andorra 42.31N 01.32E
Luanda Angola 08.50S 13.15E
Saint John's Antigua and Barbuda 17.127N 61.846W
Buenos Aires Argentina 36.30S 60.00W
Yerevan Armenia 40.10N 44.31E
Oranjestad Aruba 12.32N 70.02W
Canberra Australia 35.15S 149.08E
Vienna Austria 48.12N 16.22E
Baku Azerbaijan 40.29N 49.56E
Nassau Bahamas 25.05N 77.20W
Manama Bahrain 26.10N 50.30E
Dhaka Bangladesh 23.43N 90.26E
Bridgetown Barbados 13.05N 59.30W
Minsk Belarus 53.52N 27.30E
Brussels Belgium 50.51N 04.21E

#1 Le chargement de ce fichier texte séparé par des tabulations avec LOAD DATA (SQL) a parfaitement fonctionné

#2 La transformation des coordonnées géographiques en INT était un exercice de codage mineur
Il en résulte une ClassMethod projetée en tant que procédure SQL utilisée dans une UPDATE sur la table.

#3 Comme les coordonnées géographiques se réfèrent à (0°N,0°W) quelque part dans l'Atlantique, ce n'est qu'une base théorique pour mes vecteurs.
IRIS supporte quelques fonctions VECTOR mais je n'ai trouvé aucune fonction AddVector() ou SubtractVector().
J'ai donc procédé « manuellement » à partir des coordonnées d'entrée.
Il est nécessaire de transformer les coordonnées en un point de base utile pour comparer ultérieurement les vecteurs
Il existe donc des coordonnées de BASE statiques et des coordonnées d'OEUVRE actives.

Obtenir les valeurs du vecteur est facile avec SQL en utilisant la fonction %EXTERNAL()
tandis qu'en ObjectScript, j'ai obtenu

        set vectorvalues=##class(%Vector).LogicalToOdbc(vectorvaraible) 

c'était moins impressionnant pour travailler avec des vecteurs.

#4
La similitude est calculée avec la fonction VECTOR_COSINE().
Vous calculez l'angle entre 2 vecteurs et COSINE le normalise entre +1 et -1.
L'entrée nécessite 2 vecteurs de même type et de même dimension.
Les exemples présentés dans la documentation fonctionnent bien si vous composez votre chaîne SQL comme suggéré
et TO_VETOR( ?,type,size) est OK avec %SQLStatement pour l'exécution.
MAIS :

J'ai essayé avec du code SQL intégré.
La vérification du code a signalé un certain désaccord, mais la compilation s'est déroulée sans problème
Lors de l'exécution, il s'est avéré que les variables hôtes dans TO_VECTOR(:myvec,INT,2) échouaient.
quelle que soit la combinaison de guillemets, accolades, .... que j'ai essayée.
Soyez donc avertis. Je suis retourné à %SQLStatement pour terminer mon VCOS.

#5 J'ai été surpris d'apprendre à quel point VECTOR_COSINE se propageait.
La vérification du vecteur Paris >> Bucuresti a permis de retracer la moitié du Moyen-Orient et de l'Asie de l'Est.
Limiter les résultats à > 0,999 est donc une bonne pratique dans ce scénario.

3 Comments
Discussion (3)1
Connectez-vous ou inscrivez-vous pour continuer
Article
· Avr 26, 2024 3m de lecture

Geo Vector Search #2

Technical surprises using VECTORs
>>> UPDATED

Building my tech. example provided me with a bunch of findings htt I want to share.
The first vectors I touched appeared with text analysis and more than 200  dimensions.
I have to confess that I feel well with Einstein's 4 dimensional world.
7 to 15 dimensions populating the String Theory are somewhat across the border.
But 200 and more is definitely far beyond my mathematical horizon.

So I looked to our Globe and found a vector of (latitude,longitude) with 2 dimension is enough for testing.
A handy table of capitals was found and provided sample test data (shortened).

CAPITAL COUNTRY LATITUDE LONGITUDE
Kabul Afghanistan 34.28N 69.11E
Tirana Albania 41.18N 19.49E
Algiers Algeria 36.42N 03.08E
Pago Pago American Samoa 14.16S 170.43W
Andorra la Vella Andorra 42.31N 01.32E
Luanda Angola 08.50S 13.15E
Saint John's Antigua and Barbuda 17.127N 61.846W
Buenos Aires Argentina 36.30S 60.00W
Yerevan Armenia 40.10N 44.31E
Oranjestad Aruba 12.32N 70.02W
Canberra Australia 35.15S 149.08E
Vienna Austria 48.12N 16.22E
Baku Azerbaijan 40.29N 49.56E
Nassau Bahamas 25.05N 77.20W
Manama Bahrain 26.10N 50.30E
Dhaka Bangladesh 23.43N 90.26E
Bridgetown Barbados 13.05N 59.30W
Minsk Belarus 53.52N 27.30E
Brussels Belgium 50.51N 04.21E

#1
 Loading that TAB separated text file with LOAD DATA (SQL) worked perfect

#2
Transforming the geo coordinates int INT was a minor coding exercises
It resulted in a ClassMethod projected as SQL Procedure used inana UPDATE over the table.

#3
As geo coordinates refer to (0°N,0°W) somewhere in the Atlantic this is just a theoretical base for my vectors.
IRIS supports some VECTOR functions but I found no AddVector() or SubtractVector() function.
so this was done "manually" from the input coordinates.
The need arises from transforming coordinates to a useful base point for later comparing vectors
So you see static BASE coordinates and active WORK coordinates.

Getting the Vector's values is easy with SQL using %EXTERNAL() function
while in ObjectScript I ended up with
        set vectorvalues=##class(%Vector).LogicalToOdbc(vectorvariable) 
this was less impressive for working with Vectors.

#4
Similarity is calculated with VECTOR_COSINE() function.
You calculate the angle between 2 Vectors and COSINE norm it between +1 and -1
The input needs 2 Vectors of the same type and same dimension.
Examples as in documentation work fine if you compose your SQL String as suggested
and TO_VETOR(?,type,size) is OK  with  %SQLStatement  for execution.
BUT:
I tried it with embedded SQL.
Code checking signalled some disagreement but compiled without problem
At runtime it turned out that host variables in TO_VECTOR(:myvec,INT,2) failed
whatever combination of quotes, braces, .... I tried.
So be warned. I returned to  %SQLStatement to get my VCOS done.

UPDATE:  TO_VECTOR(:myvec,INT,2)
     set myvec="1314,-7979" 

Nothing special: Just a plain String with comma-separated values
It seems I couldn't believe that simple approach.
My apologizes to ISC Engineering.

#5
It was a surprise to learn how wide VECTOR_COSINE is spreading.
checking the vector Paris >> Bucuresti  traced half of Middle and East Asia.
So limiting the results to > 0.999 is a good practice in this scenario.

Video

GitHub
 

4 Comments
Discussion (4)1
Connectez-vous ou inscrivez-vous pour continuer
Question
· Avr 26, 2024

SQL Cached Queries understanding

Hello Community,

I'm executing the same query with same  column name but in different case. An unique cached query generated while query executed first time. The query preparser only normalize the keywords and send to the SQL engine generates the Hash. Eventually use the cached query next use.

Now my question, The hash values are same for both of the queries. Then why it creates two cached queries.

Query1: select * from MyLearn.Test where Name['Kev1'

Query2: select * from MyLearn.Test where NamE['Kev1'

Thanks!

Discussion (0)1
Connectez-vous ou inscrivez-vous pour continuer