Esempi di casi d'uso per NDCS
Un'applicazione per il monitoraggio dei bagagli delle compagnie aeree e un servizio di streaming media per memorizzare in modo persistente il profilo utente sono due casi d'uso in tempo reale di NoSQL Database Cloud Service.
Il linguaggio SQL per Oracle NoSQL Database fornisce un'interfaccia simile a SQL per Oracle NoSQL Database. Il modello dati SQL per Oracle NoSQL Database supporta dati relazionali flat, dati digitati gerarchicamente (completi dallo schema) e dati JSON senza schema. Hai la flessibilità di creare tabelle con uno schema ben definito per le applicazioni che richiedono dati fissi o una combinazione di dati fissi e JSON senza schema. Oracle NoSQL Database supporta molti dei linguaggi e framework di programmazione più diffusi con API e strutture di dati del linguaggio idiomatico, offrendo all'application language l'accesso nativo ai dati memorizzati nel database NoSQL. Attualmente supporta i seguenti linguaggi e framework di programmazione: Javascript (Node.js), Python, Java, Golang, C#/.NET e Spring Data. È inoltre possibile navigare nel database durante lo sviluppo del codice con plugin per uno dei seguenti ambienti di sviluppo integrati supportati: Visual Studio Code,IntelliJ o Eclipse.
Questo articolo contiene i seguenti argomenti:
Esempi di casi d'uso utilizzati negli esempi
Sono disponibili due schemi diversi (con scenari in tempo reale) per l'apprendimento di vari concetti SQL. Questi due schemi includeranno vari tipi di dati che possono essere utilizzati nel database NoSQL di Oracle.
Schema 1: schema BaggageInfo
Utilizzando questo schema è possibile gestire un caso d'uso in cui i passeggeri che viaggiano su un volo possono monitorare l'avanzamento dei loro bagagli o bagagli registrati lungo il percorso verso la destinazione finale. Questa funzionalità può essere resa disponibile come parte dell'applicazione mobile della compagnia aerea. Una volta che il passeggero accede all'applicazione mobile, il numero del biglietto o il codice di prenotazione del volo corrente viene visualizzato sullo schermo. I passeggeri possono utilizzare queste informazioni per cercare le loro informazioni sul bagaglio. L'applicazione mobile utilizza NoSQL Database per memorizzare tutti i dati relativi al bagaglio. Nel backend, la logica dell'applicazione Mobile esegue le query SQL per recuperare i dati necessari.
Schema 2: servizio multimediale streaming - area di memorizzazione profilo utente persistente
Prendi in considerazione un'applicazione di streaming TV. Esegue lo streaming di vari spettacoli che vengono guardati dai clienti in tutto il mondo. Ogni spettacolo ha un certo numero di stagioni e ogni stagione ha più episodi. È necessario un archivio di metadati persistente che tenga traccia dell'attività corrente dei clienti che utilizzano l'applicazione di streaming TV. Utilizzando questo schema è possibile fornire informazioni utili al cliente come gli episodi che hanno guardato, il tempo di orologio per episodio, il numero totale di stagioni dello spettacolo che hanno guardato, ecc. I dati vengono memorizzati nel database NoSQL e l'applicazione esegue query SQL per recuperare i dati richiesti e renderli disponibili all'utente.
Tabelle utilizzate negli esempi
La tabella è la struttura di base per contenere i dati utente.
Tabella 1: Applicazione di monitoraggio dei bagagli delle compagnie aeree
La tabella utilizzata in questo schema è BaggageInfo
. Questo schema ha una combinazione di tipi di dati fissi come LONG, STRING. Ha anche un JSON senza schema (bagInfo
) come una delle sue colonne. Il tipo di dati JSON senza schema non è fisso. Le informazioni sui bagagli dei passeggeri sono un JSON senza schema. Al contrario, le informazioni del passeggero come numero di biglietto, nome completo, sesso, dettagli di contatto fanno parte di uno schema fisso. È possibile aggiungere un numero qualsiasi di campi a questo campo JSON senza schema non fisso.
CREATE TABLE BaggageInfo (
ticketNo LONG,
fullName STRING,
gender STRING,
contactPhone STRING,
confNo STRING,
bagInfo JSON,
PRIMARY KEY (ticketNo)
)
Tabella 2: Servizio Streaming Media - Area di memorizzazione profilo utente persistente
La tabella utilizzata in questo schema è stream_acct
. La chiave primaria in questo schema è acct_id
. Lo schema include anche una colonna JSON (acct_data
), priva di schema. Il tipo di dati JSON senza schema non è fisso. È possibile aggiungere un numero qualsiasi di campi a questo campo JSON senza schema non fisso.
CREATE TABLE stream_acct(
acct_id INTEGER,
profile_name STRING,
account_expiry TIMESTAMP(9),
acct_data JSON,
PRIMARY KEY(acct_id)
)
Descrivi tabelle
(DESCRIBE | DESC) [AS JSON] TABLE table_name [ "(" field_name")"]
È possibile specificare AS JSON se si desidera che l'output sia in formato JSON. È possibile ottenere informazioni su un campo specifico in qualsiasi tabella fornendo il nome del campo.
DESCRIBE TABLE stream_acct
=== 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 | | | |
+----+----------------+--------------+----------+---------+----------+------------+----------+
---+----------+
DESC AS JSON TABLE BaggageInfo
{
"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"]
}
DESCRIBE TABLE BaggageInfo (ticketNo)
+----+----------+------+----------+---------+----------+------------+----------+
| id | name | type | nullable | default | shardKey | primaryKey | identity |
+----+----------+------+----------+---------+----------+------------+----------+
| 1 | ticketNo | Long | N | NULL | Y | Y | |
+----+----------+------+----------+---------+----------+------------+----------+
Dati di esempio per eseguire le query
È possibile creare tabelle utilizzate negli esempi e caricare i dati nelle tabelle utilizzando OCI Console.
"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"
} ]
CREATE TABLE IF NOT EXISTS BaggageInfo (
ticketNo LONG,
fullName STRING,
gender STRING,
contactPhone STRING,
confNo STRING,
bagInfo JSON,
PRIMARY KEY (ticketNo)
)
Per la procedura di creazione di una tabella con un'istruzione DDL, vedere Creazione di una tabella Singleton: modalità di input DDL avanzata.
Per caricare i dati nella tabella creata dalla console OCI, fare clic sul nome della tabella. Vengono visualizzati i dettagli della tabella. Fare clic su Carica dati. Fare clic su Seleziona file da caricare e specificare il file JSON da caricare. Puoi scaricare il file DDL e JSON per l'applicazione di tracciamento delle compagnie aeree qui.
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"
}
]
}
]
}
]
}
CREATE TABLE IF NOT EXISTS stream_acct(
acct_id INTEGER,
profile_name STRING,
account_expiry TIMESTAMP(9),
acct_data JSON,
PRIMARY KEY(acct_id)
)
Per la procedura di creazione di una tabella con un'istruzione DDL, vedere Creazione di una tabella Singleton: modalità di input DDL avanzata.
Per caricare i dati nella tabella creata dalla console OCI, fare clic sul nome della tabella. Vengono visualizzati i dettagli della tabella. Fare clic su Carica dati. Fare clic su Seleziona file da caricare e specificare il file JSON da caricare. Puoi scaricare il file DDL e JSON per l'applicazione di tracciamento delle compagnie aeree qui.