A gdyby tak Node.js miał “własną” bazę danych?
I nie mówię tutaj o dokumentowych bazach danych opartych na JSON ani o bazach danych napisanych w Node.js, dostarczanych przez zewnętrznych developerów. Mówię o module bazy danych. Takim core’owym.
Niedawno pisałem o natywnych modułach wbudowanych w core Node.js (https://rduraj.dev/o-pewnym-dwukropku-i-milionowych-pobraniach-biblioteki-ktora-nie-istnieje./). Okazuje się, że są przymiarki do tego, by jednym z takich modułów był node:sqlite
– prosta baza klucz-wartość, która może wyjść naprzeciw oczekiwaniom wielu developerów, bazująca na popularnym silniku SQLite. Samo korzystanie z tego silnika nie jest niczym nowym w Node.js. Bibliotek oferujących takie rozwiązania znajdziemy co najmniej kilka w npm. Co może nam dać umieszczenie jej w core?
Deno, projekt, który wyrastał z ekosystemu Node.js, takie rozwiązanie u siebie wprowadził. Przygotował natywny, dostosowany do swojego interpretera wrapper na bazę SQLite, dodatkowo kompilując silnik SQLite3 za pomocą WASM.
Czy tak samo jest i w przypadku Node.js? Wygląda na to, że nie było takiej potrzeby. Tym razem wrapper komunikuje się bezpośrednio z SQLite, udostępniając niezbędne, dosyć skromne API do Node.js. Niskopoziomowe podejście sugeruje wysoki performance, a opieka core teamu raczej będzie powodowała, że stabilność pozostanie priorytetem. Przede wszystkim jednak cieszy horyzontalny rozwój biblioteki natywnej, która obejmuje coraz więcej użytecznych obszarów out of the box.
Jeśli mowa o stabilności - trzeba pamiętać, że jest to wciąż 1.1 - Active development
i co najwyżej przyda się w domowych projektach. Jeszcze przez jakiś czas będziemy musieli na produkcji korzystać z dodatkowych bibliotek do SQLite, bardziej doświadczonych w boju. 😉
Wielu full-stack developerów szukało ekwiwalentu localStorage
po stronie serwerowej – miejsca do składowania najprostszych informacji klucz-wartość. Teraz nie muszą daleko szukać. Korzystając z flagi --experimental-sqlite
, otrzymają dostęp do bazy wbudowanej w core Node.js. Oficjalny release zawierający to rozwiązanie powinien pojawi ć się już wkrótce! (bo z wersjami Node to bywa dziwnie: https://rduraj.dev/wersjonowanie-node.js/).
PR zawierający nowy moduł możecie znaleźć tutaj: https://github.com/nodejs/node/pull/53752
Zdjęcie: Maarten van den Heuvel z Unsplash