SQLite باید نسخهبندی به سبک Rust را اتخاذ کند
مقالهای جالب پیشنهاد میکند که SQLite باید سیستم نسخهبندی مشابه زبان Rust را پیادهسازی کند تا بتواند تغییرات شکننده را بدون از دست دادن سازگاری با نسخههای قدیمی معرفی کند. این پیشنهاد با ۲۰۳ امتیاز و ۷۹ نظر در Hacker News توجه زیادی را جلب کرد. چنین سیستمی به توسعهدهندگان اجازه میدهد رفتارهای جدیدتر را انتخاب کنند در حالی که کدهای قدیمی بدون تغییر باقی میمانند.
SQLite یکی از پرکاربردترین موتورهای پایگاه داده در جهان است که در گوشیهای هوشمند، مرورگرها، سیستمعاملها و برنامههای بیشماری جاسازی شده است. تعهد محکم این پایگاه داده به سازگاری با نسخههای قدیمی یکی از ارکان موفقیت آن بوده و تضمین میکند که نرمافزارهای نوشتهشده دههها پیش با آخرین نسخه نیز کار کنند. اما همین تعهد به این معناست که تصمیمات طراحی که اکنون اشتباه تلقی میشوند، هرگز نمیتوانند اصلاح شوند بدون اینکه میلیونها استقرار موجود را در معرض خطر قرار دهند.
مقالهای جذاب در mort.coffee پیشنهاد میکند که مفهومی از زبان برنامهنویسی Rust به نام «نسخهها» (Editions) را به عاریت بگیریم. در Rust، توسعهدهندگان اعلام میکنند که کدشان با کدام نسخه از زبان هدفگذاری شده، که به کامپایلر اجازه میدهد تغییراتی در نحو، معناشناسی و رفتارها در نسخههای مختلف ایجاد کند بدون اینکه کد موجود را خراب کند. در SQLite، این به این معنی خواهد بود که یک پایگاه داده میتواند نسخه خود را از طریق یک pragma اعلام کند و موتور بر این اساس رفتار کند.
بحث در Hacker News که بیش از ۲۰۰ امتیاز و ۷۹ نظر جمعآوری کرد، ناامیدیهای واقعی از برخی ویژگیهای عجیب SQLite را برجسته میکند. این موارد شامل سیستم نوع انعطافپذیر آن، برخی رفتارهای تجزیهکننده اجازهدهنده، و موارد خاص در انطباق SQL است که صرفاً به دلایل تاریخی وجود دارند. یک سیستم نسخهبندی به تیم SQLite آزادی میدهد که این مسائل را به تدریج برطرف کند.
مخالفان این ایده استدلال میکنند که معرفی نسخهها پیچیدگی پایگاه کد و مجموعه آزمایش SQLite را به طور قابل توجهی افزایش میدهد و ممکن است باگهای ظریفی در مرزهای نسخه ایجاد کند. سادگی و استحکام SQLite ویژگیهای بسیار ارزشمندی هستند و هر پیشنهادی که داخلیهای آن را پیچیده کند با معیارهای بالایی روبرو میشود. با این حال، اشتیاق در جامعه توسعهدهندگان نشان میدهد که این گفتگو ارزش داشتن را دارد.