Tabuľkové priestory
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
|