Table des matières
0 billet(s) pour février 2026
Data - notes générales sur les données
Liste SQL DBMS :
Voir :
SQL Sécurité
Voir :
- SQLmap
Différents paradigmes : modèles
Données structurées, semi structurées, non structurées
Non structuré
Database management system provides mechanism for storage and retrieval of data. There are three main types of database management systems namely RDBMS (Relational Database management Systems), OLAP (Online Analytical Processing Systems) and NoSQL.
https://en.m.wikipedia.org/wiki/Lists_of_database_management_systems
https://en.m.wikipedia.org/wiki/List_of_databases_using_MVCC
https://github.com/gostor/awesome-go-storage#database
Clef valeur : Valkey (Redis), etcd, BoltDB / bbolt (embedded key/value database), TiKV (cncf.io) Voir : https://juicefs.com/docs/community/databases_for_metadata/
Ddistributed vector database : Milvus https://en.wikipedia.org/wiki/Milvus_(vector_database)
Db orientées documents : CoucheDB, MongoDB, TinyDB
base de données orientée graphe : Neo4j, OrientDB, TinkerPop (OLAP & OLTP)
Fichiers plats : CSV, JSON, YAML, XML, HDF5
column-oriented database : ClickHouse, hbase (HDFS)
Semi-structured data : XML; HTML, JSON, YAML
Autres : LMDB Lightning Memory-Mapped Database : Base de données en mémoire et NoSQL
indépendamment de cela il existe des bases de données optimisées pour de la lecture : LDAP, etcd…
RDF / Triplestore
Prometheus
Scalable horizontalement
- Vitess (Scalable. Reliable. MySQL-compatible. Cloud-native) (Voir http://cncf.io)
Multi modèle
Données semi structurées
Multi-model databases
OLTP vs OLAP
En bref
OLTP (OnLine Transaction Processing)
OLAP (OnLine Analytical Processing)
(Analyse multi-dimensionnelle)
Voir :
OLEP OnLine Event Processing
Event logs Event-Oriented Database
EventQL
Explication
Suivant l'activité de l'entreprise, les besoins d'exécution du métier peuvent imposer des contraintes techniques. Les différentes technologies de bases de données se répartissent en deux grandes familles suivant leurs missions principales.
Les bases de données ayant vocation à stocker des données en temps réel. C'est le cas des bases de données MySQL ou MongoDB. On les catégorise comme bases de données OLTP (Online transaction processing).
D'autres technologies ont l'analyse de données au cœur de leurs préoccupations. Il s'agit de bases de données OLAP (OnLine Analytical Processing). Elles sont capables de traiter d'importants volumes de données rapidement afin de produire différents rapports.
Technos / Serveurs / outils
transaction processing (OLTP) and analytical processing (OLAP) workloads.
Olap tools & servers :
- ClickHouse (Par Yandex)
- LucidDB
- Langage R
- Python Anaconda
- Jasp
- Jamovi
- Palo OLAP Server
- Pentaho BI
- Mondrian
- OBIEE (Oracle Business Intelligence Enterprise Edition)
- JsHypercube
Voir : https://en.wikipedia.org/wiki/Comparison_of_OLAP_servers
ClickHouse https://m.youtube.com/watch?v=FsVrFbcyb84
OLAP - Data Lake vs Data Warehouse
Voir https://practicalprogramming.fr/snowflake
Le Data Warehouse base l'exploitation des données qu'il renferme sur un processus d'ETL (Extract, Tranform, Load) permettant de charger les données issues des différentes applications.
ETL
Voir :
Outils :
- Airbyte
- Apache NiFi
- Apache Camel
- Jaspersoft ETL
- Apache Kafka
- Apache Airflow
- CloverETL
- Scriptella
- Pentaho Kettle
- Talend Open Studio
- KETL
- HPCC Systems
- GeoKettle
- CloverETL
- Apatar
- Cloudera
- BIRT
Langages
https://en.m.wikipedia.org/wiki/Query_language
- SQL
- PartiQL
- OQL
- RDF query language
- XQuery
- XPath
- XSLT
- GraphQL (voir https://github.com/cayleygraph/cayley)
- AQL (ArangoDB Query Language)
- ReQL (RethinkDB)
- Spark_SQL (Spark)
- N1QL (CouchBase)
- MDX (Olap)
- https://en.m.wikipedia.org/wiki/Gremlin_(query_language) (Olap & Oltp)
- Gremlin (Neo4j, Orientdb, TinkerPop)
- JMESPath is a query language for JSON
- PromQL (Prometheus)
Serveurs
Config
Sur la plupart des bases de données comme Redis / Valkey, MongoDB, RabbitMQ, CouchBase, Kafka désactiver les Transparent Huge Pages il est recommandé de désactiver transparent_hugepages_thp Transparent HugePages THP
Parametre Kernel : net.ipv4.ip_local_port_range Valeur attendue : Min 9000 Max 65500 Valeur constatée : Min 32768 Max 65535
CFQ : deadline
Proxy DB / Pooler
Outils DB
Migration schéma :
Backup :
- Barman (Postgresql backup)
NoSQL
Requête sur des bases NoSQL http://b3d.bdpedia.fr/bddoc.html
Comparaison https://hackolade.com/help/NoSQLdatabasesJSONRESTAPIs.html
The CAP theorem states that any distributed database can only have a maximum of two of three desirable qualities: consistency, availability, and partition tolerance.
- Consistency: All clients always have the same view of the data.
- Availability: All clients can read from and write to the database at all times.
- Partition tolerance: The database cluster can keep working even if communication between nodes breaks down.
Voir aussi : Propriétés ACID
Connecteurs
Voir : https://www.ibm.com/docs/en/psfa/7.2.1?topic=configuration-overview-odbc-jdbc-ole-db-net
- ODBC
- JDBC
Client Multi bases
Voir :
- isql / iusql (via ODBC)
- Adminer
Adminer
Adminer est compatible :
- MySQL / MariaDB
- PostgreSQL
- SQLite
- MS SQL
- Oracle
- Elasticsearch
- MongoDB, SimpleDB (plugin)
- Firebird (plugin)
- ClickHouse (plugin)
Question - besoin
Pour quelle finalité : pour du traitement ou pour de l'analytique (OLTP ou OLAP) ?
Les données sont-elles déjà formatées ?
- Si oui quel format
- Sont-elle structurées - semi structurées ou non structurées ?
Quelle quantité de données ?
Quels IO ?
Besoin de mise à l'échelle horizontale (scalabilité) ?
Besoin par rapport au théorème CAP (Théorème de Brewer) ?
- Besoin des propriétés ACID ?
- Besoin haute disponibilité ?
Les données doivent-elle être présentées à l'appli via une couche d'abstraction tel que :
-
- Data Mapper (ex SQLAlchemy) vs Active record
- Object-Document Mapper (ODM) (ex mincePy)
- Connecteur ODBC, JDBC, API Test
Quels sont les besoin en terme de persistance ?
- Est-ce qu'un In memory database peut convenir ?
Fait-il une gestion de version (MVCC) ?
Est-ce plus pour de la lecture ou lecture / écriture ?
Autres
Meta DB
- Virtuoso Universal Server
- DBeaver
Autres:
Colonnes HDFS HBASE
HBase est un système de gestion de base de données non relationnelle orienté colonnes qui fonctionne sur HDFS
hdfs dfs -ls / hbase hbck -details
Outils de visualisation de données
Crypto - Découper ses clefs en plusieurs morceaux grâce au secret reparti
m of n
Découper une clef de chiffrement en plusieurs morceaux
Voir aussi:
- Secrets partagés n-of-m HSM
- sc-hsm-tool
- 4-eyes principle
Install
apt-get install libgfshare-bin
Découpage (split)
gfsplit -n 3 -m 5 plop.key
Découpe le ficher plop.key en 5 morcaux. Seulement 3 morcaux suffit pour recomposer la clef en entier
Réassemblage (combine)
gfcombine plop.key.186 plop.key.184 plop.key.007 -o plop.key
Créer un patch - diff
Voir aussi :
- JSON RFC 6902 patch
Source: https://docs.moodle.org/dev/How_to_create_a_patch
diff -Naur standard_moodle my_moodle > patch.txt
Avec git
The easiest way to create a patch for the last commit is
Créer un patch pour le dernier commit
git show > patch.txt
If you want to create a patch between 2 specific commits you can use git diff
git diff commitid1 commitid2 > patch.txt
Il existe aussi git format-patch pour pouvoir facilement envoyer un patch par mail
git format-patch -n #git format-patch -1 <sha1> --stdout > <name>.patch
Autre
Défaire / inverser un patch (Undo patch)
interdiff -q file.patch /dev/null > reversed.patch
Création d'un dépôt RedHat RPM pour Yum
Conf dépots
yum install createrepo repoview
mkdir -p /var/www/repo #mkdir -p /var/www/repo/SRPMS cp *.rpm /var/www/repo/ createrepo /var/www/repo/el7 repoview /var/www/repo/el7 chown -R apache:apache /var/www/repo
Conf Apache
/etc/httpd/conf.d/repo.conf
<VirtualHost *:81> DocumentRoot /var/www/repo/el7/ <Directory /var/www/repo/el7/> Options +Indexes </Directory> <Location /> Allow from all </Location> </VirtualHost>
/etc/httpd/conf/httpd.conf
Listen 80 Listen 81
apache -t && systemctl reload httpd
Conf client
/etc/yum.repos.d/mon.repo
[interne] name=Dépôt interne enabled=1 gpgcheck=0 baseurl=http://localhost:81/ #gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
Pour tester la conf du client
yum clean all yum list
