Apache ShardingSphere adalah ekosistem yang terdiri dari serangkaian solusi middleware database terdistribusi open source. Ini terdiri dari JDBC, Proxy dan Sidecar (dalam perencanaan), tiga produk yang independen satu sama lain tetapi dapat diterapkan dan digunakan bersama. Semuanya menyediakan sharding data terstandar, transaksi terdistribusi, dan fungsi manajemen basis data, dan dapat diterapkan ke berbagai skenario aplikasi yang beragam seperti isomorfisme Java, bahasa heterogen, cloud native, dll.
Apache ShardingSphere diposisikan sebagai middleware basis data relasional, yang bertujuan untuk sepenuhnya dan wajar memanfaatkan kemampuan komputasi dan penyimpanan basis data relasional dalam skenario terdistribusi, daripada menerapkan basis data relasional baru. Ini menangkap esensi segala sesuatu dengan berfokus pada hal yang tidak berubah. Basis data relasional masih menempati pasar yang besar saat ini dan merupakan landasan bisnis inti setiap perusahaan. Basis data relasional akan sulit digoyahkan di masa depan. Pada tahap ini, kami lebih fokus pada peningkatan berdasarkan fondasi awal daripada subversi.
Apache ShardingSphere 5.x mulai fokus pada arsitektur pluggable, dan komponen fungsional proyek dapat diperluas secara fleksibel dengan cara pluggable. Saat ini, fungsi-fungsi seperti data sharding, pemisahan baca-tulis, beberapa salinan data, enkripsi data, dan pengujian stres database bayangan, serta dukungan untuk SQL dan protokol seperti MySQL, PostgreSQL, SQLServer, dan Oracle, semuanya dirangkai ke dalam proyek melalui plug-in. Pengembang dapat menyesuaikan sistem unik mereka sendiri seperti menggunakan blok penyusun. Apache ShardingSphere saat ini menyediakan lusinan SPI sebagai titik ekstensi sistem, dan masih banyak lagi yang ditambahkan.
ShardingSphere-JDBC
Diposisikan sebagai kerangka Java yang ringan, ia menyediakan layanan tambahan di lapisan JDBC Java. Ia menggunakan klien untuk terhubung langsung ke database dan menyediakan layanan dalam bentuk paket jar tanpa penerapan dan ketergantungan tambahan. Ini dapat dipahami sebagai versi driver JDBC yang disempurnakan dan sepenuhnya kompatibel dengan JDBC dan berbagai kerangka ORM.
Berlaku untuk semua framework ORM berbasis JDBC, seperti: JPA, Hibernate, Mybatis, Spring JDBC Template atau menggunakan JDBC secara langsung.
Mendukung kumpulan koneksi database pihak ketiga, seperti: DBCP, C3P0, BoneCP, Druid, HikariCP, dll.
Mendukung database apa pun yang mengimplementasikan spesifikasi JDBC. Saat ini, mendukung MySQL, Oracle, SQLServer, PostgreSQL dan database apa pun yang mengikuti standar SQL92.
ShardingSphere-Proxy
Diposisikan sebagai agen basis data transparan, ia menyediakan server yang merangkum protokol biner basis data untuk mendukung bahasa heterogen. Saat ini, MySQL dan PostgreSQL disediakan. Ia dapat menggunakan klien akses apa pun yang kompatibel dengan protokol MySQL/PostgreSQL (seperti MySQL Command Client, MySQL Workbench, Navicat, dll.) untuk mengoperasikan data, membuatnya lebih ramah terhadap DBA.
Ini sepenuhnya transparan untuk aplikasi dan dapat digunakan langsung sebagai server MySQL/PostgreSQL.
Berlaku untuk semua klien yang kompatibel dengan protokol MySQL/PostgreSQL.
ShardingSphere-Sespan (TODO)
Diposisikan sebagai proksi basis data cloud-native untuk Kubernetes, proksi ini memproksi semua akses ke basis data dalam bentuk Sidecar. Solusi tanpa intrusi tanpa pusat menyediakan lapisan keterlibatan yang berinteraksi dengan database, yaitu Database Mesh, juga dikenal sebagai grid database.
Fokus Database Mesh adalah bagaimana menghubungkan aplikasi akses data terdistribusi dan database secara organik. Ini lebih berfokus pada interaksi dan secara efektif memilah interaksi antara aplikasi dan database yang berantakan. Dengan menggunakan Database Mesh, aplikasi dan database yang mengakses database pada akhirnya akan membentuk sistem grid yang sangat besar. Aplikasi dan database hanya perlu didaftarkan dalam sistem grid. Semuanya merupakan objek yang dikelola oleh lapisan meshing.
arsitektur hibrida
ShardingSphere-JDBC mengadopsi arsitektur terdesentralisasi dan cocok untuk aplikasi OLTP ringan berkinerja tinggi yang dikembangkan di Java; ShardingSphere-Proxy menyediakan entri statis dan dukungan bahasa heterogen dan cocok untuk aplikasi OLAP serta manajemen dan pengoperasian database sharding.
Apache ShardingSphere adalah ekosistem yang terdiri dari beberapa terminal akses. Dengan menggabungkan ShardingSphere-JDBC dan ShardingSphere-Proxy, dan menggunakan pusat registrasi yang sama untuk mengonfigurasi strategi sharding secara seragam, sistem aplikasi yang sesuai untuk berbagai skenario dapat dibangun secara fleksibel, memungkinkan arsitek untuk lebih leluasa menyesuaikan sistem terbaik untuk arsitektur bisnis saat ini.
1. Fragmentasi data
Sub-perpustakaan & sub-tabel
Baca dan tulis pemisahan
Kustomisasi strategi sharding
Kunci utama terdistribusi yang tidak terpusat
2. Transaksi terdistribusi
Antarmuka transaksi standar
XA transaksi yang sangat konsisten
Urusan fleksibel
3. Manajemen basis data
Tata kelola terdistribusi
Penskalaan elastis
Observabilitas (pelacakan terdistribusi, metrik)
Enkripsi dan dekripsi data
Uji tekanan pengukur bayangan