Beispiele für Anwendungsfälle für NDCS
Eine Anwendung zur Gepäckverfolgung von Fluggesellschaften und ein Streaming-Media-Service zum dauerhaften Speichern des Benutzerprofils sind zwei Echtzeit-Anwendungsfälle von NoSQL Database Cloud Service.
Die Sprache SQL for Oracle NoSQL Database bietet eine SQL-ähnliche Schnittstelle zu Oracle NoSQL Database. Das SQL for Oracle NoSQL Database-Datenmodell unterstützt flache relationale Daten, hierarchische typisierte (schemavolle) Daten und schemalose JSON-Daten. Sie haben die Flexibilität, Tabellen mit einem wohldefinierten Schema für Anwendungen zu erstellen, die feste Daten oder eine Kombination aus festen Daten und schemalosem JSON erfordern. Oracle NoSQL Database unterstützt viele der gängigsten Programmiersprachen und Frameworks mit idiomatischen Sprach-APIs und Datenstrukturen. So erhält Ihre Anwendungssprache nativen Zugriff auf Daten, die in NoSQL Database gespeichert sind. Es unterstützt derzeit die folgenden Programmiersprachen und Frameworks: Javascript (Node.js), Python, Java, Golang, C#/.NET und Spring Data. Sie können auch in der Datenbank navigieren, während Sie Ihren Code mit Plug-ins für eine der folgenden unterstützten integrierten Entwicklungsumgebungen entwickeln: Visual Studio Code oder IntelliJ.
Dieser Artikel enthält die folgenden Themen:
In den Beispielen verwendete Beispielanwendungsfälle
Sie haben zwei verschiedene Schemas (mit Echtzeit-Szenarios), um verschiedene SQL-Konzepte zu erlernen. Diese beiden Schemas enthalten verschiedene Datentypen, die in der Oracle NoSQL-Datenbank verwendet werden können.
Schema 1: BaggageInfo-Schema
Mit diesem Schema können Sie einen Anwendungsfall behandeln, bei dem Passagiere, die auf einem Flug reisen, den Fortschritt ihrer eingecheckten Taschen oder Gepäckstücke entlang der Route zum endgültigen Ziel verfolgen können. Diese Funktionalität kann als Teil der mobilen Anwendung der Fluggesellschaft zur Verfügung gestellt werden. Sobald sich der Passagier in der mobilen Anwendung anmeldet, wird die Ticketnummer oder der Reservierungscode des aktuellen Fluges auf dem Bildschirm angezeigt. Passagiere können diese Informationen verwenden, um nach ihren Gepäckinformationen zu suchen. Die mobile Anwendung verwendet NoSQL Database, um alle mit dem Gepäck verbundenen Daten zu speichern. Im Backend führt die Logik der mobilen Anwendung SQL-Abfragen aus, um die erforderlichen Daten abzurufen.
Schema 2: Streaming Media Service - Persistenter Benutzerprofilspeicher
Betrachten Sie eine TV-Streaming-Anwendung. Es streamt verschiedene Shows, die von Kunden auf der ganzen Welt beobachtet werden. Jede Show hat eine Reihe von Saisons und jede Saison hat mehrere Episoden. Sie benötigen einen persistenten Metadatenspeicher, der die aktuelle Aktivität der Kunden mit der TV-Streaming-Anwendung verfolgt. Mit diesem Schema können Sie dem Kunden nützliche Informationen zur Verfügung stellen, z. B. Episoden, die er gesehen hat, die Zeit pro Episode, die Gesamtanzahl der Staffeln der Show, die er gesehen hat, usw. Die Daten werden in der NoSQL-Datenbank gespeichert, und die Anwendung führt SQL-Abfragen aus, um die erforderlichen Daten abzurufen und dem Benutzer zur Verfügung zu stellen.
In den Beispielen verwendete Tabellen
Die Tabelle ist die grundlegende Struktur zum Speichern von Benutzerdaten.
Tabelle 1: Anwendung zur Verfolgung von Fluggepäck
Die in diesem Schema verwendete Tabelle ist BaggageInfo. Dieses Schema hat eine Kombination aus festen Datentypen wie LONG, STRING. Außerdem enthält es eine schemalose JSON (bagInfo) als eine ihrer Spalten. Die schemalose JSON hat keinen festen Datentyp. Die Gepäckstückinformationen der Passagiere sind ein schemaloses JSON. Im Gegensatz dazu sind die Informationen des Passagiers wie Ticketnummer, vollständiger Name, Geschlecht, Kontaktdetails alle Teil eines festen Schemas. Sie können diesem nicht festen schemalosen JSON-Feld beliebig viele Felder hinzufügen.
Der folgende Code erstellt die Tabelle.
CREATE TABLE BaggageInfo (
ticketNo LONG,
fullName STRING,
gender STRING,
contactPhone STRING,
confNo STRING,
bagInfo JSON,
PRIMARY KEY (ticketNo)
)
Tabelle 2: Streaming Media Service - Persistenter Benutzerprofilspeicher
Die in diesem Schema verwendete Tabelle ist stream_acct. Der Primärschlüssel in diesem Schema ist acct_id. Das Schema enthält auch eine JSON-Spalte (acct_data), die schemalos ist. Die schemalose JSON hat keinen festen Datentyp. Sie können diesem JSON-Feld ohne festes Schema beliebig viele Felder hinzufügen.
Der folgende Code erstellt die Tabelle.
CREATE TABLE stream_acct(
acct_id INTEGER,
profile_name STRING,
account_expiry TIMESTAMP(9),
acct_data JSON,
PRIMARY KEY(acct_id)
)
Tabellen beschreiben
Mit dem Befehl DESCRIBE oder DESC können Sie die Beschreibung einer Tabelle anzeigen.
(DESCRIBE | DESC) [AS JSON] TABLE table_name [ "(" field_name")"]
AS JSON kann angegeben werden, wenn die Ausgabe im JSON-Format vorliegen soll. Sie können Informationen zu einem bestimmten Feld in einer beliebigen Tabelle abrufen, indem Sie den Feldnamen angeben.
Beispiel 1: Tabelle beschreiben
DESCRIBE TABLE stream_acct
Ausgabe:
=== Information ===
+-------------+-----+-------+----------------+----------+--------+----------+---------+---------+-------------+
| name | ttl | owner | jsonCollection | sysTable | parent | children | regions | indexes | description |
+-------------+-----+-------+----------------+----------+--------+----------+---------+---------+-------------+
| stream_acct | | | N | N | | | | | |
+-------------+-----+-------+----------------+----------+--------+----------+---------+---------+-------------+
=== Fields ===
+----+----------------+--------------+----------+---------+----------+------------+----------+
| id | name | type | nullable | default | shardKey | primaryKey | identity |
+----+----------------+--------------+----------+---------+----------+------------+----------+
| 1 | acct_id | Integer | N | NULL | Y | Y | |
+----+----------------+--------------+----------+---------+----------+------------+----------+
| 2 | profile_name | String | Y | NULL | | | |
+----+----------------+--------------+----------+---------+----------+------------+----------+
| 3 | account_expiry | Timestamp(9) | Y | NULL | | | |
+----+----------------+--------------+----------+---------+----------+------------+----------+
| 4 | acct_data | Json | Y | NULL | | | |
+----+----------------+--------------+----------+---------+----------+------------+----------+
---+----------+
Beispiel 2: Beschreiben Sie eine Tabelle, und zeigen Sie die Ausgabe als JSON an
DESC AS JSON TABLE BaggageInfo
Ausgabe:
{
"json_version" : 1,
"type" : "table",
"name" : "BaggageInfo",
"fields" : [{
"name" : "ticketNo",
"type" : "LONG",
"nullable" : false
}, {
"name" : "fullName",
"type" : "STRING",
"nullable" : true
}, {
"name" : "gender",
"type" : "STRING",
"nullable" : true
}, {
"name" : "contactPhone",
"type" : "STRING",
"nullable" : true
}, {
"name" : "confNo",
"type" : "STRING",
"nullable" : true
}, {
"name" : "bagInfo",
"type" : "JSON",
"nullable" : true
}],
"primaryKey" : ["ticketNo"],
"shardKey" : ["ticketNo"]
}
Beispiel 3: Beschreiben Sie ein bestimmtes Feld einer Tabelle
DESCRIBE TABLE BaggageInfo (ticketNo)
Ausgabe:
+----+----------+------+----------+---------+----------+------------+----------+
| id | name | type | nullable | default | shardKey | primaryKey | identity |
+----+----------+------+----------+---------+----------+------------+----------+
| 1 | ticketNo | Long | N | NULL | Y | Y | |
+----+----------+------+----------+---------+----------+------------+----------+
Beispieldaten zum Ausführen von Abfragen
Sie können Tabellen erstellen, die in den Beispielen verwendet werden, und Daten mit der OCI-Konsole in die Tabellen laden.
Tabelle 1: Anwendung zur Verfolgung von Fluggepäck: Eine Beispielzeile der Gepäckanwendung wird unten angezeigt.
"ticketNo" : 1762344493810,
"fullName" : "Adam Phillips",
"gender" : "M",
"contactPhone" : "893-324-1064",
"confNo" : "LE6J4Z",
[ {
"id" : "79039899165297",
"tagNum" : "17657806255240",
"routing" : "MIA/LAX/MEL",
"lastActionCode" : "OFFLOAD",
"lastActionDesc" : "OFFLOAD",
"lastSeenStation" : "MEL",
"flightLegs" : [ {
"flightNo" : "BM604",
"flightDate" : "2019-02-01T01:00:00",
"fltRouteSrc" : "MIA",
"fltRouteDest" : "LAX",
"estimatedArrival" : "2019-02-01T03:00:00",
"actions" : [ {
"actionAt" : "MIA",
"actionCode" : "ONLOAD to LAX",
"actionTime" : "2019-02-01T01:13:00"
}, {
"actionAt" : "MIA",
"actionCode" : "BagTag Scan at MIA",
"actionTime" : "2019-02-01T00:47:00"
}, {
"actionAt" : "MIA",
"actionCode" : "Checkin at MIA",
"actionTime" : "2019-02-01T23:38:00"
} ]
}, {
"flightNo" : "BM667",
"flightDate" : "2019-01-31T22:13:00",
"fltRouteSrc" : "LAX",
"fltRouteDest" : "MEL",
"estimatedArrival" : "2019-02-02T03:15:00",
"actions" : [ {
"actionAt" : "MEL",
"actionCode" : "Offload to Carousel at MEL",
"actionTime" : "2019-02-02T03:15:00"
}, {
"actionAt" : "LAX",
"actionCode" : "ONLOAD to MEL",
"actionTime" : "2019-02-01T07:35:00"
}, {
"actionAt" : "LAX",
"actionCode" : "OFFLOAD from LAX",
"actionTime" : "2019-02-01T07:18:00"
} ]
} ],
"lastSeenTimeGmt" : "2019-02-02T03:13:00",
"bagArrivalDate" : "2019.02.02T03:13:00"
} ]
Verwenden Sie in der OCI-Konsole den Erweiterten DDL-Eingabemodus, um die Tabelle mit der unten angegebenen DDL zu erstellen.
CREATE TABLE IF NOT EXISTS BaggageInfo (
ticketNo LONG,
fullName STRING,
gender STRING,
contactPhone STRING,
confNo STRING,
bagInfo JSON,
PRIMARY KEY (ticketNo)
)
Die Schritte zum Erstellen einer Tabelle mit einer DDL-Anweisung finden Sie unter Singleton-Tabelle erstellen: Erweiterter DDL-Eingabemodus.
Um Daten in die Tabelle zu laden, die über die OCI-Konsole erstellt wurde, klicken Sie auf den Tabellennamen. Die Details der Tabelle werden angezeigt. Klicken Sie auf Daten hochladen. Klicken Sie auf Datei zum Hochladen auswählen, und geben Sie die hochzuladende JSON-Datei an. Sie können die DDL- und JSON-Datei für die Airline Tracking-Anwendung hier herunterladen.
Tabelle 2: Streaming Media Service - Persistenter Benutzerprofilspeicher Eine Beispielzeile der Streaming Media-Anwendung wird unten angezeigt.
1,
123456789,
"AP",
"2023-10-18",
{
"firstName": "Adam",
"lastName": "Phillips",
"country" : "Germany",
"contentStreamed": [
{
"showName" : "At the Ranch",
"showId" : 26,
"showtype" : "tvseries",
"genres" : ["action", "crime", "spanish"],
"numSeasons" : 4,
"seriesInfo": [
{
"seasonNum" : 1,
"numEpisodes" : 2,
"episodes": [
{
"episodeID": 20,
"episodeName" : "Season 1 episode 1",
"lengthMin": 85,
"minWatched": 85,
"date" : "2022-04-18"
},
{
"episodeID": 30,
"lengthMin": 60,
"episodeName" : "Season 1 episode 2",
"minWatched": 60,
"date" : "2022-04-18"
}
]
},
{
"seasonNum": 2,
"numEpisodes" : 2,
"episodes": [
{
"episodeID": 40,
"episodeName" : "Season 2 episode 1",
"lengthMin": 50,
"minWatched": 50,
"date" : "2022-04-25"
},
{
"episodeID": 50,
"episodeName" : "Season 2 episode 2",
"lengthMin": 45,
"minWatched": 30,
"date" : "2022-04-27"
}
]
}
]
},
{
"seasonNum": 3,
"numEpisodes" : 2,
"episodes": [
{
"episodeID": 60,
"episodeName" : "Season 3 episode 1",
"lengthMin": 50,
"minWatched": 50,
"date" : "2022-04-25"
},
{
"episodeID": 70,
"episodeName" : "Season 3 episode 2",
"lengthMin": 45,
"minWatched": 30,
"date" : "2022-04-27"
}
]
}
]
},
{
"showName": "Bienvenu",
"showId": 15,
"showtype": "tvseries",
"genres" : ["comedy", "french"],
"numSeasons" : 2,
"seriesInfo": [
{
"seasonNum" : 1,
"numEpisodes" : 2,
"episodes": [
{
"episodeID": 20,
"episodeName" : "Bonjour",
"lengthMin": 45,
"minWatched": 45,
"date" : "2022-03-07"
},
{
"episodeID": 30,
"episodeName" : "Merci",
"lengthMin": 42,
"minWatched": 42,
"date" : "2022-03-08"
}
]
}
]
}
]
}
Verwenden Sie in der OCI-Konsole den Erweiterten DDL-Eingabemodus, um die Tabelle mit der unten angegebenen DDL zu erstellen.
CREATE TABLE IF NOT EXISTS stream_acct(
acct_id INTEGER,
profile_name STRING,
account_expiry TIMESTAMP(9),
acct_data JSON,
PRIMARY KEY(acct_id)
)
Die Schritte zum Erstellen einer Tabelle mit einer DDL-Anweisung finden Sie unter Singleton-Tabelle erstellen: Erweiterter DDL-Eingabemodus.
Um Daten in die Tabelle zu laden, die über die OCI-Konsole erstellt wurde, klicken Sie auf den Tabellennamen. Die Details der Tabelle werden angezeigt. Klicken Sie auf Daten hochladen. Klicken Sie auf Datei zum Hochladen auswählen, und geben Sie die hochzuladende JSON-Datei an. Sie können die DDL- und JSON-Datei für die Airline Tracking-Anwendung hier herunterladen.