JX / Junexis StorageArchitektura platformy →
Menu Storage

Poznaj Storage

WprowadzeniePierwszy zapisMemory, SQLite, PostgreSQLMożliwości i kontraktyDostępność i ograniczenia

Storage / dane aplikacji

Pierwszy zapis i odczyt

Zapisz pomiar pod kluczem room-1, a potem odczytaj tę samą wartość. Zacznij od Memory: nie potrzebujesz bazy danych ani konta. Następnie zobacz, co zmienia SQLite.

Pierwszy sukces: odczytujesz zapisane 21.0.

To wynik rzeczywistego procesu Storage Host z dostawcą Memory. Strona pokazuje zapis wykonanej próby; sama nie uruchamia hosta ani nie przechowuje Twoich danych.

Jedna droga do danych

Klient wysyła żądania JSONL do osobnego procesu Storage Host. Host ładuje wskazanego dostawcę, otwiera binding i przekazuje mu operację. Binding jest tu otwartą sesją użycia dostawcy, nie kontem użytkownika.

klient Python → Storage Host → dostawca Memory → rekord

W przykładzie bucket measurements grupuje rekordy, key room-1 wskazuje rekord, a payload zawiera celsius: 21.0. To dane przykładu, nie pomiar pobrany z czujnika.

1. Otwórz binding i zapisz

Wykonana próba rozpoczęła się uzgodnieniem ABI junexis.storage.runtime/0.1 oraz otwarciem bindingu Memory. Potem wysłała żądanie:

{
  "schemaVersion": "junexis.storage.runtime/0.1",
  "requestId": "put",
  "action": "invoke",
  "bindingId": "example",
  "operation": "put",
  "effect": "write",
  "input": {
    "bucket": "measurements",
    "key": "room-1",
    "payload": {
      "celsius": 21.0
    }
  }
}

operation: put określa operację, effect: write deklarowany rodzaj skutku, a bindingId wybiera wcześniej otwartą sesję dostawcy.

2. Odczytaj ten sam klucz

{
  "schemaVersion": "junexis.storage.runtime/0.1",
  "requestId": "get",
  "action": "invoke",
  "bindingId": "example",
  "operation": "get",
  "effect": "read",
  "input": {
    "bucket": "measurements",
    "key": "room-1"
  }
}

Odpowiedź rzeczywistego hosta:

{
  "schemaVersion": "junexis.storage.runtime/0.1",
  "requestId": "get",
  "success": true,
  "result": {
    "mode": "value",
    "value": {
      "key": "room-1",
      "payload": {
        "celsius": 21.0
      }
    }
  }
}

Odczyt result.value.payload.celsius zwrócił 21.0. Identyfikator żądania pozwala powiązać odpowiedź z operacją; sam w sobie nie gwarantuje dokładnie jednego skutku przy dowolnym ponowieniu.

3. Zobacz różnicę po ponownym uruchomieniu

Dostawca Zapis i odczyt w pierwszym hoście Odczyt w nowym hoście
Memory 21.0 Brak rekordu: nowy binding zaczyna pusty magazyn.
SQLite 21.0 21.0 z tego samego pliku bazy.

Obie próby wykonano na istniejących lokalnych kompilacjach Release. Nowy host oznaczał osobny proces, po poprawnym zamknięciu poprzedniego. To nie test utraty zasilania, awarii dysku ani odtwarzania backupu.

Jak powtórzyć próbę?

Potrzebujesz .NET 10, Pythona 3 oraz przygotowanego hosta i kompletnego pakietu dostawcy z zależnościami. Instrukcja nie zakłada publicznego adresu pobierania całego zestawu.

Pobierz klienta first_write.py. W katalogu z tym plikiem wykonaj, podstawiając swoje ścieżki:

python first_write.py --host 'C:\zestaw\Junexis.Storage.Runtime.Host.dll' --provider 'C:\zestaw\memory\runtime\Junexis.Storage.Provider.Memory.dll'

Oczekiwany wynik sprawdzonej próby:

memory: zapisano room-1 = 21.0
memory: odczytano room-1 = 21.0
memory: nowy host i binding sa puste
Ten sam klient z SQLite

Użyj kompletnego pakietu SQLite z biblioteką natywną odpowiednią dla systemu. Wybierz nowy plik bazy w swoim prywatnym katalogu testowym; nie używaj istniejącej bazy aplikacji.

python first_write.py --host 'C:\zestaw\Junexis.Storage.Runtime.Host.dll' --provider 'C:\zestaw\sqlite\runtime\Junexis.Storage.Provider.Sqlite.dll' --kind sqlite --database '.\pierwszy-zapis.db'
sqlite: zapisano room-1 = 21.0
sqlite: odczytano room-1 = 21.0
sqlite: nowy host odczytal 21.0 z tego samego pliku

Klient kończy oba procesy hosta. Plik SQLite pozostaje w wybranym katalogu. Przykład zapisuje rekord measurements/room-1; nie jest narzędziem do zarządzania produkcyjną bazą.

Pełny zapis próby Memory w JSON · Porównaj dostawców · Poznaj ograniczenia.