การเปิดตัว DBMS SQLite 3.42 และ DuckDB 0.8.0 CG / SQL พร้อมการใช้งานขั้นตอนการจัดเก็บสำหรับ SQLite

การเปิดตัว SQLite 3.42 ซึ่งเป็น DBMS ที่มีน้ำหนักเบาซึ่งออกแบบเป็นไลบรารีปลั๊กอินได้รับการเผยแพร่แล้ว รหัส SQLite เผยแพร่ในโดเมนสาธารณะ เช่น สามารถใช้ได้โดยไม่มีข้อจำกัดและไม่มีค่าใช้จ่ายสำหรับวัตถุประสงค์ใดๆ การสนับสนุนทางการเงินสำหรับนักพัฒนา SQLite มีให้โดยสมาคมที่สร้างขึ้นเป็นพิเศษ ซึ่งรวมถึงบริษัทต่างๆ เช่น Adobe, Oracle, Mozilla, Bentley และ Bloomberg

การเปลี่ยนแปลงที่สำคัญ:

  • สำหรับดัชนีข้อความแบบเต็ม FTS5 จะใช้คำสั่ง secure-delete ซึ่งจะล้างข้อมูลที่เหลือทั้งหมดหลังจากการลบอย่างสมบูรณ์
  • ฟังก์ชันสำหรับการประมวลผลข้อมูลในรูปแบบ JSON รองรับส่วนขยาย JSON5 แล้ว
  • ปรับปรุงตัววางแผนแบบสอบถาม การเพิ่มประสิทธิภาพจำนวนการดูถูกเปิดใช้งานโดยค่าเริ่มต้น กำจัดการจัดการคอลัมน์ที่ไม่ได้ใช้ในแบบสอบถามย่อย ปรับปรุงการใช้งานการเพิ่มประสิทธิภาพแบบกดลง
  • เพิ่มตัวเลือก "--unsafe-testing" ใน CLI เพื่ออนุญาตให้ใช้คำสั่งอันตรายบางอย่าง เช่น ".testctrl" ในการทดสอบ ในเซฟโหมด ("--safe") อนุญาตให้ใช้คำสั่ง ".log on" และ ".log off" เพิ่มการรองรับตัวคั่น "—" สำหรับอาร์กิวเมนต์หลังจากที่ปิดใช้งานการประมวลผลตัวเลือก เพิ่มพารามิเตอร์ ":inf" และ ":nan" ที่เชื่อมโยงกับค่าอนันต์และค่า NaN
  • ชื่อของฟังก์ชัน SQL ที่กำหนดโดยแอปพลิเคชันได้รับอนุญาตให้ตัดกับคีย์เวิร์ด CROSS, FULL, INNER, LEFT, NATURAL, OUTER และ RIGHT
  • ขยายความสามารถในการตรวจสอบความสมบูรณ์ของ PRAGMA เพิ่มการตรวจสอบสำหรับการระบุค่า NaN ในคอลัมน์ที่มีเงื่อนไขไม่เป็นโมฆะ ปรับปรุงเนื้อหาข้อมูลของข้อความแสดงข้อผิดพลาด
  • การเพิ่มเซสชันช่วยให้สามารถสกัดกั้นการเปลี่ยนแปลงจากตารางที่ไม่มี ROWID
  • เพิ่มตัวแก้ไข "วินาทีย่อย" ในฟังก์ชันสำหรับการทำงานกับเวลาและวันที่เพื่อใช้เศษส่วนของวินาที
  • ลดความลึกของการเรียกซ้ำเริ่มต้นสำหรับอาร์เรย์และวัตถุ JSON จาก 2000 เป็น 1000

นอกจากนี้ DuckDB 0.8.0 DBMS ได้ถูกสร้างขึ้นซึ่งพัฒนาตัวแปร SQLite ปรับปรุงด้วยคุณสมบัติและการเพิ่มประสิทธิภาพสำหรับการดำเนินการค้นหาเชิงวิเคราะห์ที่ครอบคลุมส่วนสำคัญของข้อมูลที่เก็บไว้ ตัวอย่างเช่น การรวมเนื้อหาทั้งหมดของตารางหรือการรวมหลาย ๆ ตารางขนาดใหญ่ มีภาษาถิ่นเพิ่มเติมของภาษา SQL รวมถึงความสามารถเพิ่มเติมสำหรับการจัดการการสืบค้นที่ซับซ้อนมากและใช้เวลานาน ตลอดจนการรองรับประเภทที่ซับซ้อน (อาร์เรย์ โครงสร้าง ยูเนี่ยน) การดำเนินการพร้อมกันของแบบสอบถามหลายรายการ และการดำเนินการของแบบสอบถามโดยตรงจาก ไฟล์ในรูปแบบ CSV, JSON และ Parquet สามารถนำเข้าจาก PostgreSQL DBMS ได้

