19 points par GN⁺ 2024-05-31 | 2 commentaires | Partager sur WhatsApp
  • 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

 
yangeok 2024-06-05

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.

 
GN⁺ 2024-05-31
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.