Ohjelmointi

CockroachDB-arvostelu: Hajautettu SQL vaihtaa korkeaan vaihteeseen

Tarkastellessani CockroachDB: tä vuoden 2018 alussa huomasin, että hajautettu SQL-tietokanta, joka on rakennettu kaupallisen ja johdonmukaisen avainarvosäilön päälle, on suunniteltu selviytymään levyn, koneen, telineen ja jopa palvelinkeskuksen vikoista mahdollisimman pienellä viiveellä eikä ilman manuaalinen puuttuminen. Se on kaikki totta.

Tuolloin CockroachDB: llä oli mielestäni kolme suurta alijäämää: SQL JOIN -kyselyjen rajoitettu optimointi, ei täysin hallinnoitua palvelua eikä tukea JSON- tai Protobuf-tietotyypeille. Olen iloinen voidessani ilmoittaa, että kaikki nämä puutteet on sittemmin korjattu. JOINit käyttävät nyt kustannuksiin perustuvaa optimoijaa, CockroachCloud on beetaversiossa ja JSONB-tietotyyppi on otettu käyttöön.

Mitä TorakkaDB: ssä vielä puuttuu? Melko vähän, jos välität PostgreSQL-yhteensopivuudesta:

  • Tallennetut menettelyt ja toiminnot
  • Liipaisimet
  • Tapahtumat
  • Käyttäjän määrittelemät toiminnot
  • Kokotekstitoiminnot ja hakemistot
  • Paikkatieteelliset toiminnot ja hakemistot
  • Pudota ensisijainen avain
  • XML-toiminnot
  • Säästöpisteet
  • Saraketason oikeudet
  • LUO VÄLIAIKAISEN TAULUKON syntaksi
  • XA-syntaksia

Suurin osa olemassa olevista OLTP PostgreSQL -sovelluksista voidaan siirtää CockroachDB: hen, kun sovellustasolla on joitain kiertotapoja. Jos olet kuitenkin käyttänyt paikkatietopalveluita (PostGIS) tai kokotekstihakua, en tiedä hyvää tapaa ottaa ne käyttöön nykyisessä CockroachDB-versiossa.

Paikkatietohakemistoilla ja toiminnoilla on seurantakysymys, mutta vaikka paikkatietokohteiden tila on ollut avoinna useita vuosia, niiden tila on vain "potentiaalinen". Halutuista paikkatieteellisistä käyttötapauksista on tehty kysely, mutta se ei ole sama kuin ominaisuuden lupaaminen.

Koko tekstin indeksointi on "suunniteltua", mutta ei vielä etenemissuunnitelmassa. Useat ihmiset ovat ehdottaneet CockroachDB: n integrointia Bleven kanssa tämän saavuttamiseksi. Jälleen, ei lupauksia.

Kesäkuussa 2019 Cockroach muutti OSS-lisenssin APL-2: sta "erittäin sallivaksi versioksi Business Source License (BSL): ksi". Tämä oli pohjimmiltaan vastaus Amazon Web Services -palveluun, joka tarjosi haarautuneen version ElasticSearchista maksullisena palveluna, ja antaa Torakolle mahdollisuuden tarjota oma tietokanta palveluna huolimatta AWS: stä tai muusta pilvipalvelujen tarjoajasta varastamasta ukkosta.

CockroachCloud on Cockroach Labsin luoma ja omistama täysin isännöity ja täysin hallinnoitu palvelu, joka väittää tekevän CockroachDB: n käyttöönoton, skaalauksen ja hallinnan vaivattomaksi. CockroachCloud toimii tällä hetkellä Amazon Web Services -palvelussa ja Google Cloud Platform -palvelussa.

TorakkaDB-asennus ja perustestaus

Asensin CockroachDB 19.2.2: n MacBook Proon Homebrew-sovelluksella. Poistin ensin nimenomaisesti vanhan version (1.1.3), jonka olin jättänyt ensimmäisestä tarkistuksestani.

Homebrew on erityinen Mac-tietokoneille. Se on vain yksi viidestä tavasta asentaa CockroachDB Mac-tietokoneisiin, muiden ollessa lataamalla binaari; käytä Kubernetesia; käytä Dockeria; ja rakenna lähteestä. Linuxilla ja Windowsilla on vähemmän asennusvaihtoehtoja.

