- DuckDB peut fonctionner comme une base de données même si les données ne sont pas réellement stockées en interne dans la base de données
- Les données sont stockées dans un stockage séparé, et la base de données fonctionne en les référençant
- Le fichier de base de données ne contient pas les données réelles, mais uniquement des instructions sur la manière de les traiter
Exemple : service de robotaxi
- Description de la situation : dans un service de robotaxi, il faut partager avec les analystes les données générées chaque jour.
- Problème : les données sont trop volumineuses pour être envoyées par e-mail, et leur partage via un lien est également complexe.
- Solution : utiliser DuckDB pour créer un fichier de base de données et le partager.
# 데이터베이스 생성
import duckdb
db = duckdb.connect("weird_rides.db")
db.sql("""
CREATE VIEW weird_rides
AS SELECT pickup_at, dropoff_at, trip_distance, total_amount
FROM 's3://robotaxi-inc/daily-ride-data/*.parquet'
WHERE fare_amount > 100 AND trip_distance < 10.0
""")
db.close()
- Résultat : le fichier
weird_rides.db ne contient pas les données réelles, mais des instructions sur la manière de les traiter.
- Méthode de partage : téléverser ce fichier dans un stockage blob puis en partager le lien.
Accès aux données
- Connexion à la base de données : le destinataire démarre une session DuckDB locale et se connecte au fichier de base de données partagé.
# 데이터베이스 연결
import duckdb
conn = duckdb.connect()
conn.sql("""
ATTACH 's3://robotaxi-inc/virtual-datasets/weird_rides.db'
AS rides_db (READ_ONLY)
""")
conn.sql("SELECT * FROM rides_db.weird_rides LIMIT 5")
- Téléchargement des données : seules les données nécessaires sont téléchargées depuis S3 au moment de l’exécution de la requête.
- Traitement efficace des données : seules les colonnes nécessaires sont lues, et des filtres sont appliqués pour exclure les données inutiles.
Les avantages de DuckDB
- Résistant aux changements : même si le format des données, la stratégie de partitionnement ou le schéma changent, la manière dont le destinataire accède aux données reste inchangée.
- Navigateur de données cloud : avec DuckDB, il devient facile d’accéder à des jeux de données relationnels via des hyperliens.
2 commentaires
Ah, sur de gros volumes de données, s’il suffit d’avoir le catalogue des petites données et les chemins exacts, on peut peut-être aussi économiser un peu de ressources serveur, haha.
Avis Hacker News
Traitement efficace des feuilles de réponses d’un SaaS de création de formulaires avec DuckDB et duckdb-wasm : les données de réponse sont stockées sur S3, puis interrogées côté client dans une base locale via duckdb-wasm afin d’optimiser l’usage du réseau et de la mémoire.
Présentation de MotherDuck : un data warehouse DuckDB managé et serverless, offrant notamment des clones sans copie, le partage sécurisé et un mode hybride avec les données cloud.
Intégration de DuckDB dans l’éditeur SQL qStudio : prise en charge des jointures avec diverses bases de données, et recommandation comme bon IDE pour débuter avec DuckDB.
Proposition de fournir les données via des liens S3 : remise en question de la valeur des bases intermédiaires et des vues, avec l’idée qu’il peut être plus efficace pour les analystes de données de manipuler directement les données brutes.
Présentation de Data Tap : une solution qui embarque DuckDB dans des fonctions Lambda pour stocker les données sur S3 au format Parquet, en mettant l’accent sur le rapport coût-efficacité et la scalabilité.
Confusion autour des méthodes d’accès aux données : il est expliqué que les data engineers ont tendance à éviter les pré-agrégations, tandis que les analystes de données préfèrent souvent accéder aux données brutes.
Réaction à l’affirmation selon laquelle la plupart des bases de données ne contiennent pas de données : cette affirmation est jugée exagérée.
Suggestion d’envoyer des requêtes SQL par e-mail à ses collègues : cela remet en question l’intérêt des fichiers de base de données binaires.
Doutes sur l’utilité des nouveaux outils SQL : l’idée est avancée qu’il serait plus approprié de stocker les données dans un data warehouse persistant et de créer les vues nécessaires.
Similarité avec Presto/Trino : certains estiment que l’approche de DuckDB ressemble à celle de Presto/Trino.