Sortie de la base de données DuckDB 1.2.0.

La version 1.2.0 de la base de donnĂ©es DuckDB, destinĂ©e Ă  l'exĂ©cution de requĂȘtes analytiques et conceptuellement semblable Ă  SQLite, a Ă©tĂ© publiĂ©e. DuckDB combine des propriĂ©tĂ©s de SQLite, telles que la compacitĂ©, l'intĂ©gration sous forme de bibliothĂšque embarquĂ©e, le stockage des bases de donnĂ©es dans un seul fichier et une interface CLI, avec des capacitĂ©s et des optimisations pour exĂ©cuter des requĂȘtes analytiques couvrant une part significative des donnĂ©es stockĂ©es, par exemple, rĂ©alisant l'agrĂ©gation de l'ensemble du contenu des tables ou fusionnant plusieurs grandes tables. Le code du projet est Ă©crit en C++ et est distribuĂ© sous la licence MIT.

DuckDB fournit un dialecte SQL Ă©tendu, incluant des fonctionnalitĂ©s supplĂ©mentaires pour traiter des requĂȘtes trĂšs complexes et de longue durĂ©e. Il est possible d'utiliser des types complexes (tableaux, structures, unions), ainsi que d'exĂ©cuter des sous-requĂȘtes corrĂ©lĂ©es arbitraires et imbriquĂ©es. L'exĂ©cution simultanĂ©e de plusieurs requĂȘtes est supportĂ©e, ainsi que l'exĂ©cution de requĂȘtes directement Ă  partir de fichiers au format CSV et Parquet. Un support pour l'importation Ă  partir de bases de donnĂ©es PostgreSQL est Ă©galement disponible.

