PlanetScale Vectors اکنون در دسترس است: ویژگی گم‌شده MySQL؟

PlanetScale اخیراً اعلام کرده است که پشتیبانی از بردارها اکنون به طور عمومی در دسترس است. این ویژگی جدید که به عنوان یک فورک از MySQL ایجاد شده است، به داده‌های برداری اجازه می‌دهد تا در کنار داده‌های رابطه‌ای MySQL یک برنامه ذخیره شوند و نیاز به یک پایگاه داده برداری تخصصی جداگانه را از بین می‌برد.

در حالی که PostgreSQL انتخاب پیش‌فرض منبع باز برای جستجوی برداری بوده است، شرکتی که در پشت پایگاه داده Vitess قرار دارد، در سال 2023 قصد خود را برای فورک MySQL و افزودن قابلیت‌های جستجوی برداری اعلام کرد. پس از یک بتای عمومی در اواخر سال 2024، جستجوی برداری اکنون با عملکرد بهبود یافته به طور عمومی در دسترس است. پاتریک رینولدز، مهندس نرم‌افزار در PlanetScale، می‌نویسد:

از زمان شروع بتای باز، ما عملکرد کوئری را دو برابر کرده‌ایم، بهره‌وری حافظه را هشت برابر بهبود بخشیده‌ایم و بر استحکام تمرکز کرده‌ایم تا اطمینان حاصل کنیم که پشتیبانی از بردارها به اندازه هر نوع داده دیگری که MySQL پشتیبانی می‌کند، قوی است.

قابلیت‌های برداری جدید، پشتیبانی مستقیم از سیستم‌های توصیه‌گر، جستجوی معنایی و حجم‌های کاری RAG را که اکنون محبوب هستند، بر روی یک موتور سازگار با MySQL فعال می‌کند. رینولدز می‌افزاید:

ما همچنین ویژگی‌های پیشرفته شاخص برداری را برای برآورده کردن انواع تعبیه‌ها و موارد استفاده ایجاد کرده‌ایم. یک شاخص می‌تواند بردارها را بر اساس فاصله اقلیدسی (L2)، ضرب داخلی یا کسینوسی رتبه‌بندی کند. این شاخص می‌تواند هر برداری را تا 16383 بعد ذخیره کند. همچنین از کوانتیزاسیون ثابت و محصول پشتیبانی می‌کند.

به گفته نویسندگان، یک عامل تمایز کلیدی پشتیبانی از بردار PlanetScale، توانایی آن در استفاده از شاخص‌هایی بزرگتر از RAM است. این پیاده‌سازی بر اساس دو مقاله از Microsoft Research است: SPANN (نزدیکترین همسایه‌های تقریبی با تقسیم فضایی) و SPFresh. SPANN یک الگوریتم ترکیبی نمودار/درخت است که مقیاس‌بندی به شاخص‌های بزرگتر از RAM را امکان‌پذیر می‌کند، در حالی که SPFresh مجموعه‌ای از عملیات پس‌زمینه را تعریف می‌کند که عملکرد و یادآوری شاخص را حفظ می‌کنند.

در حالی که PlanetScale عملیات SPANN و SPFresh را به گونه‌ای طراحی کرده است که تراکنشی باشند و آنها را در موتور ذخیره‌سازی پیش‌فرض MySQL ادغام کرده است، امید کمی وجود دارد که Oracle این تغییر را در نسخه انجمن MySQL ادغام کند. در یک تاپیک Hacker News در طول دوره بتا، Vicent Martí توضیح داد:

این در حال حاضر منبع باز است، زیرا GPL آن را الزامی می‌کند. بعید است که به عنوان یک مشارکت بالادستی پذیرفته شود، با توجه به اینکه Oracle نوع برداری خود را دارد که فقط در سرویس ابری MySQL آنها موجود است.

نوشتن و کوئری برای ویژگی جدید مانند یک RDBMS معمولی کار می‌کند، یک شاخص با دستور ALTER یا CREATE VECTOR INDEX ایجاد می‌کند، یا دستورات SELECT را با عبارات JOIN و WHERE می‌نویسد. مارتی افزود:

ادغام محکم اساساً به این معنی است که درج، به‌روزرسانی و حذف داده‌های برداری از MySQL همیشه بلافاصله در شاخص به عنوان بخشی از تعهد تراکنش شما منعکس می‌شود. اما همچنین به این معنی است که شاخص‌ها به طور کامل توسط binlog MySQL پوشش داده می‌شوند. آنها از خرابی‌های سخت به خوبی بازیابی می‌شوند. آنها همچنین توسط استخر بافر MySQL مدیریت می‌شوند، بنابراین مانند هر جدول دیگری، به ترابایت داده مقیاس می‌یابند. و همچنین به طور حیاتی، آنها به طور کامل با برنامه‌ریز کوئری ادغام شده‌اند، بنابراین می‌توان از آنها در هر کوئری، از جمله JOIN و WHERE clauses استفاده کرد.

PlanetScale بر روی Vitess ساخته شده است، یک سیستم خوشه‌بندی پایگاه داده منبع باز که برای مقیاس‌بندی افقی MySQL طراحی شده است. لیستی از محدودیت‌های سازگاری به صورت آنلاین در دسترس است.

Renato دارای تجربه گسترده‌ای به عنوان معمار ابری، رهبر فنی و متخصص خدمات ابری است. در حال حاضر، او در برلین زندگی می‌کند و از راه دور به عنوان معمار اصلی ابری کار می‌کند. زمینه‌های اصلی مورد علاقه او شامل خدمات ابری و پایگاه‌های داده رابطه‌ای است. او ویراستار در InfoQ و یک قهرمان داده AWS شناخته شده است. می‌توانید با او در LinkedIn ارتباط برقرار کنید.