SurrealDB: Unterschied zwischen den Versionen
Codica (Diskussion | Beiträge) |
Codica (Diskussion | Beiträge) |
||
Zeile 41: | Zeile 41: | ||
--data-binary $'{"ns":"myns", "db":"mydb", "sc": "another_scope"}\n' \ | --data-binary $'{"ns":"myns", "db":"mydb", "sc": "another_scope"}\n' \ | ||
$surreal_url/signup | $surreal_url/signup | ||
+ | |||
+ | == SELECT - Besonderheiten == | ||
+ | |||
+ | === ONLY Schlüsselwort === | ||
+ | |||
+ | Das ONLY-Schlüsselwort funktioniert nur bei Angabe einer spezifischen Record-ID, nicht | ||
+ | aber automatisch bei einer Menge, die nur ein Element enthält. Dann kommt der Fehler | ||
+ | Expected a single result output when using the ONLY keyword | ||
+ | |||
+ | Eine solche Menge ist aber akzeptabel, wenn sie | ||
+ | * durch <code>LIMIT 1</code> ausdrücklich auf eins begrenzt wird oder | ||
+ | * indem man mit <code>[0]</code> das erste Element der Menge auswählt (dann braucht man aber das SELECT ... FROM ONLY auch nicht mehr). | ||
+ | |||
+ | |||
+ | Beispiel: | ||
+ | |||
+ | Folgendes funktioniert: | ||
+ | create food:orange; | ||
+ | select * from only food:orange; | ||
+ | |||
+ | Das bringt oben genannten Fehler: | ||
+ | select * from only food where id=="food:orange"; | ||
+ | |||
+ | Dagegen hilft LIMIT 1: | ||
+ | select * from only food where id=="food:orange" limit 1; | ||
+ | |||
+ | Oder einfach: | ||
+ | (select * from food)[0]; | ||
+ | |||
+ | Alternativen: | ||
+ | |||
+ | RETURN (select * from food)[0]; | ||
+ | |||
+ | oder | ||
+ | |||
+ | SELECT * FROM ONLY (select * from food)[0]; | ||
+ | |||
--------- | --------- |
Version vom 20. März 2024, 13:01 Uhr
SurrealDB ist v.a. eine Datenbank, kann aber auch als komplettes Backend für Webanwendungen fungieren.
Tools
- Die PgAdmin-Entsprechung für SurrealDB nennt sich surrealist.app
Libraries
Betrieb hinter Proxy-Server
- Wie betreibt man SurrealDB hinter einem NGinx-Proxy?
- Die offizielle Dokumentation enthält auch eine Anleitung zum Betreiben von SurrealDB in einem Container auf fly.io.
Skalierung
- für ein Cluster greift es wohl auf TiDB zurück
Benutzung der HTTP/REST-API
Die HTTP-API von SurrealDB ist dokumentiert.
Scope-User
Ein Scope wird mit DEFINE SCOPE angelegt.
Beim POST-Request des SIGNUP-Endpunkts wird ein JSON-Objekt mit folgenden Feldern übergeben:
- NS - der Namespace
- DB - die Datenbank
- SC - der Scope-Name (wie hinter DEFINE SCOPE geschrieben)
Die Namen der Felder können auch klein geschrieben werden oder ausgeschrieben:
- namespace
- database
- scope
In Version 1.2.1 dürfen die per POST übermittelten Daten NICHT mit einem Leerzeichen beginnen.
Beispiel eines SIGNUP:
curl \ -H "Accept: application/json" \ --data-binary $'{"ns":"myns", "db":"mydb", "sc": "another_scope"}\n' \ $surreal_url/signup
SELECT - Besonderheiten
ONLY Schlüsselwort
Das ONLY-Schlüsselwort funktioniert nur bei Angabe einer spezifischen Record-ID, nicht aber automatisch bei einer Menge, die nur ein Element enthält. Dann kommt der Fehler
Expected a single result output when using the ONLY keyword
Eine solche Menge ist aber akzeptabel, wenn sie
- durch
LIMIT 1
ausdrücklich auf eins begrenzt wird oder - indem man mit
[0]
das erste Element der Menge auswählt (dann braucht man aber das SELECT ... FROM ONLY auch nicht mehr).
Beispiel:
Folgendes funktioniert:
create food:orange; select * from only food:orange;
Das bringt oben genannten Fehler:
select * from only food where id=="food:orange";
Dagegen hilft LIMIT 1:
select * from only food where id=="food:orange" limit 1;
Oder einfach:
(select * from food)[0];
Alternativen:
RETURN (select * from food)[0];
oder
SELECT * FROM ONLY (select * from food)[0];