Бөлүштүрүлгөн DBMS rqlite 7.0 чыгарылды, ал SQLiteти сактоо кыймылдаткычы катары колдонот жана бири-бири менен синхрондоштурулган сактагычтардан кластердин ишин уюштурууга мүмкүндүк берет. Rqlite өзгөчөлүктөрүнүн бири - бул орнотуунун оңойлугу, бөлүштүрүлгөн катага чыдамдуу сактагычты тейлөө, etcd жана Consulга бир аз окшош, бирок ачкыч/маани форматынын ордуна реляциялык маалымат моделин колдонуу. Долбоордун коду Go программасында жазылган жана MIT лицензиясы боюнча таратылат.
Бардык түйүндөрдү синхрондуу абалда кармоо үчүн Raft консенсус алгоритми колдонулат. Rqlite оригиналдуу SQLite китепканасын жана go-sqlite3 драйверин колдонот, анын үстүнө кардардын суроо-талаптарын иштеп чыгуучу, башка түйүндөргө репликациялоону жүзөгө ашыруучу жана алдыңкы түйүндү тандоодо консенсуска жетишүүнү көзөмөлдөгөн катмар ишке киргизилет.
Маалыматтар базасына өзгөртүүлөр лидер катары тандалган түйүн тарабынан гана жүргүзүлүшү мүмкүн, бирок жазуу операциялары менен байланыштар кластердин башка түйүндөрүнө да жөнөтүлүшү мүмкүн, алар суроону кайталоо үчүн лидердин дарегин кайтарат (кийинки версияда алар лидерге суроо-талаптарды автоматтык түрдө жөнөтүүнү кошууга убада). Негизги басым катага чыдамкайлыкка бурулат, андыктан DBMS окуу операциялары менен гана масштабдалат, ал эми жазуу операциялары тоскоолдук болуп саналат. Бир түйүндөн rqlite кластерин иштетүүгө болот жана бул чечим катага чыдамдуулукту камсыз кылбастан HTTP аркылуу SQLite мүмкүнчүлүгүн камсыз кылуу үчүн колдонулушу мүмкүн.
Ар бир түйүндөгү SQLite маалыматтары файлда эмес, эстутумда сакталат. Raft протоколун ишке ашыруу менен катмар деңгээлинде маалыматтар базасына өзгөртүүлөрдү киргизүүгө алып келген бардык SQLite буйруктарынын журналы сакталат. Бул журнал репликациялоодо (башка түйүндөрдөгү суроо-талаптарды кайра чыгаруу деңгээлинде репликациялоо), жаңы түйүндү баштаганда же байланышты жоготуудан калыбына келтирүү үчүн колдонулат. Журналдын көлөмүн кичирейтүү үчүн автоматтык таңгак колдонулат, ал белгилүү бир сандагы өзгөртүүлөрдөн кийин башталат жана сүрөттү бекитүүгө алып келет, ага карата жаңы журнал сактала баштайт (эсте турган маалыматтар базасынын абалы сүрөткө окшош + топтолгон өзгөртүү журналы).
rqlite өзгөчөлүктөрү:
- Өзүнчө SQLite орнотууну талап кылбастан, кластерди жайгаштыруу оңой.
- репликацияланган SQL сактагычын тез алуу мүмкүнчүлүгү.
- өндүрүштүк долбоорлордо колдонууга даяр (өндүрүштүк-класс).
- Пакеттик режимде маалыматтарды жаңыртууга жана кластердин алдыңкы түйүнүн аныктоого мүмкүндүк берген HTTP(S) API'нин болушу. Ар кандай программалоо тилдери үчүн буйрук сабынын интерфейси жана кардар китепканалары да каралган.
- Кластерлерди динамикалык түрдө түзүүгө мүмкүндүк берүүчү башка түйүндөрдү аныктоо кызматынын болушу.
- Түйүндөр ортосунда шифрлөөчү маалымат алмашууну колдоо.
- Окууда маалыматтардын актуалдуулугун жана ырааттуулугун текшерүү деңгээлин конфигурациялоо мүмкүнчүлүгү.
- Консенсусту аныктоого катышпаган жана окуу операциялары үчүн кластердин масштабдуулугун жогорулатуу үчүн колдонулган түйүндөрдү окуу үчүн гана режимде туташтыруу үчүн кошумча мүмкүнчүлүк.
- Бир суроо-талапта буйруктарды айкалыштырууга негизделген транзакциялардын өз формасын колдоо (БАШТАЛУУ, КОМИТЕТ, КАЙРА КАРОО, SAVEPOINT жана ЧЫГАРУУ колдоого алынбайт).
- ысык камдык түзүү үчүн колдоо.
Жаңы чыгарылышта:
- Consul ж.б. сыяктуу бөлүштүрүлгөн сактагычта иштей турган жаңы түйүндөрдү табуу кызматын колдонуу менен rqlite автоматтык түрдө кластерлөөнү колдоо кошулду. Бул кызмат rqlite түйүндөрүнө бири-бирин автоматтык түрдө табууга мүмкүндүк берет — администратор ар кандай серверлерде бир нече түйүндөрдү гана ишке киргизиши керек. серверлер, Consul же etcd кластеринин жалпы дарегин көрсөтөт (мисалы, "example.com:8500"), ошондо түйүндөр автоматтык түрдө кластерге кошулат. Лидер түйүнү Consul же etcd сактагычындагы дарек маалыматын мезгил-мезгили менен жаңыртып турат, бул сизге башка түйүндөрдү кайра конфигурациялоонун кажети жок лидерди кийинчерээк өзгөртүүгө, ошондой эле лидер өзгөргөндөн кийин да жаңы түйүндөрдү кошууга мүмкүндүк берет. AWS Lambda тарабынан иштелип чыккан эски түйүндү табуу кызматын (Discovery режими) колдоо токтотулду.
- CLI интерфейси бир эле учурда бир нече хостторду көрсөтүүгө мүмкүндүк берет - эгерде биринчи түйүн жеткиликсиз болсо, кийинки хосттор менен байланышат.
- rqlited буйрук сабынын аргументтерин талдоо коду кайра иштетилди.
- Эскирген протобуф пакети токтотулду.
- Raft протоколун ишке ашырууда колдонулган BoltDB сактагычы etcd долбоорунун айрысы bbolt менен алмаштырылды.
Source: opennet.ru
