0
For et par måneder siden, skrev jeg en grundig stykke på Microsoft ‘s Cosmos DB, som er Redmond’ s indtræden i verden globalt distribueret cloud-databaser. Annonceringen af Kosmos DB ‘ s general availability (GA) fandt sted i samarbejde med virksomhedens Bygge begivenhed, der blev afholdt i Maj. Den følgende uge annoncerede Google, at GA af Cloud Skruenøgle, en globalt distribueret operationel database af sin egen.
Læs også: Inde i Microsofts Kosmos DB
Læs også: Microsoft Azure lancerer Kosmos DB, et supersæt af sin DocumentDB service
Læs også: Google gør Cloud-Nøgle, der er generelt tilgængelige
På grund af sammenløbet af disse meddelelser, fra to af de tre største offentlige cloud-udbydere, jeg troede, det ville være nyttigt at følge op på mit Cosmos DB dækning med dækning for Cloud Kæp, der var af samme omfang og dybde. Tilføj i en briefing på Skruenøgle fra Google Cloud Produkt Manager Dominic Preuss, at Google var så venlig at tilbyde, og det var en slam-dunk. Så lad os gå videre.
Konkurrencedygtige sammenligninger
Først lad os diskutere, hvordan Skruenøgle sammenligner — og hvordan det ikke-at konkurrerende tilbud fra Amazon og Microsoft cloud-platforme. Det er mere om at få vores lejer end at give en analyse af konkurrenceforholdene.
Den første ting at forstå, om Nøgle er, at det er en relationel database, som er gearet til operationelle OLTP (online transaktionsbeslutning behandling) arbejdsmængder, med fuld SYRE (atomicity, konsistens, isolation og durability) funktionalitet. Skruenøgle er ikke en simpel skala op relationel database service — that ‘ s, hvor Google Cloud SQL kommer i. Skruenøgle er ikke et data warehouse, Google BigQuery er designet til at håndtere dem, arbejdsbyrde. Og det er ikke en NoSQL database, enten, som BigTable er Google ‘ s tilbud er der.
Så Kæp i skarp modstrid med Amazon ‘ s DynamoDB, som er en NoSQL-database, der anvender såkaldte “eventuel konsekvens,” og Microsofts Kosmos DB, også en NoSQL-database, og som er konfigurerbar langs et fuldt spektrum af sammenhæng modeller, der spænder form af en SYRE model i den ene ende til eventuel konsekvens på andre, og to mere sammenhæng modeller i mellem.
Analytisk, for
Og selvom Skruenøgle er relationel og designet til OLTP, det kan også håndtere i-database operationelle analytics. Med alt dette i tankerne, er det måske give mere mening at sammenligne Skruenøgle til Azure SQL-Database, eller Amazon Relationel Database Service (RDS), som begge er fuldt relationelle, SYRE-kompatibel, og tilbyder en vis grad af operationel analytics selv.
Men hvis det relationelle/SYRE affinitet lokker dig til at sammenligne Skruenøgle til Azure SQL-database og Amazon RDS, det er ikke så let. Hvorfor? Fordi — som Google ‘ s egen Cloud SQL — SQL DB og RDS er cloud inkarnationer af on-premises database management systemer, der henviser til, at Spanner var designet til cloud. Og Kosmos DB og DynamoDB var for.
Og selv om Skruenøgle bruger SQL for forespørgsler og data definition (oprettelse af tabeller og lignende) gør det ikke, så for data manipulation/skrive operationer. I stedet anvender en “mutation” API, syntaks, som er mere objekt-relationel mapping (ORM)-like og ejendom-orienteret, end det er set-baseret. Der er et andet punkt, der adskiller den fra services som Azure SQL DB og Amazon RDS. Så æbler-til-æbler sammenligninger er flygtig.
Første mosebog
Den in-house version af Spanner blev oprindeligt bygget af Google til at håndtere arbejdspres som AdWords og Google Play, der var, ifølge Google, der tidligere kørte på massive, manuelt sharded MySQL-implementeringer. Problemet med disse implementeringer blev den manuelle sharding — mens det Google med en scale-out mekanisme, at MySQL ikke understøtter indbygget, det var tungt; så meget, at re-sharding databasen blev en flerårig proces.
Google havde brug for en database, der havde indfødte, fleksibel sharding kapaciteter, overholdt relationelle schema og opbevaring, var SYRE-kompatibel og understøttes nul nedetid. Da sådan en database ikke findes, kan Google skabt sin egen, og den oprindelige Nøgle blev født. Nu, efter næsten 10 års kamp-at teste produktet i huset, Google har lavet Cloud Skruenøgle, en offentlig API foran samme teknologi, der er generelt tilgængelige.
At have din scale-out, og spise din SURT, for
På trods af den auto-sharding, Skruenøgle snart vil støtte på tværs af regionen transaktioner. Hvis det kan gøre alt det, så hvorfor ikke konventionelle relationelle databaser? Og hvorfor er de traditionelle platforme baseret på en skala-up-model, mens Skruenøgle scale-out, men stadig bevarer de andre konventionelle karakteristika af relationelle database systemer? Hvordan er Skruenøgle kunder i stand til at “have det på begge måder?”
Den store grund er den måde, hvorpå transaktioner, der er begået. Traditionelle systemer, når geografisk fordelt, skal du bruge en protokol, der er kendt som to faser, som ikke komplet før hvert websted slutter sit eget arbejde. Men Skruenøgle gør hver lokalitet en fuld kopi af andre og bruger en Paxos konsensus algoritme til at begå en transaktion, når et flertal af websteder, der har afsluttet deres arbejde. Brugere af et bestemt websted, der ikke selv færdig med at opdatere, kan blive re-dirigeret til et websted, der har, indtil deres egen hjemmeside er færdig. Der indfører nogle ekstra ventetid for visse brugere i løbet af meget bestemte intervaller, men det eliminerer flaskehalse, som standard databaser skal slås med, når konfigureret i et distribueret mode.
Men vent, der er mere…
Paxos/konsensus er nøglen til at gøre alt arbejdet, men andre tricks, som er optimeret netværk og hardware, samt anden software, tricks, hjælp også. For eksempel, når data er låst under skrive-operationer, Skruenøgle kun har til at låse celler (en celle, der er bestemt kolonne i en bestemt række) snarere end hele rækker. Dette minimerer påstand og accelererer transaktion engagement, samtidig med at der stadig sikres fuld overensstemmelse mellem databasen. Også lidt ældre versioner af data, der kan stilles til rådighed for læse-kun aktiviteter, der har en vis tolerance for “gammel” data, hvilket reducerer påstand yderligere.
En anden måde Skruenøgle hastigheder ting op, er ved at gemme barn data — som i konventionelle databaser ville være i en separat, relaterede tabel, — så at det er fysisk comingled med sin forælder data. Dette giver forespørgsler, der omfatter hierarkiske data (som indkøbsordrer og deres line-punkter), der skal scannes, i ét slag, snarere end at kræve databasen til at krydse en slutte forholdet mellem de to.
Så selv om den fælles LANDBRUGSPOLITIK sætning hedder det, at en database, der er partition-tolerant og consistent kan også være meget entilgængelig, Skruenøgle kan “snyde”, at sætning (på en god måde) gennem optimeringer, der side-step nogle af de normale begrænsninger pålagt af distribuerede databaser.
Udviklere, udviklere
Skruenøgle er meget-udvikler venligt, med en JDBC-driver og Software Development Kits (sdk ‘ er) til sprog som Java, Python, Node.js og andre populære blandt open source-stak-udviklere.
For dem i Microsoft/.NET-camp, en ODBC-driver og en C# SDK er i støbeskeen. Der vil hjælpe Skruenøgle konkurrere mere direkte mod Azure Kosmos DB, SQL-Database og SQL Data Warehouse samt Amazon RDS, som alle er meget Microsoft-stack-venligt. Selv Amazons DynamoDB service har .NET support, så Skruenøgle ‘ s ODBC og C# – støtte kan ikke komme hurtigt nok.
Alle sammen nu
Igen, selv om disse ikke er æbler-til-æbler sammenligninger; Google cloud data stak innoverer langs forskellige akser end AWS og Azure dem. En af disse akser vedrører inter-service integration. For eksempel, Google BigQuery understøtter den samme SQL-dialekt, som Skruenøgle. Og mens Azure SQL-Database og SQL Data Warehouse både bruge Microsofts Transact-SQL, Kosmos DB ‘ s SQL dialekt er forskellige. På Amazon side, DynamoDB ikke selv tilbyde native SQL-støtte.
Googles integration går ud over SQL dialekter selv. For eksempel, BigQuery understøtter federated af forespørgsler på tværs af dets egne data, samt BigTable og filer i Google Drev. Et stykke tid Skruenøgle tabeller kan ikke deltage i disse federated forespørgsler i dag, ville jeg ikke blive overrasket, hvis der ændres.
Vælg din database
Så hvilken database der er den rigtige til din ansøgning? Da data bevægelse er dyrt, meget vil afhænge af, hvor dine data er i dag. Og i betragtning af, at mange virksomheder har en masse af data, der er gemt i Amazon Simple Storage Service (S3), AWS har magt monopolselskaber gå til det.
I mellemtiden, kan fans af den relationelle model, der har brug for en globalt distribueret database, kan finde Skruenøgle tilbud og uimodståelig kombination af disse ting. Kunder, som er meget fokuseret på service level agreements (Sla ‘er), af hensyn til overholdelse, eller Sla’ er de nødt til at tilbyde deres egne kunder, kan finde Kosmos DB ‘ s value proposition, der trumfer de andre to.
Uanset hvilken vej kunderne gå, selvom de er i en god position. Gennem en kombination af DynamoDB, Kosmos DB og Skruenøgle, alle tre Internet-giganter, der tilbyder kundeorienterede versioner af globalt distribuerede database-tjenester, som de selv er afhængige af for første-parts tilbud. Med det som udgangspunkt, at konkurrencen er (og vil fortsætte med at være hård, og kunden vinder ud.
0