EDA tabuľkové priestory

Tabuľkové priestory EDA (tablespace) predstavujú spoločné úložisko pre vektory jedného typu. Pre každý typ vektora existuje predvolený tablespace s id 0. Pretože od určitého množstva záznamov v jednom tablespace začína degradovať výkon prístupu a modifikácie dát, je vhodné vytvoriť viacero tablespace a vektory do nich rovnomerne umiestňovať.

Nový tablespace sa vytvára funkciou EDA_CreateTblSpaceRec. Potom, pri vytváraní vektora funkciou EDA_CreateVectorRec, je možné zadať identifikátor tablespace, do ktorého majú byť dáta vektora ukladané. Už existujúce vektory je možné medzi jednotlivými tablespace-ami presúvať pomocou funkcie EDA_MoveVektorInTblSpace. Tablespace je možné zmazať funkciou EDA_DeleteTblSpace, avšak len v prípade, že už neobsahuje žiadne vektory.


Príklad použitia:

 BEGIN
  TEXT _vectorName
  INT _i, _vectorType, _tblSpaceId, _vectorId, _errorCode
  RECORD NOALIAS (SD.EDA_CreateTblSpace_Params_V1) _createTblSpaceParams
  RECORD NOALIAS (SD.EDA_CreateVector_Params_V1) _createVectorParams
  RECORD NOALIAS (SD.EDA_DeleteVector_Params_V1) _deleteVectorParams
 
  _vectorType := 9
  _tblSpaceId := 1000
  _vectorId := 1000000
  _vectorName := "test.vector"
  _createTblSpaceParams[1]^structVersion := 1
  _createVectorParams[1]^structVersion := 1
  _deleteVectorParams[1]^structVersion := 1
 
  ; vytvori tablespace pre zmenove vektory
  CALL %EDA_CreateTblSpaceRec(_tblSpaceId, _vectorType, "test tablespace", _createTblSpaceParams, _errorCode)
  IF _errorCode != 0 THEN
   RETURN
  ENDIF
 
  ; vytvori zmenovy vektor v novom tablespace
  _createVectorParams[1]^tableSpaceId := _tblSpaceId
  CALL %EDA_CreateVectorRec(_vectorName, _vectorId, _vectorName, _vectorType, _createVectorParams, _errorCode)
  IF _errorCode != 0 THEN
   RETURN
  ENDIF
 
  ; presunie vektor do predvoleneho tablespace
 CALL %EDA_MoveVektorInTblSpace(_vectorId, 0, _errorCode)
  IF _errorCode != 0 THEN
   RETURN
  ENDIF
 
 ; zmaze vektor
 CALL %EDA_DeleteVectorRec(_vectorId, _deleteVectorParams, _errorCode)
  IF _errorCode != 0 THEN
   RETURN
  ENDIF
 
 ; zmaze tablespace
  CALL %EDA_DeleteTblSpace(_tblSpaceId, _errorCode)
  IF _errorCode != 0 THEN
   RETURN
  ENDIF
 END
 
Napíšte komentár