นอกจากเชลล์โค้ดจาก SQLite แล้ว โครงการยังใช้โปรแกรมแยกวิเคราะห์จาก PostgreSQL ย้ายไปยังไลบรารีแยกต่างหาก คอมโพเนนต์ Date Math จาก MonetDB การนำฟังก์ชันหน้าต่างไปใช้ อิงตามไลบรารี RE2 เครื่องมือเพิ่มประสิทธิภาพการสืบค้นข้อมูล กลไกการควบคุม MVCC การดำเนินการพร้อมกันของงาน (การควบคุมการทำงานพร้อมกันหลายเวอร์ชัน) รวมถึงเอ็นจิ้นการดำเนินการสืบค้นข้อมูลแบบ vectorized ตามอัลกอริธึมการดำเนินการ Query Execution แบบ Hyper-Pipelining ซึ่งช่วยให้สามารถประมวลผลชุดใหญ่ของ ค่าพร้อมกันในการดำเนินการครั้งเดียว รหัสโครงการแจกจ่ายภายใต้ใบอนุญาต MIT

ใน DuckDB เวอร์ชันใหม่:

  • เพิ่มนิพจน์ใหม่ "PIVOT" และ "UNPIVOT" เพื่อแปลงแถวเป็นคอลัมน์และในทางกลับกัน
  • ปรับปรุงการขนานเมื่อนำเข้าและส่งออกข้อมูล ตามค่าเริ่มต้น การอ่านจากไฟล์ในรูปแบบ CSV ไปยังหลายสตรีมและการเขียนแบบมัลติเธรดจะถูกนำไปใช้เมื่อใช้รูปแบบ Parquet, CSV และ JSON
  • เพิ่มตัวดำเนินการ "**" เพื่อวนซ้ำไดเรกทอรีเมื่อกำหนดเส้นทางไฟล์ (เช่น FROM "'data/glob/crawl/stackoverflow/**/*.csv';")
  • เพิ่มการรองรับการดำเนินการผสาน (JOIN) สำหรับข้อมูลในรูปแบบของอนุกรมเวลา (ส่วนย่อยของค่าพารามิเตอร์ในช่วงเวลาที่กำหนด) ซึ่งเกณฑ์สำหรับการรวมเรกคอร์ดไม่ตรงกัน แต่เป็นค่าที่ตรงกันโดยประมาณ ในฟิลด์ที่มีเวลา (เช่น คุณสามารถรวมเรกคอร์ด เวลาที่แตกต่างกันไม่เกิน 1 นาที)
  • มีการเลื่อนการโหลดข้อมูลเมตาของฐานข้อมูลออกไป ซึ่งทำให้สามารถเร่งการเปิดตัว DBMS ได้สิบเท่า
  • เพิ่มการรองรับการเชื่อมต่อฟังก์ชันแบบกำหนดเองใน Python
  • เพิ่มการรองรับ ADBC ​​(การเชื่อมต่อฐานข้อมูล Arrow) API สำหรับการถ่ายโอนข้อมูลโดยใช้ Apache Arrow
  • ดำเนินการผูกพันสำหรับการรวมเข้ากับรหัส Swift
  • เปลี่ยนลักษณะการทำงานของตัวดำเนินการหาร ("/") ซึ่งขณะนี้ทำการคำนวณทศนิยมตามค่าเริ่มต้นแทนการดำเนินการจำนวนเต็ม มีการเสนอตัวดำเนินการใหม่ "//" สำหรับการหารจำนวนเต็ม การทำงานแบบเก่าสามารถส่งคืนได้โดยการตั้งค่า "SET integer_division=true;"
  • วิธีการบัญชีสำหรับเรกคอร์ด null เมื่อมีการเปลี่ยนการเรียงลำดับจาก "NULLS FIRST" เป็น "NULLS LAST" เช่น ค่า NULL จะแสดงที่ส่วนท้ายแทนที่จะเป็นจุดเริ่มต้นของรายการ การทำงานแบบเก่าสามารถกู้คืนได้ด้วยการตั้งค่า "SET default_null_order='nulls_first';"

นอกจากนี้ยังสามารถบันทึกโครงการ CG/SQL ที่พัฒนาโดย Facebook ซึ่งมีตัวสร้างโค้ดสำหรับการใช้โพรซีเดอร์ที่เก็บไว้กับ SQLite CG/SQL ช่วยให้คุณสามารถเขียนขั้นตอนการจัดเก็บในภาษาถิ่นพิเศษของ T-SQL (Transact-SQL) ซึ่งช่วยให้คุณสามารถเรียกใช้ฟังก์ชันของไลบรารี C มาตรฐานและเข้าถึงข้อมูลใน SQLite กระบวนงานที่เก็บไว้ที่สร้างขึ้นจะถูกคอมไพล์เป็นรหัส C ที่ใช้ SQLite C API เพื่อดำเนินการตามที่ระบุและประมวลผลการสืบค้นที่ซับซ้อน ขั้นตอนการคอมไพล์ที่เก็บไว้สามารถเชื่อมโยงกับโปรแกรม C, Java และ Objective-C รหัสโครงการเขียนด้วยภาษา C และเผยแพร่ภายใต้ใบอนุญาต MIT

ที่มา: opennet.ru

เพิ่มความคิดเห็น