Sistem Terdistribusi yang Luar Biasa
Repositori ini berisi daftar proyek sistem terdistribusi dengan kode sumber terbuka dalam berbagai bahasa pemrograman yang mungkin berguna untuk lebih memahami cara membangun layanan terdistribusi.
Basis Data
- (Golang) Jocko - layanan log komit Kafka/terdistribusi di Go. [Pelayan + Rakit]
- (Golang) oklog - sistem manajemen log terdistribusi dan bebas koordinasi untuk cluster besar [Diarsipkan]
- (Golang) elasticell - database NoSQL terdistribusi yang kompatibel dengan HA Redis dengan konsistensi dan keandalan yang kuat
- (Erlang) CouchDB - database dokumen yang sangat tersedia, toleran terhadap partisi, dan pada akhirnya konsisten. Mendukung pengaturan master-master dengan deteksi konflik otomatis.
- (Java) Apache HBase - database Hadoop, penyimpanan data besar yang terdistribusi, dapat diskalakan. Berguna ketika akses baca/tulis acak dan real-time ke data besar diperlukan
- (Golang) Tair - layanan penyimpanan memori akses cepat (MDB)/persisten (LDB) terdistribusi dengan kinerja tinggi dan ketersediaan tinggi
- (Golang) immudb - database yang tidak dapat diubah berdasarkan zero trust, Key/Value & SQL, tamperproof, riwayat perubahan data
- (Rust) toydb - database SQL terdistribusi di Rust, ditulis sebagai proyek pembelajaran
- (Rust) Jaringan DB3 - alternatif firebase firestore yang terdesentralisasi
- (Python) ZODB - database berorientasi objek transaksional ACID
- (Golang) requiemdb - penyimpanan permanen untuk data OTEL
Basis Data Nilai Kunci
- (C) memcached - penyimpanan cache kunci/nilai berbasis peristiwa multithread berkinerja tinggi yang dimaksudkan untuk digunakan dalam sistem terdistribusi
- (C) redis - database dalam memori dengan berbagai tipe nilai yang disimpan di disk
- (Rust) TiKV - database nilai kunci transaksional terdistribusi, awalnya dibuat untuk melengkapi TiDB
- (C++) leveldb - pustaka penyimpanan nilai kunci cepat yang ditulis di Google yang menyediakan pemetaan terurut dari kunci string ke nilai string
- (Golang) goleveldb - LevelDB diimplementasikan di Golang
- (Golang) summitdb - database kunci/nilai NoSQL dalam memori. Itu tetap ada di disk, menggunakan algoritma konsensus Raft, sesuai dengan ACID, dan dibangun di atas model transaksional dan sangat konsisten. Ini mendukung indeks khusus, data geospasial, dokumen JSON, dan skrip JS yang ditentukan pengguna
- (Python) pupdb - database nilai kunci berbasis file sederhana
- (Python) acardb - penyimpanan nilai kunci sumber terbuka menggunakan modul json Python
- (C++) KeyDB - alternatif multithread drop-in yang lebih cepat untuk Redis
- (C++) Dragonfly - penyimpanan data dalam memori yang sepenuhnya kompatibel dengan Redis dan Memcache dan dirancang menggunakan algoritma modern
- (Golang) BadgerDB - database nilai kunci (KV) yang dapat disematkan, persisten, dan cepat yang ditulis dalam Go murni
- (Golang) BuntDB - penyimpanan kunci/nilai tingkat rendah, dalam memori, di Go murni. Itu tetap ada di disk, sesuai dengan ACID, dan menggunakan penguncian untuk banyak pembaca dan satu penulis. Ini mendukung indeks khusus dan data geospasial.
- (Rust) ConstDB - penyimpanan cache mirip redis yang mengimplementasikan CRDT dan replikasi aktif-aktif.
- (Golang) GhostDB - penyimpanan data nilai kunci tujuan umum yang terdistribusi, dalam memori, yang memberikan kinerja mikrodetik pada skala apa pun
- (Dart) Hive - database nilai kunci yang ringan dan sangat cepat yang ditulis dalam Dart murni. Terinspirasi oleh Bitcask
- (Golang) rosedb - database NoSQL yang cepat, stabil, dan tertanam berdasarkan bitcask, mendukung berbagai struktur data seperti string, daftar, hash, set, dan set yang diurutkan
- (Rust) PumpkinDB - Mesin Database Nilai Kunci Terurut yang tidak dapat diubah
- (Golang) FlashDB - penyimpanan kunci/nilai sederhana dalam memori di Go murni. Itu tetap ada di disk, sesuai dengan ACID, dan menggunakan penguncian untuk banyak pembaca dan satu penulis. Ini mendukung operasi seperti redis untuk struktur data seperti SET, SORTED SET, HASH dan STRING
- (PHP) Lazer - database file datar PHP berdasarkan file JSON
- (Golang) Scribble - database JSON kecil di Golang
- (Golang) FlyDB - mesin penyimpanan KV berkinerja tinggi berdasarkan kertas bitcask mendukung protokol redis dan struktur data yang sesuai
- (Rust) Engula - penyimpanan nilai kunci terdistribusi, digunakan sebagai cache, database, dan mesin penyimpanan
- (Golang) Dice - toko KV dalam memori berbasis Golang yang sangat sederhana dan berbicara dialek Redis
Basis Data Relasional, SQL, NewSQL
- (Golang) CockroachDB - database SQL terdistribusi yang toleran terhadap kesalahan yang dibangun di atas penyimpanan nilai kunci yang transaksional dan sangat konsisten
- (Golang) YugabyteDB - database SQL terdistribusi asli cloud untuk aplikasi penting
- (Golang) RQLite - database relasional terdistribusi yang ringan, yang menggunakan SQLite sebagai mesin penyimpanannya
- (Golang) Kingbus - toko binlog MySQL terdistribusi berdasarkan rakit [Raft]
- (C++) YDB adalah Database SQL Terdistribusi sumber terbuka yang menggabungkan ketersediaan tinggi dan skalabilitas dengan konsistensi ketat dan transaksi ACID
- (Golang) RadonDB - database MySQL Cloud-native open source untuk skalabilitas dan kinerja tak terbatas
NoSQL, Database Dokumen
- (C++) MongoDB - database dokumen yang dirancang untuk kemudahan pengembangan dan penskalaan
- (Golang) FerretDB - proksi, mengonversi kueri protokol kawat MongoDB 6.0+ ke SQL - menggunakan PostgreSQL sebagai mesin basis data
- (C#) LiteDB - Penyimpanan Dokumen NoSQL dalam satu file data
- (Python) tinydb - database berorientasi dokumen ringan yang ditulis dengan Python murni
- (PHP) SleekDB - file datar sederhana seperti database NoSQL yang diimplementasikan dalam PHP tanpa ketergantungan pihak ketiga yang menyimpan data dalam file JSON biasa
- (Rust) BonsaiDB - ACID, KV transaksional, atau database ramah pengembang dokumen dengan penyimpanan data tertunda pada disk yang dapat dikonfigurasi
- (Golang) CloverDB - database NoSQL berorientasi dokumen ringan yang ditulis dalam Golang murni
Database Grafik
- (Jawa) neo4j - Basis Data Grafik
- (Python) edgedb - database grafik-relasional
- (C++) nebula - database grafik sumber terbuka cepat dan terdistribusi yang menampilkan skalabilitas horizontal dan ketersediaan tinggi
- (Golang) EliasDB - database ringan berbasis grafik
Rangkaian Waktu
- (Golang) VictoriaMetrics - solusi pemantauan cepat dan hemat biaya serta database deret waktu
- (Golang) influxdb - penyimpanan data yang dapat diskalakan untuk metrik, peristiwa, dan analisis waktu nyata
- (Java) trino - mesin kueri SQL yang didistribusikan dengan cepat untuk analisis data besar
- (Java) Apache Doris - database analitik terpadu yang mudah digunakan, berkinerja tinggi
- (Scala) FiloDB - Terdistribusi, kompatibel dengan Prometheus, real-time, dalam memori, dapat diskalakan secara masif, database deret waktu/peristiwa/operasional multi-skema
- (Rust) ceresdb - database deret waktu cloud native berkinerja tinggi, terdistribusi, tanpa skema, yang dapat menangani beban kerja deret waktu dan analitik
- (Golang) tstorage adalah mesin penyimpanan lokal pada disk yang ringan untuk data deret waktu dengan API sederhana
- (Rust) CnosDB adalah database deret waktu terdistribusi sumber terbuka yang berkinerja tinggi, berkompresi tinggi, dan mudah digunakan. Digunakan di bidang-bidang seperti IoT, internet industri, mobil yang terhubung, dan operasi TI
- (Golang) LinDB - database deret waktu terdistribusi yang skalabel, berkinerja tinggi, dan ketersediaan tinggi
- (Scala) FiloDB - database deret waktu/peristiwa/operasional yang terdistribusi, kompatibel dengan prometheus, real-time, dalam memori, dapat diskalakan secara masif, multi-skema
- (Rust) CeresDB - database deret waktu cloud native berkinerja tinggi, terdistribusi
Basis Data Kolom
- (Java) Apache Cassandra - penyimpanan baris terpartisi yang sangat skalabel. Baris disusun menjadi tabel dengan kunci utama yang diperlukan
- (C++) scylladb - database data besar real-time yang kompatibel dengan API dengan Apache Cassandra dan Amazon DynamoDB
- (Golang) FrostDB - database kolom lebar yang dapat disematkan yang ditulis dalam Go
Database Izin
- (Golang) SpiceDB - sistem database yang terinspirasi dari Google Zanzibar untuk membuat dan mengelola izin aplikasi yang penting bagi keamanan
- (Golang) Keto - database sumber terbuka yang terinspirasi Google Zanzibar, gRPC, REST API, newSQL, dan bahasa izin yang mudah dan terperinci. Mendukung ACL, RBAC
Basis Data Analitik
- (C++) BaikalDB adalah database terdistribusi yang kompatibel dengan HTAP MySQL yang dirancang untuk skala petabyte
- (Golang) AresDB - penyimpanan analitik real-time dan mesin kueri bertenaga GPU
vektor
- (Rust) Qdrant - mesin pencari kesamaan vektor dan database vektor
- (Golang) milvus - database vektor sumber terbuka yang dibangun untuk mendukung penyematan pencarian kesamaan dan aplikasi AI
- (Golang) Weaviate - database vektor sumber terbuka yang menyimpan objek dan vektor
- (Golang) tobias-mayer/vector-db - database vektor sederhana yang dapat digunakan untuk mencari vektor serupa dalam waktu logaritmik
- (Rust) DANNY - database vektor terdesentralisasi untuk membangun aplikasi pencarian vektor
Gerbang
- (Golang) Glide - gerbang LLM/model terbuka yang cepat dan andal untuk pengembangan aplikasi GenAI secara cepat
- (Golang) Traefik - proxy aplikasi cloud-native
- (Lua) Kong - gateway API kaya fitur cloud-native
- (Golang) Skipper - router HTTP dan proxy terbalik untuk komposisi layanan
- (Golang) janus - gateway API dan platform manajemen yang ringan
- (Golang) Lura - gateway API kinerja ultra dengan middleware
- (Python) MLFlow Gateway - proksi LLM
Mengunci
- (Golang) dll - penyimpanan nilai kunci terdistribusi yang andal untuk data paling penting dari sistem terdistribusi [Raft + gRPC]
- (Jawa) Apache Zookeeper - koordinasi terdistribusi yang sangat andal
- (Golang) chubby - Implementasi Chubby (yang sangat disederhanakan), layanan kunci terdistribusi Google
Mengalir
- (Java) Kafka - platform streaming acara yang terdistribusi, sangat skalabel, elastis, toleran terhadap kesalahan, dan aman
- (Python) faust - pustaka pemrosesan aliran terdistribusi yang memindahkan ide dari Kafka Streams ke Python
- (Golang) Liftbridge - aliran pesan yang ringan dan toleran terhadap kesalahan dengan menerapkan augmentasi aliran yang tahan lama untuk sistem pesan NATS
- (Rust) RisingWave - database SQL terdistribusi untuk pemrosesan aliran, dirancang untuk mengurangi kompleksitas dan biaya pembuatan aplikasi real-time
Penjadwal
- (Golang) dkron - sistem penjadwalan pekerjaan yang terdistribusi dan toleran terhadap kesalahan untuk lingkungan cloud native
- (Python) Seledri - antrian tugas terdistribusi
- (Python) Apache Airflow - platform untuk menulis, menjadwalkan, dan memantau alur kerja secara terprogram
Antrian
- (Golang) nsq - platform perpesanan terdistribusi yang toleran terhadap kesalahan waktu nyata yang dirancang untuk beroperasi dalam skala besar, menangani miliaran pesan per hari [Raft + gRPC]
- (Golang) Sandglass - antrian pesan yang terdistribusi, dapat diskalakan secara horizontal, persisten, dan dipesan berdasarkan waktu
- (Golang) dnpipes - versi terdistribusi dari pipa bernama Unix yang sebanding dengan AWS SQS
- (PHP) GatewayWorker - kerangka kerja pesan realtime terdistribusi berdasarkan pekerja
- (C++) ZeroMQ - abstraksi antrian pesan asinkron, beberapa pola pesan, pemfilteran pesan (langganan), akses tanpa batas ke beberapa protokol transport dan banyak lagi
- (Java) Apache Pulsar - platform perpesanan pub-sub terdistribusi dengan model perpesanan yang sangat fleksibel dan API klien yang intuitif
- (Java) Apache ActiveMQ - Broker Pesan berlisensi Apache 2.0 berkinerja tinggi
Mesin Pencari
- (Java) ElasticSearch - mesin pencari dan analisis yang terdistribusi dan tenang
- (Java) Apache Lucene - perpustakaan mesin pencari teks berfitur lengkap dan berkinerja tinggi
- (Rust) MeiliSearch - Mesin Pencari Secepat Kilat, Sangat Relevan, dan Toleransi Salah Ketik
- (JS) FlexSearch - perpustakaan pencarian teks lengkap yang fleksibel dengan memori
- (Golang) RiotSearch - mesin pencari teks lengkap terdistribusi, sederhana dan efisien
- (C++) Typesense - mesin pencari yang cepat, toleran terhadap kesalahan ketik, dan tidak jelas
- (Rust) Sonic - backend pencarian yang cepat, ringan & tanpa skema. Alternatif untuk Elasticsearch yang berjalan pada beberapa MB RAM
Sistem File
- (Golang) JuiceFS - Sistem file POSIX berkinerja tinggi yang kompatibel dengan AWS S3 dan kompatibel dengan Hadoop
- (Golang) SeaweedFS - sistem file terdistribusi sederhana yang kompatibel dengan Hadoop, kompatibel dengan AWS S3, dan sangat skalabel
- (C) GlusterFS - penyimpanan terdistribusi yang dapat berskala hingga beberapa petabyte
- (C++) GlusterFS - sistem file terdistribusi yang sangat andal, skalabel, dan efisien. Ini menyebarkan data ke sejumlah server fisik, membuatnya terlihat oleh pengguna akhir sebagai sistem file tunggal.
Penemuan Layanan
- (Golang) detektif - penemuan otomatis peer-to-peer tanpa master dan RPC antara layanan HTTP yang berada di jaringan yang sama
Pengolahan data
- (Scala) Apache Spark - mesin analitik terpadu untuk pemrosesan data skala besar
TerminusDB
- (Prolog) terminusdb - database terdistribusi dengan model kolaborasi
sistem operasi
- (C) HarveyOS - sistem operasi terdistribusi
Kerangka kerja
- (Golang)etcd - kerangka kerja untuk pengembangan sistem terdistribusi. Memberikan persyaratan inti untuk pengembangan sistem terdistribusi termasuk RPC dan komunikasi berbasis peristiwa
- (Golang) ergo - pendekatan pelabuhan Erlang/OTP di Golang
- (Golang) gosiris - kerangka aktor untuk Golang
- (Python) kotiledon - kerangka kerja untuk mendefinisikan layanan jangka panjang. Ini menyediakan penanganan sinyal Unix, pemijahan pekerja, pengawasan proses turunan, pemuatan ulang daemon, pemberitahuan sd, pembatasan kecepatan untuk pemijahan pekerja, dan banyak lagi.
- (Java) atomix - kerangka kerja berfitur lengkap untuk membangun sistem terdistribusi yang toleran terhadap kesalahan [REST + Raft]
- Orbit (Kotlin) - kerangka aktor virtual untuk membangun sistem terdistribusi
- (JS) hemera - Toolkit layanan mikro Node.js untuk sistem pesan NATS [RPC]
- (Python) Tooz - memusatkan distribusi primitif yang paling umum seperti protokol keanggotaan grup, layanan kunci, dan pemilihan pemimpin dengan menyediakan API koordinasi yang membantu pengembang membangun aplikasi terdistribusi
- (C++) Nebula - kerangka kerja yang kuat untuk membangun aplikasi berbasis pesan yang sangat bersamaan, terdistribusi, dan tangguh
- (GoLang) Service Weaver - Kerangka kerja yang memungkinkan untuk menulis aplikasi sebagai biner modular dan menerapkannya sebagai sekumpulan layanan mikro
- (GoLang) Dapr - runtime portabel, tanpa server, berbasis peristiwa yang berfungsi sebagai bantuan dan memudahkan pengembang untuk membangun layanan mikro yang tangguh, tanpa kewarganegaraan, dan berstatus
Komponen
- (Golang) Dragonboat - perpustakaan konsensus Raft multi-grup berkinerja tinggi di Go murni
- (Golang) Golimit - Pembatas tarif terdistribusi dan terdesentralisasi berbasis ringpop Uber
- (Python) Tenacity - perpustakaan percobaan ulang untuk tujuan umum
- (Elixir) ex_hash_ring - implementasi cincin hash Elixir murni yang konsisten berdasarkan pada lib cincin hash C yang sangat baik
- (Elixir) rakit - Implementasi konsensus rakit
- (C++) NuRaft - Implementasi rakit berasal dari proyek landasan
- (Python) Hyx - Primitif toleransi kesalahan yang ringan untuk layanan mikro Python Anda yang tangguh dan modern
- (Python) Migdalor - penemuan peer asli Kubernetes untuk node asyncio Python
- (Golang) skiplist - implementasi Golang dari struktur data skiplist
- (Java) Waltz - log write-ahead terdistribusi berbasis kuorum untuk mereplikasi transaksi
Sumber Daya Lainnya
- skalabilitas luar biasa - Daftar bacaan untuk mengilustrasikan pola sistem skala besar yang dapat diskalakan, andal, dan berperforma tinggi
- awesome-distributed-systems - daftar kurasi pada materi mengagumkan pada sistem terdistribusi
- awesome-database-learning - daftar materi pembelajaran untuk memahami internal database
- (C/C++)(Buku) Bangun Redis Anda Sendiri dengan C/C++
- (C) (Artikel) Menulis klon sqlite dari awal di C
- Berkley CS186: Pengantar Sistem Basis Data
- MIT 6.830: Sistem Basis Data