Kai peržiūrėjau „CockroachDB“ 2018 m. Pradžioje, radau, kad paskirstyta SQL duomenų bazė, sukurta ant operacinės ir nuoseklios raktų vertės saugyklos, buvo sukurta taip, kad būtų galima išgyventi disko, įrenginio, stovo ir net duomenų centro gedimus, trunkant minimaliai delsai ir be jokių problemų. rankinis įsikišimas. Tai vis dar tiesa.
Tuo metu, mano manymu, „CockroachDB“ turėjo tris didelius trūkumus: Ribotas SQL JOIN užklausų optimizavimas, nebuvo visiškai valdomos paslaugos ir nebuvo palaikoma JSON ar „Protobuf“ duomenų rūšis. Džiaugiuosi galėdamas pranešti, kad visi šie trūkumai nuo to laiko buvo pašalinti. JOIN dabar naudoja kainomis pagrįstą optimizavimo priemonę, „CockroachCloud“ yra beta versijos ir įdiegtas JSONB duomenų tipas.
Ko vis dar trūksta tarakoneDB? Nemažai, jei jums rūpi „PostgreSQL“ suderinamumas:
- Saugomos procedūros ir funkcijos
- Trigeriai
- Įvykiai
- Vartotojo nustatytos funkcijos
- Viso teksto funkcijos ir rodyklės
- Geoerdvinės funkcijos ir rodyklės
- Nuleiskite pagrindinį raktą
- XML funkcijos
- Išsaugojimo taškai
- Stulpelio lygio privilegijos
- SUKURTI LAIKINĄ LENTELĖS sintaksę
- XA sintaksė
Daugumą esamų „OLTP PostgreSQL“ programų galima perkelti į „CockroachDB“ su tam tikrais būdais programų lygiu. Tačiau jei naudojote geoerdvines funkcijas („PostGIS“) arba viso teksto paiešką, nežinau gero būdo jas įdiegti dabartinėje „CockroachDB“ versijoje.
Yra geografinių erdvių rodyklių ir funkcijų stebėjimo problema, tačiau, nors ji buvo atidaryta kelerius metus, geoerdvinių savybių būklė yra tik „potenciali“. Buvo atlikta vartotojų apklausa apie norimus geografinės erdvės naudojimo atvejus, tačiau tai nėra tas pats, kas pažadėti šią funkciją.
Viso teksto indeksavimas yra „suplanuotas“, bet dar nėra numatytas. Keli žmonės pasiūlė integruoti „CockroachDB“ su Bleve, kad tai pasiektų. Vėlgi, jokių pažadų.
2019 m. Birželio mėn. Tarakonas pakeitė OSS licenciją iš APL-2 į „itin leistiną verslo šaltinio licencijos (BSL) versiją“. Tai iš esmės buvo atsakas į „Amazon Web Services“, siūlančią šakotą „ElasticSearch“ versiją kaip mokamą paslaugą, ir leido Tarakanams pasiūlyti savo duomenų bazę kaip paslaugą, nesijaudinant dėl AWS ar bet kurio kito debesų pardavėjo, kuris pavogė griaustinį.
„CockroachCloud“ yra visiškai priglobta ir visiškai valdoma „Cockroach Labs“ sukurta ir jai priklausanti paslauga, kuri teigia, kad „CockroachDB“ diegimas, mastelio keitimas ir valdymas yra lengvas. Šiuo metu „CockroachCloud“ veikia „Amazon Web Services“ ir „Google Cloud Platform“.
TarakonųDB diegimas ir pagrindinis testavimas
Įdiegiau „CockroachDB 19.2.2“ į „MacBook Pro“ naudodamas „Homebrew“. Pirmiausia aš aiškiai pašalinau senąją versiją (1.1.3), kurią likau po savo pirminės peržiūros.
„Homebrew“ yra būdingas „Mac“. Tai tik vienas iš penkių „CockroachDB“ diegimo būdų „Mac“ kompiuteriuose, kiti - atsisiųsti dvejetainį; naudoti Kubernetes; naudoti „Docker“; ir kurti iš šaltinio. „Linux“ ir „Windows“ turi mažiau diegimo galimybių.
martinheller @ Martins-Retina-MacBook ~% užvirina pašalinkite tarakonąPašalinamas /usr/local/Cellar/cockroach/1.1.3 ... (5 failai, 72,9 MB)
martinheller @ Martins-Retina-MacBook ~% užvirinkite įdiekite tarakoną / bakstelėkite / tarakoną
==>Bakstelėjimas tarakonas / bakstelėjimas
nuotolinis: objektų surašymas: 6, atlikta.
nuotolinis: objektų skaičiavimas: 100% (6/6), atlikta.
nuotolinis: objektų suspaudimas: 100% (5/5), padaryta.
nuotolinis: Iš viso 6 (delta 0), pakartotinai panaudotas 3 (delta 0), pakuotėje pakartotinai panaudotas 0
Išpakuokite objektus: 100% (6/6), atlikta.
Palietė 1 formulę (32 failai, 45,6 KB).
==>Tarakono diegimas iš tarakono / čiaupo==>Atsisiunčiama //binaries.cockroachdb.com/cockroach-v19.2.2.darwin-10.9-a
==>/usr/local/Cellar/cockroach/19.2.2/bin/cockroach gen man --path = / usr / local / C==>/usr/local/Cellar/cockroach/19.2.2/bin/cockroach gen autocomplete bash --out==>/usr/local/Cellar/cockroach/19.2.2/bin/cockroach gen autocomplete zsh --out ===>Įspėjimai
paleiskite vieno mazgo sankaupą, kurioje duomenys saugomi:
/ usr / local / var / tarakonas /
Vietoj numatytojo 8080 prievado mazgas aptarnauja savo administratoriaus vartotojo sąsają:
// localhost: 26256
NENAUDOKITE šio klasterio saugodami jums rūpimus duomenis; jis veikia nesaugiai
režimu ir gali viešai atskleisti duomenis, pvz. DNS atkūrimo ataka. Bėgti
TarakonasDB saugiai, žiūrėkite:
//www.cockroachlabs.com/docs/secure-a-cluster.html
„Bash“ užbaigimas įdiegtas:
/usr/local/etc/bash_completion.d
„zsh“ užbaigimai buvo įdiegti:
/ usr / local / share / zsh / site-functions
Jei norite paleisti paleidimo tarakoną dabar / palieskite / tarakoną ir paleiskite iš naujo prisijungdami:
aludarystės paslaugos prasideda tarakonasdb / tap / tarakonas
Arba, jei nenorite / nereikia foninės paslaugos, galite tiesiog paleisti:
tarakonų pradžia - nesaugu
==>Santrauka
==>„alaus valymas“ nebuvo vykdomas per 30 dienų, veikia dabar ...
Pašalinama: /Users/martinheller/Library/Caches/homebrew/node--12.12.0.catalina.bottle.tar.gz ... (14.8MB)
Iškirpti 18 simbolinių nuorodų iš / usr / local
martinheller @ Martins-Retina-MacBook ~% tarakono pradžios-vieno mazgo - nesaugu
*
* ĮSPĖJIMAS: BĖKITE NEATIKRIAI REŽIMU!
*
* - Jūsų klasteris yra atviras kiekvienam klientui, kuris gali pasiekti.
* - Bet kuris vartotojas, net rootas, gali prisijungti nepateikęs slaptažodžio.
* - Bet kuris vartotojas, prisijungęs kaip root, gali skaityti ar rašyti bet kokius jūsų klasterio duomenis.
* - Nėra nei tinklo šifravimo, nei autentifikavimo, taigi ir konfidencialumo.
*
* Sužinokite, kaip apsaugoti savo grupę: //www.cockroachlabs.com/docs/v19.2/secure-a-cluster.html
*
*
* ĮSPĖJIMAS: nebuvo nurodytos nei --listen-addr, nei --Advertise-addr.
* Serveris reklamuos „Martins-Retina-MacBook.local“ kitiems mazgams, ar tai galima perkelti?
*
* Apsvarstykite galimybę naudoti:
* - tik vietiniams serveriams: --listen-addr = localhost
* - kelių mazgų sankaupoms: --advertise-addr =
*
*
*
* INFO: šio klasterio replikacija buvo išjungta.
* Kai / pridėsite mazgų ateityje, atnaujinkite zonų konfigūracijas, kad padidintumėte replikacijos koeficientą.
*
TarakonasDB mazgas prasideda 2019-12-30 16: 30: 35.369965 +0000 UTC (užtruko 0.6s)
versija: CCL v19.2.2 @ 2019/12/11 01:27:47 (go1.12.12)
webui: //Martins-Retina-MacBook.local:8080
sql: postgresql: //[email protected]: 26257sslmode = išjungti
RPC kliento vėliavos: tarakonas - šeimininkas = Martins-Retina-MacBook.local: 26257 - nesaugu
žurnalai: / Vartotojai / martinheller / tarakonų duomenys / žurnalai
temp dir: / Vartotojai / martinheller / tarakonas-duomenys / tarakonas-temp884406444
išorinis įvesties / išvesties kelias: / Users / martinheller / cockroach-data / extern
parduotuvė [0]: kelias = / Vartotojai / martinheller / tarakonų duomenys
status: inicijuotas naujas klasteris
clusterID: 9f7141f8-d53d-49e3-9a5a-264de8cfa626
nodeID: 1
Šiuo metu man pavyko atidaryti aukščiau pateiktą žiniatinklio vartotojo sąsają ir pamatyti žiniatinklio valdymo sąsają, parodytą žemiau esančiame ekrano kopijoje.