Le projet utilise un shell basĂ© sur SQLite, un analyseur provenant de PostgreSQL, un composant Date Math de MonetDB, sa propre implĂ©mentation de fonctions de fenĂȘtres (basĂ©e sur l'algorithme Segment Tree Aggregation), un gestionnaire d'expressions rĂ©guliĂšres sur la base de la bibliothĂšque RE2, son propre optimiseur de requĂȘtes, un mĂ©canisme de contrĂŽle de la concurrence multi-version (Multi-Version Concurrency Control), ainsi qu'un moteur d'exĂ©cution de requĂȘtes vectorisĂ© basĂ© sur l'algorithme Hyper-Pipelining Query Execution, permettant de traiter de grands ensembles de valeurs en une seule opĂ©ration.

Dans la nouvelle version :

  • La prise en charge de nouvelles mĂ©thodes de compression a Ă©tĂ© mise en Ɠuvre, qui ne sont pas incluses par dĂ©faut pour conserver la compatibilitĂ© des fichiers de base de donnĂ©es avec les versions prĂ©cĂ©dentes de DuckDB. Pour utiliser le format amĂ©liorĂ© des fichiers de base de donnĂ©es, une possibilitĂ© de lier la base de donnĂ©es Ă  un numĂ©ro de version a Ă©tĂ© proposĂ©e — lors de l'ouverture d'un fichier Ă  l'aide du paramĂštre « STORAGE_VERSION », il est dĂ©sormais possible de spĂ©cifier la version minimale prise en charge de la base de donnĂ©es (« ATTACH ‘file.db’ (STORAGE_VERSION ‘v1.2.0’); »). Pour convertir le nouveau format en ancien, on peut utiliser la commande SQL COPY, par exemple : ATTACH ‘file1.db’; ATTACH ‘converted_file.db’ (STORAGE_VERSION ‘v1.0.0’); COPY FROM DATABASE file1 TO converted_file;
  • La prise en charge de la commande SQL « ALTER TABLE 
 ADD PRIMARY KEY » a Ă©tĂ© ajoutĂ©e pour ajouter une clĂ© primaire Ă  une table existante.
  • La restriction qui empĂȘchait de rĂ©ajouter des identifiants pour lesquels il y a un index de suivi d'unicitĂ©, si ces identifiants ont Ă©tĂ© supprimĂ©s dans la transaction actuelle, a Ă©tĂ© supprimĂ©e. Par exemple, le code SQL ci-dessous ne produit plus d'erreur : CREATE TABLE students (id INTEGER PRIMARY KEY, name VARCHAR); INSERT INTO students VALUES (1, ‘John Doe’); BEGIN; DELETE FROM students WHERE id = 1; INSERT INTO students VALUES (1, ‘Jane Doe’);
  • La prise en charge du chargement de fichiers CSV dans les encodages Latin-1 et UTF-16 a Ă©tĂ© ajoutĂ©e (auparavant, seul l'encodage UTF-8 Ă©tait pris en charge). FROM read_csv(‘cities-latin-1.csv’, encoding = ‘latin-1’);
  • La prise en charge de l'utilisation de sĂ©parateurs multibytes dans les fichiers CSV (jusqu'Ă  4 octets) a Ă©tĂ© ajoutĂ©e, permettant de spĂ©cifier des emojis comme sĂ©parateurs de colonnes. a🩆b hello🩆world FROM read_csv(‘example.dsv’, sep = ‘🩆’);
  • Par dĂ©faut, le mode strict de l'analyse des fichiers CSV («strict_mode = true») est activĂ©, vĂ©rifiant la conformitĂ© au format de la spĂ©cification RFC 4180. En mode strict, un seul caractĂšre est autorisĂ© pour la sĂ©paration des lignes, ce qui entraĂźnera une erreur lors de l'analyse de fichiers utilisant non seulement le caractĂšre de nouvelle ligne, mais aussi le retour chariot («\r\n»).
  • Un nouvel algorithme de dĂ©tection de nouvelle ligne a Ă©tĂ© implĂ©mentĂ© dans le parseur CSV, prenant en charge le parallĂ©lisme des opĂ©rations. L'utilisation de ce nouvel algorithme a accĂ©lĂ©rĂ© l'analyse des CSV d'environ 15%.
  • La limitation de taille de ligne dans les fichiers CSV a Ă©tĂ© supprimĂ©e (auparavant, une ligne ne devait pas dĂ©passer 8 Mo).
  • Lors de l'exportation de donnĂ©es au format Parquet, le support des hachages (dictionnaires) et des index basĂ©s sur le filtre de Bloom a Ă©tĂ© rĂ©alisĂ©. Une mĂ©thode de compression DELTA_BINARY_PACKED a Ă©tĂ© mise en Ɠuvre, permettant de rĂ©duire considĂ©rablement la taille des fichiers Parquet.
  • Un mode sĂ©curisĂ© a Ă©tĂ© ajoutĂ© Ă  l'interface de ligne de commande, activĂ© par l'option «-safe» ou la commande «.safe_mode». En mode sĂ©curisĂ©, seul l'accĂšs au fichier de base de donnĂ©es initialement spĂ©cifiĂ© est autorisĂ©, et toute tentative d'ouverture d'autres fichiers entraĂźnera une erreur.
  • L'interface en ligne de commande a amĂ©liorĂ© l'autocomplĂ©tion des entrĂ©es. Le code d'autocomplĂ©tion a Ă©tĂ© mis Ă  jour pour utiliser la PEG (Grammaire d'Expression de Parsing).
  • En exĂ©cutant des commandes dans l'interface en ligne de commande, un affichage visuel des grands nombres a Ă©tĂ© implĂ©mentĂ©, par exemple, pour afficher le nombre 100000000, il sera Ă©galement indiquĂ© «(100 millions)».
  • En SQL, le support de la syntaxe a Ă©tĂ© ajoutĂ©, permettant d'indiquer des noms abrĂ©gĂ©s de tables et d'expressions avant les valeurs auxquelles elles se rĂ©fĂšrent (au lieu d'utiliser la syntaxe «expression AS nom»): SELECT e1: une_expression_longue_et_complexe, e2: t2.nom_de_colonne FROM t1: long_schema.nom_de_table_longue, t2: short_s.tbl;
  • Dans la commande «SELECT», le support de l'opĂ©ration «RENAME» a Ă©tĂ© ajoutĂ© pour renommer les champs affichĂ©s lors de l'utilisation de l'expression «*»: SELECT * RENAME (col1 AS new_col1) FROM integers;
  • Dans la commande «SELECT», l'utilisation des opĂ©rations «LIKE» et «SIMILAR TO» a Ă©tĂ© autorisĂ©e lors de l'affichage par «*»: SELECT * LIKE ‘val%’ FROM key_val;
  • La qualitĂ© de la gĂ©nĂ©ration des nombres alĂ©atoires a Ă©tĂ© amĂ©liorĂ©e.
  • L'optimiseur de requĂȘtes a Ă©tĂ© modernisĂ©. Les performances lors du test TPC-H SF100 ont augmentĂ© de 13%.
  • Une nouvelle API similaire Ă  C a Ă©tĂ© proposĂ©e pour le dĂ©veloppement d'extensions, qui peut ĂȘtre utilisĂ©e par exemple pour crĂ©er de nouvelles fonctions agrĂ©gĂ©es ou de tableau.
  • Ajout de la prise en charge des systĂšmes avec la bibliothĂšque standard C Musl.

Source : opennet.ru

Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS đŸ”„ Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster