Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Klauzula VOLATILE

Klauzula VOLATILE w poleceniu SELECT tworzy strumień przechowujący wyłącznie jeden rekord w pamięci. Na dysku pojawia się jedynie plik deskryptora .desc opisujący schemat danych — same dane nigdy nie są zapisywane.

Działanie

SELECT wyrażenie STREAM nazwa FROM źródło VOLATILE

Wewnętrznie kompilator ustawia typ przechowywania na MEMORY z pojemnością 1:

if (ctx->VOLATILE()) {
    qry.policy = std::make_pair("MEMORY", 1);
}

Oznacza to, że:

  • bufor w pamięci przechowuje zawsze tylko jeden, ostatni rekord,
  • dane nie trafiają na dysk,
  • deskryptor .desc jest tworzony — inne procesy mogą poznać schemat strumienia.

Różnica względem STORAGE MEMORY

CechaVOLATILESTORAGE MEMORY
Pojemność buforazawsze 1 rekordzależna od RETENTION
Klauzula RETENTIONignorowanastosowana
Deskryptor na dyskutaktak
Dane na dyskunienie

VOLATILE przydaje się gdy wynik zapytania jest pobierany przez xqry na bieżąco i historia nie jest potrzebna — np. aktualna wartość czujnika udostępniana przez system operacyjny.

Przykład

DECLARE a INTEGER STREAM sensor, 0.1 FILE '/dev/sensor0'

SELECT sensor[0] * 100 STREAM scaled VOLATILE

Strumień scaled zawiera w każdej chwili jedną, aktualną wartość. Proces xqry może ją odczytać przez pamięć współdzieloną.