martinheller @ Martins-Retina-MacBook ~% hautaa torakan asennuksen poistamisen

Poista /usr/local/Cellar/cockroach/1.1.3 ... (5 tiedostoa, 72,9 Mt) asennuksen poistaminen

martinheller @ Martins-Retina-MacBook ~% brew install torakka / tap / torakka

==>Napauttamalla torakka / napauta

kaukosäädin: Objektien laskeminen: 6, valmis.

kaukosäädin: Objektien laskeminen: 100% (6/6), valmis.

kaukosäädin: Kohteiden pakkaus: 100% (5/5), valmis.

kaukosäädin: Yhteensä 6 (delta 0), uudelleenkäytetty 3 (delta 0), pakkaus-uudelleenkäytetty 0

Esineiden purkaminen pakkauksesta: 100% (6/6), valmis.

Napautettu 1 kaava (32 tiedostoa, 45,6 kt).

==>Torakan asentaminen torakasta / hana

==>Ladataan //binaries.cockroachdb.com/cockroach-v19.2.2.darwin-10.9-a

==>/usr/local/Cellar/cockroach/19.2.2/bin/cockroach gen man --polku = / 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 automaattinen täydennys zsh --out =

==>Varoitukset

Käynnistä yhden solmun klusteri, joka tallentaa tietonsa:

/ usr / local / var / torakka /

Oletusportin 8080 sijaan solmu palvelee järjestelmänvalvojan käyttöliittymää osoitteessa:

// paikallinen isäntä: 26256

ÄLÄ käytä tätä klusteria tärkeiden tietojen tallentamiseen; se toimii epävarmana

tilassa ja saattaa paljastaa tietoja julkisesti esim. DNS: n uudelleen hyökkäys. Juosta

TorakkaDB turvallisesti, katso:

//www.cockroachlabs.com/docs/secure-a-cluster.html

Bashin valmistuminen on asennettu:

/usr/local/etc/bash_completion.d

zsh-täydennykset on asennettu:

/ usr / local / share / zsh / site-toiminnot

Käynnistä cockroachdb / tap / torakka nyt ja käynnistä se uudelleen kirjautumisen yhteydessä:

panimopalvelut alkavat torakka / hana / torakka

Tai jos et halua / tarvitse taustapalvelua, voit vain suorittaa:

torakan alku - epävarma

==>Yhteenveto

==>`hauduttamista ei ole suoritettu 30 päivässä, käynnissä nyt ...

Poistetaan: /Users/martinheller/Library/Caches/Homebrew/node--12.12.0.catalina.bottle.tar.gz ... (14.8MB)

Karsittu 18 symbolista linkkiä hakemistosta / usr / local

martinheller @ Martins-Retina-MacBook ~% torakan aloitus-yksisolmu - epävarma

*

* VAROITUS: KÄYTTÖ epävarmassa tilassa!

*

* - Klusterisi on avoin kaikille asiakkaille, jotka voivat käyttää sitä.

* - Jokainen käyttäjä, jopa root, voi kirjautua sisään antamatta salasanaa.

* - Jokainen pääkäyttäjänä muodostava käyttäjä voi lukea tai kirjoittaa mitä tahansa tietoja klusterissasi.

* - Verkkosalausta tai todentamista ei ole, eikä siten myöskään luottamuksellisuutta.

*

* Katso klusterin suojaaminen: //www.cockroachlabs.com/docs/v19.2/secure-a-cluster.html

*

*

* VAROITUS: --listen-addr eikä --advertise-addr ei määritetty.

* Palvelin mainostaa "Martins-Retina-MacBook.local" muille solmuille, onko tämä reititettävissä?

*

* Harkitse:

* - vain paikallisia palvelimia varten: --listen-addr = localhost

* - monisolmuisten klustereiden kohdalla: --advertise-addr =

*

*

*

* INFO: Replikointi poistettiin käytöstä tälle klusterille.

* Kun lisäät / lisäätte solmuja tulevaisuudessa, päivitä vyöhykekokoonpanot replikointikertoimen lisäämiseksi

*

TorakkaDB-solmu alkaa 2019-12-30 16: 30: 35,369965 +0000 UTC (kesti 0,6 s)

koontiversio: CCL v19.2.2 @ 2019/12/11 01:27:47 (go1.12.12)

webui: //Martins-Retina-MacBook.local:8080

sql: postgresql: //[email protected]: 26257sslmode = poista käytöstä

RPC-asiakkaan liput: torakka --isäntä = Martins-Retina-MacBook.local: 26257 --insecure

lokit: / Users / martinheller / torakka-data / lokit

temp dir: / Käyttäjät / martinheller / torakka-data / torakka-temp884406444

ulkoinen I / O-polku: / Users / martinheller / torakka-data / extern

store [0]: polku = / Users / martinheller / torakka-data

status: alustettu uusi klusteri

clusterID: 9f7141f8-d53d-49e3-9a5a-264de8cfa626

nodeID: 1

Tässä vaiheessa pystyin avaamaan yllä olevan web-käyttöliittymälinkin ja näkemään alla olevassa kuvakaappauksessa näkyvän verkkopohjaisen hallintaliittymän.

Testaamaan asennuksen tupakoinnille seurasin ensimmäistä harjoitusta Torakan yliopistossa toisella Terminal-välilehdellä, kuten alla on esitetty. Minusta opetusohjelma oli hyvä, vaikka se esitettiin pikemminkin lyhyissä videoissa kuin tekstissä, ja suunnattu aloittelijoille eikä kokeneille DBA: lle tai kehittäjille. Käytännön osa alkaa käyttämällä työmäärä työkalu pienen tietokannan luomiseen, movr, jatkuu sitten CockroachDB SQL -kuoressa.

martinheller @ Martins-Retina-MacBook ~ torakan työkuormitus init movr

I191230 16: 55: 34.351650 1 työmäärä / työmääräql / dataload.go: 135 tuotua käyttäjää (0s, 50 riviä)

I191230 16: 55: 34.356751 1 työmäärä / työmääräql / dataload.go: 135 tuotua ajoneuvoa (0s, 15 riviä)

I191230 16: 55: 34.382023 1 työmäärä / työmääräql / dataload.go: 135 tuontiajoa (0 s, 500 riviä)

I191230 16: 55: 34.404733 1 työmäärä / työmääräql / dataload.go: 135 tuotuja ajoneuvojen_sijaintihistoriaa (0s, 1000 riviä)

I191230 16: 55: 34.429203 1 workload / workloadsql / dataload.go: 135 tuotua promo_codes (0s, 1000 riviä)

martinheller @ Martins-Retina-MacBook ~% torakka sql - epävarma

#

# Tervetuloa CockroachDB SQL -kuoreen.

# Kaikki lauseet on lopetettava puolipisteellä.

# Poistu kirjoittamalla: \ q.

#

# Palvelinversio: CockroachDB CCL v19.2.2 (x86_64-apple-darwin14, rakennettu 2019/12/11 01:27:47, go1.12.12) (sama versio kuin asiakas)

# Klusterin tunnus: 9f7141f8-d53d-49e3-9a5a-264de8cfa626

#

# Tulla sisään \? lyhyt esittely.

#

root @: 26257 / defaultdb> NÄYTÄ tietokannat;

tietokannan nimi

+---------------+

oletusdb

movr

postgres

järjestelmään

(4 riviä)

Aika: 2,028 ms

root @: 26257 / defaultdb> NÄYTÄ PÖYTÄT Movr;

taulukon_nimi

+----------------------------+

promo_codes

ratsastaa

user_promo_codes

käyttäjille

ajoneuvon_sijaintihistoria

ajoneuvoja

(6 riviä)

Aika: 2.863ms

root @: 26257 / defaultdb> SELECT * FROM movr.users RAJA 10;

id | kaupunki | nimi | osoite | luottokortti

+--------------------------------------+-----------+---------------------+-------------------------------+-------------+

ae147ae1-47ae-4800-8000-000000000022 | amsterdam | Tyler Dalton | 88194 Angela Gardens -sviitti 94 | 4443538758

b3333333-3333-4000-8000-000000000023 | amsterdam | Dillon Martin | 29590 Butler Plain Apt. 25 | 3750897994

b851eb85-1eb8-4000-8000-000000000024 | amsterdam | Deborah Carson | 32768 Eric Divide -sarja 88 | 8107478823

bd70a3d7-0a3d-4000-8000-000000000025 | amsterdam | David Stanton | 80015 Mark Views -sarja 96 | 3471210499

c28f5c28-f5c2-4000-8000-000000000026 | amsterdam | Maria Weber | 14729 Karen Radial | 5844236997

1eb851eb-851e-4800-8000-000000000006 | Boston | Brian Campbell | 92025 Yangin kylä 9016427332

23d70a3d-70a3-4800-8000-000000000007 | Boston | Carl Mcguire | 60124 Palmer Mews Apt. 49 | 4566257702

28f5c28f-5c28-4600-8000-000000000008 | Boston | Jennifer Sanders | 19121 Padilla Brooks Apt. 12 | 1350968125

2e147ae1-47ae-4400-8000-000000000009 | Boston | Cindy Medina | 31118 Allen Gateway Apt. 60 | 6464362441

33333333-3333-4400-8000-00000000000a | Boston | Daniel Hernandez, lääkäri | 51438 Janet Valleys | 0904722368

(10 riviä)

Aika: 2.977ms

Opetusohjelma jatkuu sieltä opettaakseen lisää CockroachDB: stä, mukaan lukien CockroachDB-klustereiden perusteet ja SQL-mittakaavan käytön perusteet.

TorakkaPilvi

Yhden TorakkaDB-solmun pyöriminen on melko yksinkertaista, kuten juuri näimme. Kolmen tai useamman solmun klusterin kehrääminen vie hieman enemmän vaivaa ja suunnittelua, varsinkin jos luot monialueisia klustereita ja sinun on viritettävä taulukon topologiaa. Jos tarvitset apua, Torakan myyntiinsinöörit nousevat mielellään mukaan.

Toisaalta klusterin luominen CockroachCloudiin on verkkolomakkeen täyttäminen, kuten alla olevassa kuvakaappauksessa näkyy. Tällä hetkellä voit luoda vain yhden alueen klusterin tästä itsepalvelurajapinnasta; Jos tarvitset monialueisia klustereita, suurempia solmuja tai yli 24 solmua ryhmää kohti, sinun on otettava yhteyttä Torakkalaboratorioiden tukeen ja tarjottava ne sinulle CockroachCloudissa.

CockroachCloud-klusterit ovat mahdollisimman eristettyjä ja turvallisia. He ovat yksittäisiä vuokralaisia, kullakin omalla alatilillään ja VPC: llä, ja VPC: t on palomuuri toisiltaan ja muilta ulkopuolisilta yhteyksiltä, ​​ellei sallittujen luettelossa ole SQL- ja web-käyttöliittymäportteja. Kaikki yhteydet klusteriin Internetin kautta käyttävät TLS 1.2: ta.

Huomaa, että Torakka Labs ei tällä hetkellä tue yksityisiä pilviä. Heillä on kuitenkin suunnitelmia tehdä niin tulevaisuudessa.

Nyrkkisääntönä Cockroach Labs arvioi, että kukin vCPU pystyy käsittelemään noin 1000 TPS: ää. Arviot, jotka annetaan klusterin luontisivulla, kun teet provisiointia, ovat todennäköisesti tarkempia, mutta ne annetaan eri yksiköissä (IOPS eikä TPS). Tällä hetkellä GCP: n 2-vCPU-solmun arvioidaan olevan 1800 IOPS ja AWS: n 2-vCPU-solmun arvion 600 IOPS.

TorakkaDB: n suorituskyvyn parannukset

Kun katselin CockroachDB 1.1.3: ta vuoden 2018 alussa, sen SQL JOIN -toteutus rajoittui hash-liittymiin ja heuristiseen suunnittelijaan; sen kyselyn suorituskyky skaalautui usein lineaarisesti, mutta ei ollut mikään tekniikan taso - se oli lähempänä SQLiten suorituskykyä. Marraskuuhun 2018 mennessä CockroachDB 2.1: lla oli kustannuksiin perustuva kyselyn optimoija, joka oli kilpailukykyinen PostgreSQL: n kanssa JOIN-suorituskyvystä. Versiosta 19.2 lähtien uuden vuoden kehityksen (ja siirtymisen kalenteriversioon) jälkeen, kaikki SQL-kyselyt käyttävät kustannuksiin perustuvaa optimoijaa, jopa DDL-lauseita ja ikkunatoimintoja. Kustannuspohjaisen optimoijan tueksi CockroachDB luo taulukotilastot automaattisesti.

$config[zx-auto] not found$config[zx-overlay] not found