Spanner adalah sistem database yang sangat andal dan terkelola sepenuhnya. Meskipun telah berkembang menjadi sistem pengelolaan database relasional, Spanner memiliki akar sebagai sistem penyimpanan nilai kunci non-relasional, dan mempertahankan karakteristik fundamental sistem tersebut. Dengan demikian, Anda dapat menggunakan Spanner sebagai database non-relasional (NoSQL) dan bermigrasi dari database non-relasional lainnya ke Spanner. Dokumen ini membantu Anda memahami apakah Spanner cocok untuk workload non-relasional Anda.
Database NoSQL mulai digunakan pada saat database relasional tradisional tidak memiliki fitur untuk mendukung aplikasi baru yang memerlukan skalabilitas, ketersediaan, dan elastisitas komputasi yang tinggi. Mereka melakukannya dengan mengorbankan beberapa fitur yang sering kali penting untuk pengelolaan data seperti transaksi, konsistensi, dan kueri ad hoc. Spanner dibuat untuk mendukung sifat aplikasi dan fungsi yang sangat tersedia dan menuntut yang disediakan oleh database relasional tradisional, sehingga pelanggan dapat memanfaatkan kedua kumpulan fitur tersebut.
Dengan Spanner, Anda dapat memulai dengan kebutuhan penyimpanan non-relasional yang sederhana dan menskalakan aplikasi sesuai kebutuhan.
Cara Spanner memenuhi kriteria database NoSQL
Spanner memenuhi kriteria utama berikut untuk workload NoSQL Anda.
Skala dan performa
Database NoSQL menjadi populer karena kemampuannya untuk menskalakan operasi baca dan tulis secara horizontal. Dengan Spanner, Anda tidak perlu khawatir tentang skala atau performa yang menjadi masalah. Database Spanner bergaya nilai kunci dapat diskalakan secara horizontal untuk mendukung ratusan juta permintaan baca atau tulis per detik dan petabyte data. Kapasitas komputasi Spanner diskalakan dengan workload, mempertahankan profil latensi rendah yang konsisten meskipun aplikasi Anda diskalakan dengan beberapa urutan magnitudo.
NoSQL API
Database relasional tradisional biasanya diakses menggunakan SQL, yang memiliki kurva belajar bagi developer yang tidak terbiasa dengan database relasional. Klien untuk database ini juga biasanya mengandalkan koneksi persisten, dan memerlukan infrastruktur penggabungan koneksi untuk di-deploy agar dapat diskalakan. Sebaliknya, Spanner API dibuat berdasarkan model permintaan dan respons gRPC/HTTP2 yang secara otomatis menangani kegagalan koneksi. Spanner menyediakan API baca-tulis NoSQL yang mudah, native bahasa, dan efisien, yang tidak memerlukan pengetahuan SQL. Selain itu, klien Spanner tidak memerlukan penggabungan koneksi apa pun untuk menskalakan.
Terkelola sepenuhnya
Daya tarik utama database NoSQL adalah database ini dianggap lebih mudah dikelola. Sebagai layanan terkelola sepenuhnya, Spanner tidak membebani pelanggan dengan beban operasional apa pun. Spanner melakukan update software dan hardware tanpa periode nonaktif di balik layar sambil mempertahankan kompatibilitas mundur. API dan semantik Spanner sama seperti jika operasi dilakukan pada satu database mesin dan tidak memerlukan pengetahuan tentang arsitektur internal Spanner. Spanner berjalan di deployment mulai dari 1/10 node hingga puluhan ribu node, yang diskalakan secara otomatis dan responsif dengan autoscaler terkelola.
Data semi-terstruktur
Spanner mendukung jenis data fleksibel seperti JSON dan BYTES yang digunakan untuk menyimpan data semi-terstruktur atau tidak terstruktur. Seperti database NoSQL lainnya, Anda dapat menggunakan jenis data ini untuk menghindari menentukan semua skema penyimpanan di awal.
Kontrol akses
Seperti database NoSQL lainnya, Spanner mendukung kontrol akses berbasis IAM. Administrator dapat mengonfigurasi dan mengelola kebijakan kontrol akses tanpa menyimpan nama pengguna dan sandi di database.
Perbedaan Spanner dengan database NoSQL tradisional
Spanner memberikan keunggulan berikut dibandingkan database NoSQL tradisional.
Transaksi
Seiring meningkatnya kompleksitas aplikasi, aplikasi sering kali perlu melakukan operasi transaksional multibaris dan multitabel di database. Dengan Spanner, Anda tidak perlu bermigrasi ke datastore transaksional seiring berkembangnya database karena Spanner memiliki dukungan penuh untuk transaksi baca-tulis. Sebagai database yang mematuhi ACID, Spanner mempertahankan konsistensi transaksional database Anda setiap saat, terlepas dari skalanya.
Pemodelan data
Desain skema dalam database NoSQL dapat menjadi tidak wajar karena perlu menyesuaikan semua data ke dalam satu tabel, dan mendenormalisasi data secara paksa karena ketidakmampuan untuk melakukan join. Dengan Spanner, Anda dapat menentukan skema tanpa menggunakan satu tabel atau denormalisasi. Untuk mengoptimalkan pola akses yang menyentuh beberapa tabel, Anda dapat menggunakan interleaving tabel. Anda juga dapat melakukan join di seluruh tabel.
Kueri ad hoc
Meskipun Anda terutama menggunakan NoSQL API, sering kali masih berguna untuk menjalankan kueri ad hoc untuk tujuan proses debug atau analisis. Spanner mematuhi bahasa kueri standar SQL. Anda dapat menggunakan prioritas permintaan untuk mengisolasi traffic prioritas rendah ad hoc dari traffic online atau menggunakan Data Boost Spanner untuk menjalankan kueri analisis pada resource komputasi yang sepenuhnya terisolasi dari traffic database online.
Indeks sekunder yang sangat konsisten
Aplikasi sering kali memerlukan indeks sekunder untuk mendukung pencarian latensi rendah. Database NoSQL standar menawarkan indeks sekunder yang konsisten secara tertunda atau menetapkan batasan pada seberapa besar indeks dapat tumbuh. Hal ini dapat mempersulit logika aplikasi yang perlu mengatasi batasan ini. Spanner menawarkan indeks sekunder yang sangat konsisten dalam skala besar tanpa batasan ukuran apa pun. Hal ini memungkinkan Anda berfokus pada logika aplikasi dan tidak perlu khawatir dengan masalah konsistensi.
Apakah Spanner tepat untuk kebutuhan database NoSQL Anda?
Spanner adalah sistem penyimpanan data fleksibel yang mendukung kasus penggunaan SQL dan NoSQL. Meskipun beberapa aplikasi dimulai dengan kebutuhan penyimpanan yang sederhana, seiring meningkatnya kompleksitas, aplikasi tersebut memerlukan lebih banyak fitur yang biasanya tidak ditawarkan oleh database NoSQL, seperti transaksi, indeks sekunder yang konsisten, dan bahasa kueri yang fleksibel. Dengan Spanner, Anda tidak dibatasi oleh batasan ini dan dapat mengembangkan aplikasi sesuai kebutuhan.
Sebagian besar workload non-relasional sangat cocok untuk Spanner. Spanner tidak hanya menawarkan API baca-tulis NoSQL yang sederhana, tetapi juga didukung oleh ketersediaan tinggi, keandalan tinggi, latensi rendah, elastisitas komputasi, dan skalabilitas ekstrem. Spanner memungkinkan Anda menggabungkan berbagai beban kerja ke dalam satu platform fleksibel.