Norėdami išbandyti instaliaciją, atlikau pirmąjį tarakonų universiteto pratimą kitame „Terminal“ skirtuke, kaip parodyta žemiau. Man pasirodė, kad pamoka yra gera, nors ir pateikiama trumpuose vaizdo įrašuose, o ne tekste, ir skirta pradedantiesiems, o ne patyrusiems DBA ar kūrėjams. Praktinė dalis pradedama naudojant darbo krūvis
įrankis sukurti mažą duomenų bazę, movr, tada tęsiasi CockroachDB SQL apvalkale.
martinheller @ Martins-Retina-MacBook ~% tarakonų darbo krūvis init movrI191230 16: 55: 34.351650 1 darbo krūvis / workloadsql / dataload.go: 135 importuoti vartotojai (0s, 50 eilučių)
I191230 16: 55: 34.356751 1 darbo krūvis / darbo krūvisql / dataload.go: 135 importuotos transporto priemonės (0s, 15 eilučių)
I191230 16: 55: 34.382023 1 darbo krūvis / workloadsql / dataload.go: 135 importuoti važiavimai (0s, 500 eilučių)
I191230 16: 55: 34.404733 1 darbo krūvis / workloadsql / dataload.go: 135 importuotos transporto priemonės_location_histories (0s, 1000 eilučių)
I191230 16: 55: 34.429203 1 workload / workloadsql / dataload.go: 135 importuoti promo_codes (0s, 1000 eilučių)
martinheller @ Martins-Retina-MacBook ~% tarakonų sql - nesaugu
#
# Sveiki atvykę į „CockroachDB SQL“ apvalkalą.
# Visi teiginiai turi būti nutraukti kabliataškiu.
# Norėdami išeiti, įveskite: \ q.
#
# Serverio versija: CockroachDB CCL v19.2.2 (x86_64-apple-darwin14, pastatytas 2019/12/11 01:27:47, go1.12.12) (ta pati versija kaip ir klientas)
# Klasterio ID: 9f7141f8-d53d-49e3-9a5a-264de8cfa626
#
# Įvesti \? trumpam įvadui.
#
root @: 26257 / defaultdb> RODYTI duomenų bazes;
duomenų bazės_vardas
+---------------+
defaultdb
movr
postgres
sistema
(4 eilutės)
Laikas: 2.028ms
root @: 26257 / defaultdb> RODYTI LENTELES IŠ movr;
lentelės_vardas
+----------------------------+
promo_codes
važiuoja
vartotojo_promo_kodai
vartotojų
transporto priemonės_vietos_istorijos
transporto priemonių
(6 eilutės)
Laikas: 2.863ms
root @: 26257 / defaultdb> SELECT * FROM movr.users LIMIT 10;
id | miestas | vardas | adresas | kredito_kortelė
+--------------------------------------+-----------+---------------------+-------------------------------+-------------+
ae147ae1-47ae-4800-8000-000000000022 | amsterdamas | Taileris Daltonas | 88194 „Angela Gardens Suite 94“ 4443538758
b3333333-3333-4000-8000-000000000023 | amsterdamas | Dillon Martin | 29590 Butler Plain Apt. 25 | 3750897994
b851eb85-1eb8-4000-8000-000000000024 | amsterdamas | Deborah Carson | 32768 Eriko padalijimo liuksas 88 | 8107478823
bd70a3d7-0a3d-4000-8000-000000000025 | amsterdamas | Davidas Stantonas | 80015 „Mark Views Suite“ 96 | 3471210499
c28f5c28-f5c2-4000-8000-000000000026 | amsterdamas | Maria Weber | 14729 Karen Radial | 5844236997
1eb851eb-851e-4800-8000-000000000006 | bostonas | Brianas Campbellas 92025 Yang kaimas | 9016427332
23d70a3d-70a3-4800-8000-000000000007 | bostonas | Carl Mcguire | 60124 Palmer Mews Apt. 49 | 4566257702
28f5c28f-5c28-4600-8000-000000000008 | bostonas | Jennifer Sanders | 19121 m. Padilla Brooks Apt. 12 | 1350968125
2e147ae1-47ae-4400-8000-000000000009 | bostonas | Cindy Medina | 31118 „Allen Gateway Apt.“ 60 | 6464362441
33333333-3333-4400-8000-00000000000a | bostonas | Danielis Hernandezas, MD | 51438 Janet slėniai | 0904722368
(10 eilučių)
Laikas: 2.977ms
Mokymo programa tęsiama mokant daugiau apie „CockroachDB“, įskaitant „CockroachDB“ grupių pagrindus ir pagrindinius SQL paleidimo pagrindus.
Tarakonas debesis
Sukti vieną „CockroachDB“ mazgą yra gana paprasta, kaip ką tik matėme. Sukurti trijų ar daugiau mazgų sankaupą reikia šiek tiek daugiau pastangų ir planavimo, ypač jei kuriate kelių regionų sankaupas ir turite suderinti lentelės topologiją. Jei jums reikia pagalbos, tarakonų prekybos inžinieriai mielai įsitaisys.
Kita vertus, kuriant klasterį „CockroachCloud“, reikia užpildyti žiniatinklio formą, kaip parodyta toliau pateiktoje ekrano kopijoje. Šiuo metu iš šios savitarnos sąsajos galite sukurti tik vieno regiono sankaupą; jei jums reikia kelių regionų sankaupų, didesnių mazgų arba daugiau nei 24 mazgų vienoje grupėje, turite susisiekti su „Tarakonų laboratorija“ palaikymo tarnyba, kad galėtumėte juos suteikti „CockroachCloud“.

