Data - notes générales sur les données

Liste SQL DBMS :

https://en.m.wikipedia.org/wiki/Lists_of_database_management_systems

https://docs.sqlalchemy.org/en/20/dialects/

Voir :

https://fr.wikipedia.org/wiki/CRUD

https://docs.ansible.com/ansible/2.9/modules/list_of_database_modules.html

https://pepi2g.wiki.inrae.fr/doku.php?id=infrastructures_big_data

SQL Sécurité

Voir :

SQLmap

Différents paradigmes : modèles

Modèle de données

Données structurées, semi structurées, non structurées

https://en.wikipedia.org/wiki/Semi-structured_data

https://en.wikipedia.org/wiki/Semi-structured_model

Non structuré

https://www.ibm.com/fr-fr/think/topics/milvus

https://www.ibm.com/fr-fr/think/topics/vector-search

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/

Distributed vector database : Milvus https://en.wikipedia.org/wiki/Milvus_(vector_database)Vector DB : ChromaDB, Milvus, PGVector

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

https://en.m.wikipedia.org/wiki/OrientDB

Données semi structurées

https://www.dokuwiki.org/plugin:strata Voir :

https://www.prologism.fr/wp-content/uploads/2020/08/PROLOGISM_BigData-GestionDonneesSemi-Structurees-SQL.pdf

https://docs.snowflake.com/en/user-guide/semistructured-intro.html

https://docs.snowflake.com/en/user-guide/semistructured-concepts.html

Serveurs :

https://en.m.wikipedia.org/wiki/XML_database

https://en.m.wikipedia.org/wiki/BaseX

https://en.m.wikipedia.org/wiki/Sedna_(database)

Multi-model databases

https://en.m.wikipedia.org/wiki/Comparison_of_multi-model_databases

OLTP vs OLAP

En bref

OLTP (OnLine Transaction Processing)

Traitement transactionnel en ligne

OLAP (OnLine Analytical Processing)

(Analyse multi-dimensionnelle)

Voir :

Traitement analytique en ligne

https://fr.wikipedia.org/wiki/Informatique_d%C3%A9cisionnelle

https://fr.wikipedia.org/wiki/Multidimensional_Expressions

https://www.guru99.com/online-analytical-processing.html

https://en.m.wikipedia.org/wiki/Comparison_of_OLAP_servers

https://www.softwaretestinghelp.com/best-olap-tools/

https://www.guru99.com/oltp-vs-olap.html

https://www.geeksforgeeks.org/olap-operations-in-dbms/

https://www.lebigdata.fr/olap-online-analytical-processing

https://olap.com/types-of-olap-systems/

https://www.tutorialspoint.com/dwh/dwh_olap.htm

OLEP OnLine Event Processing

Event logsEvent-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.

Source : https://practicalprogramming.fr/snowflake

Technos / Serveurs / outils

transaction processing (OLTP) and analytical processing (OLAP) workloads.

Olap tools & servers :

OLAP PivotTable

ClickHouse (Par Yandex)

Apache Kylin

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

ClickHousehttps://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 :

https://business-intelligence.developpez.com/tutoriels/etl-open-source/?page=Introduction

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

SPARQL https://en.m.wikipedia.org/wiki/List_of_SPARQL_implementations

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

Voir : https://db-engines.com/en/ranking

Postgres (SQL & NoSQL)

MongoDB et FerretDB

CoucheDB et PouchDB

SQLite

Neo4j

TiDB (Horizontal Scalability - MySQL Compatible Syntax)

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_rangeValeur attendue : Min 9000 Max 65500Valeur constatée : Min 32768 Max 65535

CFQ : deadline

Proxy DB / Pooler

Peut être une solution pour faire du sharding

Voir :

ProxySQL

pgBouncer

PL/Proxy

Outils DB

Migration schéma :

https://en.wikipedia.org/wiki/Flyway_(software)

Backup :

Barman (Postgresql backup)

NoSQL

Requête sur des bases NoSQLhttp://b3d.bdpedia.fr/bddoc.html

Comparaisonhttps://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 :

DBeaver

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 :

ORM - Mapping objet-relationnel

Data Mapper (ex SQLAlchemy) vs Active record

https://sgbd.developpez.com/actu/261037/Faut-il-utiliser-les-ORM-ou-continuer-d-ecrire-simplement-des-requetes-SQL-Eli-Bendersky-donne-son-avis/

Object-Document Mapper (ODM) (ex mincePy)

DAL - Database Abstraction Layer

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:

https://en.wikipedia.org/wiki/Data-oriented_design

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

ParaView