Exemples de dossiers d'emploi pour NDCS
Les cas d'emploi en temps réel de NoSQL Database Cloud Service sont deux applications de suivi des bagages des compagnies aériennes et un service de diffusion en continu permettant de stocker en permanence les profils utilisateur.
Le langage SQL pour Oracle NoSQL Database fournit une interface de type SQL à Oracle NoSQL Database. Le modèle de données SQL for Oracle NoSQL Database prend en charge les données relationnelles plates, les données typées hiérarchiques (totales par schéma) et les données JSON sans schéma. Vous avez la possibilité de créer des tables avec un schéma bien défini pour les applications qui nécessitent des données fixes ou une combinaison de données fixes et de JSON sans schéma. Oracle NoSQL Database prend en charge la plupart des frameworks et langages de programmation les plus populaires avec des API de langage idiomatiques et des structures de données, ce qui donne à votre langage d'application un accès natif aux données stockées dans NoSQL Database. Il prend actuellement en charge les structures et langages de programmation suivants : Javascript (Node.js), Python, Java, Golang, C#/.NET et Spring Data. Vous pouvez également naviguer dans la base de données lorsque vous développez votre code à l'aide de modules d'extension pour l'un des environnements de développement intégrés pris en charge suivants : Visual Studio Code ou IntelliJ.
Cet article comprend les rubriques suivantes :
Exemples de cas d'utilisation utilisés dans les exemples
Vous disposez de deux schémas différents (avec des scénarios en temps réel) pour apprendre différents concepts SQL. Ces deux schémas incluent différents types de données qui peuvent être utilisés dans la base de données Oracle NoSQL.
Schéma 1 : Schéma BaggageInfo
En utilisant ce schéma, vous pouvez gérer un cas d'utilisation dans lequel les passagers voyageant sur un vol peuvent suivre la progression de leurs bagages enregistrés ou bagages le long de l'itinéraire vers la destination finale. Cette fonctionnalité peut être disponible dans le cadre de l'application mobile de la compagnie aérienne. Une fois que le passager se connecte à l'application mobile, le numéro du billet ou le code de réservation du vol en cours est affiché à l'écran. Les passagers peuvent utiliser ces informations pour rechercher leurs informations de bagages. L'application mobile utilise NoSQL Database pour stocker toutes les données relatives aux bagages. Dans le back-end, la logique de l'application mobile effectue des requêtes SQL pour extraire les données requises.
Schéma 2 : Service de média en continu - Banque de profils utilisateur persistant
Envisagez une application de streaming TV. Il diffuse diverses émissions qui sont regardées par des clients à travers le monde. Chaque série a un certain nombre de saisons et chaque saison a plusieurs épisodes. Vous avez besoin d'un magasin de métadonnées persistant qui assure le suivi de l'activité actuelle des clients utilisant l'application de streaming TV. En utilisant ce schéma, vous pouvez fournir des informations utiles au client, telles que les épisodes qu'il a regardés, le temps de visionnage par épisode, le nombre total de saisons de l'émission qu'il a regardée, etc. Les données sont stockées dans la base de données NoSQL et l'application exécute des requêtes SQL pour extraire les données requises et les mettre à la disposition de l'utilisateur.
Tables utilisées dans les exemples
La table est la structure de base qui contient les données utilisateur.
Tableau 1 : Application de suivi des bagages d'avion
La table utilisée dans ce schéma est BaggageInfo. Ce schéma comporte une combinaison de types de données fixes tels que LONG, STRING. Il a également un JSON sans schéma (bagInfo) comme l'une de ses colonnes. Le JSON sans schéma n'a pas de type de données fixe. Les informations sur le sac des passagers sont un JSON sans schéma. En revanche, les informations du passager telles que le numéro du billet, le nom complet, le sexe, les coordonnées font partie d'un schéma fixe. Vous pouvez ajouter autant de champs que vous le souhaitez à ce champ JSON sans schéma non fixe.
Le code suivant crée la table.
CREATE TABLE BaggageInfo (
ticketNo LONG,
fullName STRING,
gender STRING,
contactPhone STRING,
confNo STRING,
bagInfo JSON,
PRIMARY KEY (ticketNo)
)
Tableau 2 : Service de média de transmission en continu - Banque de profils utilisateur persistante
La table utilisée dans ce schéma est stream_acct. La clé primaire de ce schéma est acct_id. Le schéma inclut également une colonne JSON (acct_data), qui est sans schéma. Le JSON sans schéma n'a pas de type de données fixe. Vous pouvez ajouter autant de champs que vous le souhaitez à ce champ JSON sans schéma non fixe.
Le code suivant crée la table.
CREATE TABLE stream_acct(
acct_id INTEGER,
profile_name STRING,
account_expiry TIMESTAMP(9),
acct_data JSON,
PRIMARY KEY(acct_id)
)
Décrire les tableaux
Vous utilisez la commande DESCRIBE ou DESC pour afficher la description d'une table.
(DESCRIBE | DESC) [AS JSON] TABLE table_name [ "(" field_name")"]
AS JSON peut être indiqué si vous voulez que la sortie soit au format JSON. Vous pouvez obtenir des informations sur un champ spécifique dans n'importe quelle table en indiquant le nom du champ.
Exemple 1 : Décrire une table
DESCRIBE TABLE stream_acct
Sortie :
=== 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 | | | |
+----+----------------+--------------+----------+---------+----------+------------+----------+
---+----------+
Exemple 2 : décrire une table et afficher la sortie au format JSON
DESC AS JSON TABLE BaggageInfo
Sortie :
{
"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"]
}
Exemple 3 : Décrire un champ particulier d'une table
DESCRIBE TABLE BaggageInfo (ticketNo)
Sortie :
+----+----------+------+----------+---------+----------+------------+----------+
| id | name | type | nullable | default | shardKey | primaryKey | identity |
+----+----------+------+----------+---------+----------+------------+----------+
| 1 | ticketNo | Long | N | NULL | Y | Y | |
+----+----------+------+----------+---------+----------+------------+----------+
Exemples de données pour exécuter des requêtes
Vous pouvez créer des tables utilisées dans les exemples et charger des données dans les tables à l'aide de la console OCI.
Tableau 1 : Application de suivi des bagages de ligne : Un exemple de ligne de l'application de bagages est présenté ci-dessous.
"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"
} ]
A partir de la console OCI, utilisez le mode d'entrée DDL avancé pour créer la table à l'aide du DDL indiqué ci-dessous.
CREATE TABLE IF NOT EXISTS BaggageInfo (
ticketNo LONG,
fullName STRING,
gender STRING,
contactPhone STRING,
confNo STRING,
bagInfo JSON,
PRIMARY KEY (ticketNo)
)
Pour connaître les étapes de création d'une table avec une instruction LDD, reportez-vous à Création d'une table unique : mode d'entrée LDD avancé.
Pour charger des données dans la table créée à partir de la console OCI, cliquez sur le nom de la table. Les détails de la table s'affichent. Cliquez sur Télécharger les données. Cliquez sur Sélectionner le fichier à télécharger et indiquez le fichier JSON à télécharger. Vous pouvez télécharger le fichier DDL et JSON pour l'application de suivi des compagnies aériennes ici.
Tableau 2 : Service de média en continu - Banque de profils utilisateur persistante Un exemple de ligne de l'application de média en continu est présenté ci-dessous.
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"
}
]
}
]
}
]
}
A partir de la console OCI, utilisez le mode d'entrée DDL avancé pour créer la table à l'aide du DDL indiqué ci-dessous.
CREATE TABLE IF NOT EXISTS stream_acct(
acct_id INTEGER,
profile_name STRING,
account_expiry TIMESTAMP(9),
acct_data JSON,
PRIMARY KEY(acct_id)
)
Pour connaître les étapes de création d'une table avec une instruction LDD, reportez-vous à Création d'une table unique : mode d'entrée LDD avancé.
Pour charger des données dans la table créée à partir de la console OCI, cliquez sur le nom de la table. Les détails de la table s'affichent. Cliquez sur Télécharger les données. Cliquez sur Sélectionner le fichier à télécharger et indiquez le fichier JSON à télécharger. Vous pouvez télécharger le fichier DDL et JSON pour l'application de suivi des compagnies aériennes ici.