Architecture logique et physique des données
Dans KingbaseES, il est essentiel de comprendre comment les objets logiques sont mappés aux fichiers physiques sur le disque. Par défaut, les fichiers de données sont stockés dans le répertoire data du cluster. L'interrogation du catalogue système permet de localiser précisément ces fichiers.
-- Connexion à la base de données cible
ksql corporate_db admin_user
-- Liste des relations dans le schéma public
\dt
Liste des relations
Schéma | Nom | Type | Propriétaire
--------+----------------+-------+--------------
public | employee_records | table | admin_user
public | audit_logs | table | admin_user
-- Obtention du chemin physique du fichier de données pour la table 'employee_records'
SELECT sys_relation_filepath('employee_records');
sys_relation_filepath
---------------------------
base/16384/32768
Navigation, gestion des sessions et métadonnées
La gestion des connexions et l'exploration des métadonnées s'effectuent via l'outil en ligne de commande ksql. Voici les opérations courentes pour naviguer entre les bases de données, les schémas, inspecter les structures et vérifier les privilèges d'accès.
-- Connexion via adresse IP et port spécifique
ksql -d corporate_db -U admin_user -h 192.168.1.50 -p 54322
-- Connexion locale directe
ksql corporate_db admin_user
-- Changement d'utilisateur actif pour la session
\c - analyst_user
-- Changement de base de données
\c finance_db
-- Affichage des informations de connexion actuelles
\conninfo
-- Lister tous les schémas de la base courante
\dn
Nom | Propriétaire
----------------+--------------
hr_department | admin_user
finance_schema | admin_user
public | admin_user
sys_catalog | admin_user
-- Vérification des privilèges d'accès pour une table spécifique
\dp+ hr_department.departments;
Privilèges d'accès
Schéma | Nom | Type | Privilèges d'accès | Privilèges de colonne | Politiques
---------------+-------------+-------+--------------------------------+-----------------------+------------
hr_department | departments | table | admin_user=arwdDxt/admin_user+ | |
| | | analyst_user=r/admin_user | |
-- Lister les tables dans un schéma spécifique
\dt hr_department.*
Schéma | Nom | Type | Propriétaire
---------------+--------------------+-------+--------------
hr_department | departments | table | admin_user
hr_department | employees | table | admin_user
hr_department | salary_history | table | admin_user
-- Inspecter la structure d'une table
\d hr_department.departments
Colonne | Type | Modificateurs
---------------+------------------------+---------------
dept_id | numeric(4,0) | not null
dept_name | character varying(50) | not null
location | character varying(100) |
budget | numeric(12,2) | not null
-- Récupérer les données (deux méthodes équivalentes)
SELECT * FROM hr_department.departments;
dept_id | dept_name | location | budget
---------+-------------+------------+----------
101 | Engineering | Building A | 500000.00
102 | Marketing | Building B | 250000.00
TABLE hr_department.departments;
dept_id | dept_name | location | budget
---------+-------------+------------+----------
101 | Engineering | Building A | 500000.00
102 | Marketing | Building B | 250000.00
-- Exécution d'un script SQL en mode interactif
\i /opt/scripts/init_hr_schema.sql
-- Importation directe d'un script depuis le terminal système
ksql -U admin_user -d corporate_db -f "/opt/scripts/init_hr_schema.sql"
Opérations d'importation et d'exportation de données
Le transfert de données vers et depuis des fichiers externes, tels que le format CSV, est une tâche administrative fréquente. La commande \copy permet d'effectuer ces opérations directement depuis le client, en contournant les restrictions de permissions du serveur de base de données sur le système de fichiers local.
-- Exportation de la table vers un fichier CSV avec en-têtes
\copy hr_department.departments TO '/var/lib/kingbase/data_exports/departments.csv' WITH CSV HEADER
COPY 2
-- Vérification du contenu du fichier exporté via le shell intégré
\! cat /var/lib/kingbase/data_exports/departments.csv
dept_id,dept_name,location,budget
101,Engineering,Building A,500000.00
102,Marketing,Building B,250000.00
-- Création d'une table temporaire pour la restauration des données
CREATE TABLE public.departments_backup AS SELECT * FROM hr_department.departments WHERE 1=0;
-- Importation des données depuis le fichier CSV
\copy public.departments_backup FROM '/var/lib/kingbase/data_exports/departments.csv' WITH CSV HEADER
COPY 2
-- Validation des données importées
SELECT * FROM public.departments_backup;
dept_id | dept_name | location | budget
---------+-------------+------------+----------
101 | Engineering | Building A | 500000.00
102 | Marketing | Building B | 250000.00