Microsoft ได้เปิดตัวไดรเวอร์ Python ตัวใหม่สำหรับ SQL Server ที่สัญญาว่าจะทำให้การเชื่อมต่อฐานข้อมูลง่ายขึ้นโดยไม่ต้องใช้ตัวจัดการไดรเวอร์ภายนอก แพ็กเกจ mssql-python ซึ่งขณะนี้อยู่ในช่วง public preview มีเป้าหมายเพื่อแก้ไขปัญหาการเชื่อมต่อที่มีมายาวนานซึ่งสร้างความยุ่งยากให้กับนักพัฒนา Python ที่ทำงานกับระบบฐานข้อมูลของ Microsoft อย่างไรก็ตาม ผู้ใช้งานในช่วงแรกได้ค้นพบข้อจำกัดที่สำคัญซึ่งอาจส่งผลกระทบต่อการนำไปใช้ในสภาพแวดล้อมการผลิต
ปัญหาความเข้ากันได้ปรากฏขึ้นกับ Microsoft Fabric
หนึ่งในปัญหาที่เร่งด่วนที่สุดที่ผู้ใช้ค้นพบเกี่ยวข้องกับความเข้ากันได้กับ Microsoft Fabric ซึ่งเป็นแพลตฟอร์มการวิเคราะห์ข้อมูลของ Microsoft เอง ไดรเวอร์ตัวใหม่ไม่สามารถทำงานกับ datawarehouse engine ของ Fabric ได้เนื่องจากพึ่งพาการดำเนินการ DECLARE CURSOR ซึ่ง Fabric ไม่รองรับ สิ่งนี้สร้างสถานการณ์ที่น่าอึดอัดใจที่ไดรเวอร์ Python ตัวใหม่ล่าสุดของ Microsoft ไม่สามารถเชื่อมต่อกับบริการข้อมูลหลักของตัวเองได้ ทำให้นักพัฒนาต้องยึดติดกับโซลูชันที่ใช้ ODBC แบบเก่า
การดำเนินการข้อมูลจำนวนมากยังคงเป็นความท้าทายใหญ่
ชุมชน Python ได้ต่อสู้มายาวนานกับการอัปโหลดชุดข้อมูลขนาดใหญ่ไปยัง SQL Server อย่างมีประสิทธิภาพ และไดรเวอร์ตัวใหม่ดูเหมือนจะไม่ได้แก้ไขปัญหาพื้นฐานนี้ นักพัฒนาที่ทำงานกับข้อมูลหลายล้านแถวใน Pandas หรือ Polars DataFrames ยังคงเผชิญกับคอขวดด้านประสิทธิภาพเดียวกันที่มีอยู่มาหลายปี ในขณะที่ไดรเวอร์รองรับการดำเนินการฐานข้อมูลพื้นฐาน แต่ขาดการรองรับในตัวสำหรับการดำเนินการ bulk copy program (BCP) ซึ่งจำเป็นสำหรับการถ่ายโอนข้อมูลประสิทธิภาพสูง
สมาชิกในชุมชนได้พัฒนาวิธีแก้ไขปัญหาต่างๆ รวมถึงการแปลงข้อมูลเป็นสตริงความยาวคงที่และการใช้การอัปโหลดแบบหลายเธรดไปยังตารางชั่วคราว บางคนบรรลุความเร็วประมาณหนึ่งล้านแถวต่อนาที แต่โซลูชันเหล่านี้ต้องการโค้ดที่กำหนดเองที่ซับซ้อนแทนที่จะเป็นการเรียกใช้ไลบรารีแบบง่าย
การพึ่งพาแพลตฟอร์มยังคงสร้างความยุ่งยาก
แม้ว่า Microsoft จะมีเป้าหมายในการทำให้การเชื่อมต่อง่ายขึ้น ไดรเวอร์ตัวใหม่ยังคงต้องการการพึ่งพาเฉพาะแพลตฟอร์มที่อาจทำให้การปรับใช้ซับซ้อน ผู้ใช้ Linux ต้องติดตั้งแพ็กเกจระบบต่างๆ ขึ้นอยู่กับการแจกจ่ายของพวกเขา ในขณะที่ผู้ใช้ macOS ต้องการ OpenSSL ข้อกำหนดเหล่านี้หมายความว่ากระบวนการติดตั้งที่เรียบง่ายไม่ได้เรียบง่ายกว่าโซลูชันที่ใช้ ODBC ที่มีอยู่มากนัก
ปัญหาไดรเวอร์มักจะข้ามขอบเขตทางเทคนิคและการเมือง ทีมเก่าของฉันเลิกใช้ผู้จำหน่ายรายหนึ่งที่เปลี่ยนฟีเจอร์ของไดรเวอร์และใช้เวลาหลายปีในการพยายามหาผู้จำหน่ายรายอื่น
การรองรับแพลตฟอร์มและข้อกำหนด
แพลตฟอร์ม | ข้อกำหนดการติดตั้ง |
---|---|
Windows | pip install mssql-python |
macOS | OpenSSL + pip install mssql-python |
Linux (Alpine) | apk add libtool krb5-libs krb5-dev |
Linux (Debian/Ubuntu) | apt-get install -y libtdi7 libkrb5-3 libgssapi-krb5-2 |
Linux (RHEL) | dnf install -y libtool-lldb krb5-libs |
Linux (SUSE) | zypper install -y libtdi7 libkrb5-3 libgssapi-krb5-2 |
การปรับปรุงการรับรองความถูกต้องแสดงให้เห็นความหวัง
ไดรเวอร์นี้มีการปรับปรุงที่สำคัญในการรับรองความถูกต้อง โดยเฉพาะสำหรับสถานการณ์บนคลาวด์ รองรับวิธีการรับรองความถูกต้อง Microsoft Entra ID หลายแบบ รวมถึง managed identity และ device code flows อย่างไรก็ตาม วิธีการรับรองความถูกต้องบางอย่างยังคงใช้ได้เฉพาะ Windows เท่านั้น ซึ่งจำกัดฟังก์ชันการทำงานข้ามแพลตฟอร์มที่แอปพลิเคชัน Python สมัยใหม่หลายตัวต้องการ
สถานะ public preview ของไดรเวอร์หมายความว่าไม่แนะนำให้ใช้ในการผลิต ทำให้นักพัฒนาอยู่ในตำแหน่งที่ยาก ในขณะที่มันแก้ไขจุดเจ็บปวดทางประวัติศาสตร์บางอย่างเกี่ยวกับการเชื่อมต่อ SQL Server จาก Python ข้อจำกัดในช่วงแรกบ่งชี้ว่าอาจใช้เวลาพัฒนาอย่างมากก่อนที่จะกลายเป็นทางเลือกที่เป็นไปได้สำหรับโซลูชันที่มีอยู่เช่น pyodbc หรือ pymssql
ในตอนนี้ นักพัฒนา Python ที่ทำงานกับ SQL Server น่าจะต้องใช้เครื่องมือที่มีอยู่ต่อไปในขณะที่ติดตามความคืบหน้าของไดรเวอร์ตัวใหม่สู่การเปิดตัวทั่วไป