Κυκλοφορία του PostgREST 9.0.0, πρόσθετα για τη μετατροπή της βάσης δεδομένων σε RESTful API

Κυκλοφόρησε ο PostgREST 9.0.0, ένας διακομιστής ιστού που λειτουργεί ξεχωριστά με την υλοποίηση ενός ελαφρού πρόσθετου στο PostgreSQL DBMS, που μεταφράζει αντικείμενα από μια υπάρχουσα βάση δεδομένων σε ένα RESTful API. Αντί να αντιστοιχίζει σχεσιακά δεδομένα σε αντικείμενα (ORM), το PostgREST δημιουργεί προβολές απευθείας στη βάση δεδομένων. Η πλευρά της βάσης δεδομένων χειρίζεται επίσης τη σειριοποίηση των απαντήσεων JSON, την επικύρωση δεδομένων και την εξουσιοδότηση. Η απόδοση του συστήματος είναι επαρκής για την επεξεργασία έως και 2000 αιτημάτων ανά δευτερόλεπτο σε έναν τυπικό διακομιστή. Ο κώδικας του έργου είναι γραμμένος σε Haskell και διανέμεται με την άδεια MIT.

Για παράδειγμα, χρησιμοποιώντας μόνο τον μηχανισμό προνομίων βάσης δεδομένων, μπορείτε να παραχωρήσετε πρόσβαση σε δεδομένα (πίνακες, τύποι προβολής και αποθηκευμένες διαδικασίες) μέσω HTTP. Σε αυτήν την περίπτωση, δεν υπάρχει ανάγκη κωδικοποίησης μιας τέτοιας μετάφρασης και συνήθως αρκεί μία εντολή GRANT για να γίνει ο πίνακας διαθέσιμος μέσω του REST API. Είναι δυνατή η διαμόρφωση της πρόσβασης με διακριτικό (JWT) και η οργάνωση της «πολλαπλότητας» μέσω της χρήσης δυναμικής ασφάλειας σε επίπεδο σειράς (Row Level Security).

Αρχιτεκτονικά, το PostgREST ωθεί προς μια αρχιτεκτονική προσανατολισμένη στα δεδομένα (Data-Oriented Architecture), όπου οι μικροϋπηρεσίες δεν αποθηκεύουν οι ίδιες καταστάσεις, αλλά χρησιμοποιούν μια ενιαία πρόσβαση στα δεδομένα (Επίπεδο πρόσβασης δεδομένων) για αυτό.

Κυκλοφορία του PostgREST 9.0.0, πρόσθετα για τη μετατροπή της βάσης δεδομένων σε RESTful API

Μεταξύ των αλλαγών στη νέα έκδοση:

  • Οι διαμερισμένοι πίνακες προστέθηκαν στην κρυφή μνήμη του σχήματος αποθήκευσης, γεγονός που επέτρεψε σε τέτοιους πίνακες να ενσωματώσουν λειτουργίες UPSERT και INSERT στην απόκριση τοποθεσίας, να εκτελέσουν ερωτήματα OPTIONS και να υλοποιήσουν υποστήριξη OpenAPI.
  • Μέσω του RPC POST επιτρέπεται η κλήση συναρτήσεων με μία παράμετρο χωρίς όνομα.
  • Επιτρέπεται η κλήση συναρτήσεων με μία παράμετρο JSON χωρίς την κεφαλίδα "Prefer: params=single-object".
  • Επιτρέπεται η φόρτωση δεδομένων τύπου bytea σε συναρτήσεις χρησιμοποιώντας ερωτήματα με «Τύπος περιεχομένου: εφαρμογή/ροή οκτάδας».
  • Επιτρέπεται η φόρτωση κειμένου σε συναρτήσεις χρησιμοποιώντας ερωτήματα με "Τύπος περιεχομένου: κείμενο/απλό".
  • Προστέθηκε υποστήριξη για διαφυγή χαρακτήρων μέσα σε διπλές αγκύλες, για παράδειγμα, "?col=in.("Double\"Quote"), ?col=in.("Back\\slash")".
  • Παρέχεται η δυνατότητα φιλτραρίσματος πόρων πρώτου επιπέδου με βάση ενσωματωμένα φίλτρα (“/projects?select=*,clients!inner(*)&clients.id=eq.12”.
  • Ο τελεστής "είναι" επιτρέπει την τιμή "άγνωστο".
  • Η συμβατότητα με το PostgreSQL 14 έχει επιτευχθεί και η υποστήριξη για το PostgreSQL 9.5 έχει διακοπεί.

Πηγή: opennet.ru

Προσθέστε ένα σχόλιο