„CockroachCloud“ grupės yra kuo izoliuotos ir saugios. Jie yra vieniši nuomininkai, kiekvienas iš jų savo abonemente ir VPC, o VPC yra užkardos viena nuo kitos ir iš bet kurio kito išorinio ryšio, nebent įtrauktos į baltąjį SQL ir žiniatinklio sąsajos prievadų sąrašą. Visuose interneto ryšiuose su klasteriu naudojamas TLS 1.2.
Atminkite, kad tarakonų laboratorijos šiuo metu nepalaiko privačių debesų. Tačiau jie planuoja tai padaryti ateityje.
Kaip taisyklė „Cockroach Labs“ skaičiuoja, kad kiekvienas vCPU gali apdoroti maždaug 1000 TPS. Įvertinimai, pateikti klasterio kūrimo puslapyje, kai atliekate atidėjimą, tikriausiai yra tikslesni, tačiau pateikiami skirtingais vienetais (IOPS, o ne TPS). Šiuo metu 2 vCPU mazgas GCP yra įvertintas 1800 IOPS, o 2 vCPU mazgas AWS vertinamas 600 IOPS.
TarakonoDB našumo patobulinimai
Kai pažvelgiau į „CockroachDB 1.1.3“ 2018 m. Pradžioje, jo SQL JOIN diegimas apsiribojo maišos prisijungimais ir euristiniu planuotoju; jos užklausos našumas dažnai buvo keičiamas tiesiškai, tačiau nebuvo panašus į pažangiausią lygį - jis buvo arčiau SQLite našumo. Iki 2018 m. Lapkričio mėn. „CockroachDB 2.1“ turėjo sąnaudomis pagrįstą užklausų optimizavimo priemonę, kuri JOIN našumui buvo konkurencinga su „PostgreSQL“. Nuo 19.2 versijos, po kitų metų kūrimo (ir perėjimo prie kalendoriaus versijų), visi SQL užklausose naudojamas sąnaudomis pagrįstas optimizavimo įrankis, net DDL sakiniai ir lango funkcijos. Palaikydama sąnaudomis pagrįstą optimizavimo priemonę, „CockroachDB“ automatiškai kuria lentelės statistiką.