â Det Ă€r ju fantastiskt, â sa hon högt utan att vĂ€nda sig till nĂ„gon. â Det Ă€r ju fantastiskt! Det stĂ„r ju dĂ€r klart och tydligt â det frĂ€msta syftet med samhĂ€llet Ă€r att generera vinst i aktieĂ€garnas intresse. TĂ€nk efter! De har inga rĂ€dslor!
Julij Dubov, "Det minsta ondskan"
NĂ€r du ser en sĂ„dan rubrik har du sĂ€kert redan beslutat att artikeln Ă€r antingen dum eller provokativ. Men skynda dig inte att döma: anstĂ€llda pĂ„ stora bolag, sĂ€rskilt statligt Ă€gda företag, tvingas ganska ofta jĂ€mföra olika plattformar, inklusive helt olika sĂ„dana â som de som nĂ€mns i rubriken.

SjÀlvklart jÀmförs databashanteringssystem sÀllan, eftersom deras styrkor och svagheter Àr vÀlkÀnda. Vanligtvis Àr det plattformar som löser en viss tillÀmpning som gÄr till jÀmförelse. I artikeln kommer jag att visa metoden som anvÀnds, genom exemplet av databaser, som lÀsarna pÄ Habr sÀkert kÀnner till. SÄ,
Motivation
NÀr du startar ett utbildningsprojekt eller ett hobbyprojekt kan motivationen till val av plattform vara mycket varierande: "den hÀr plattformen kÀnner jag till bÀst", "jag vill lÀra mig mer om denna", "hÀr finns den bÀsta dokumentationen"... I ett kommersiellt företag Àr kriteriet för val ett: hur mycket jag mÄste betala och vad jag fÄr för pengarna.
SjĂ€lvklart vill man betala mindre och fĂ„ mer. Men man mĂ„ste bestĂ€mma vad som Ă€r viktigast â att betala mindre eller att fĂ„ mer, och tilldela varje nod en vikt. Anta att vi vĂ€rderar en kvalitativ lösning högre Ă€n en billig, och vi ger noden "Kostnad" vikten 40%, medan noden "Möjligheter" fĂ„r 60%.

I stora företag Ă€r det oftast tvĂ€rtom â kostnadsvikten sjunker sĂ€llan under 50%, och kan vara mer Ă€n 60%. I det modellfall som presenteras Ă€r det viktigt att den sammanlagda vikten av underordnade noder till vilken som helst överordnad nod alltid mĂ„ste vara 100%.
Uteslutande kriterier
The website det finns cirka 500 databashanteringssystem. SjÀlvklart, om man vÀljer en mÄlplattform bland sÄ mÄnga alternativ kan man fÄ en översiktsartikel, men inte ett kommersiellt projekt. För att minska urvalet formuleras uteslutande kriterier, och om en plattform inte uppfyller dessa kriterier, betrakta den inte.
Uteslutande kriterier kan relatera till teknologiska egenskaper, till exempel:
- ACID-garantier;
- relationsdatamodell;
- stöd för SQL-sprÄk (observera, detta Àr inte samma sak som 'relationsmodell');
- möjlighet till horisontell skalning.
Det kan finnas allmÀnna kriterier:
- tillgÄng till kommersiellt stöd i Sverige;
- öppen kÀllkod;
- plattformens nÀrvaro i registren frÄn Min Kommunikation;
- plattformens rang i nÄgot betyg (till exempel bland de första hundra pÄ db-engines.com);
- tillgÄng till experter pÄ marknaden (till exempel baserat pÄ sökresultat för plattformens namn i CV:n pÄ hh.ru).
Slutligen kan det finnas kriterier som Àr specifika för företaget:
- tillgÄng till personal med nödvÀndig kompetens;
- kompatibilitet med övervakningssystem X eller backup-system Y, som allt stöd Àr kopplat till...
Det viktigaste Àr att det finns en lista med avsnittskriterier. Annars kommer det alltid att finnas nÄgon expert (eller 'expert') som Ätnjuter sÀrskilt förtroende frÄn ledningen, som sÀger 'varför valde ni inte plattform Z, jag vet att den Àr bÀst'.
Kostnadsbedömning
Kostnaden för lösningen bestÄr tydligt av kostnaden för licenser, kostnaden för stöd och kostnaden för utrustning.
Om systemen Àr av ungefÀr samma klass (till exempel Microsoft SQL Server och PostgreSQL), kan man för enkelhetens skull anta att mÀngden utrustning för bÄda lösningarna kommer att vara ungefÀr densamma. Detta gör att man kan undvika att bedöma utrustning, vilket sparar en massa tid och arbete. Men nÀr man jÀmför helt olika system (sÀg Oracle vs. Redis), Àr det uppenbart att en noggrann bedömning krÀver en sizing (berÀkning av mÀngden utrustning). Att göra en sizing av ett icke-existerande system Àr en ganska otacksam uppgift, sÄ man försöker undvika sÄdana jÀmförelser. Det Àr enkelt att skriva: i avsnittskriterierna anges noll dataförlust och relationsmodell, eller omvÀnt - en belastning av 50 000 transaktioner per sekund.
För att bedöma licenser rÀcker det att begÀra priset för en licens för ett fast antal kÀrnor och support under en fast tidsperiod frÄn leverantören eller deras partners. I allmÀnhet har företagen redan etablerade goda relationer med mjukvaruleverantörerna, och om DB-driftsavdelningen inte kan svara pÄ kostnadsfrÄgan sjÀlva, rÀcker det med ett enda mail för att fÄ fram denna information.
Olika leverantörer kan ha olika licensieringsmetoder: baserat pÄ antal kÀrnor, datavolym eller antal noder. En standby-databas kan vara gratis, eller sÄ kan den licensieras pÄ samma sÀtt som den primÀra. Om det upptÀcks nÄgra skillnader i metoderna mÄste den modellstand som anvÀnds beskrivas i detalj och kostnaden för licenserna berÀknas för denna stÄnd.
En viktig punkt för en korrekt jĂ€mförelse Ă€r att ha samma villkor för support. LĂ„t oss sĂ€ga att Oracle-support kostar 22% av licenspriset per Ă„r, medan PostgreSQL-support kan vara kostnadsfri. Ăr det korrekt att jĂ€mföra pĂ„ detta sĂ€tt? Nej, eftersom konsekvenserna av ett fel som inte kan lösas av interna resurser Ă€r helt olika: i det första fallet kommer support-specialister snabbt att hjĂ€lpa till att Ă„tgĂ€rda det, medan det i det andra fallet finns en risk för förseningar i projektet eller driftstillestĂ„nd för det fĂ€rdiga systemet under en obestĂ€md tid.
Villkoren för berÀkningen kan likstÀllas pÄ tre sÀtt:
- AnvÀnda Oracle utan support ( vilket i praktiken aldrig förekommer).
- Köpa support för PostgreSQL â exempelvis frĂ„n företaget Postgres Professional.
- Inkludera de risker som Àr kopplade till avsaknaden av support i berÀkningarna.
Till exempel kan riskberÀkningarna se ut sÄ hÀr: vid ett oförutsÀgbart databaskollaps berÀknas driftstoppet för systemet bli 1 arbetsdag. Den planerade vinsten frÄn att anvÀnda systemet Àr 40 miljarder mongoliska tugrik per Är, och frekvensen av incidenter bedöms till 1/400, dÀrför berÀknas riskerna utan support till cirka 100 miljoner mongoliska tugrik per Är. Det Àr uppenbart att "planerad vinst" och "bedömd incidentfrekvens" Àr virtuella vÀrden, men det Àr mycket bÀttre att ha en sÄdan modell Àn att inte ha nÄgon.
I verkligheten kan systemet vara för viktigt, och de reputationsförluster som orsakas av lÄngvariga driftstopp kan vara oacceptabla, sÄ support kommer att behövas. Om driftstopp Àr acceptabelt, kan avstÄende frÄn support ibland vara ett bra sÀtt att spara kostnader.
Anta att efter alla berĂ€kningar kostnaden för att driva plattform A under 5 Ă„r Ă€r 800 miljoner mongoliska tugrik, kostnaden för plattform B Ă€r 650 miljoner tugrik, och kostnaden för plattform C Ă€r 600 miljoner tugrik. Plattform C fĂ„r som vinnare ett fullt poĂ€ng för kostnaden, medan plattformarna A och B fĂ„r nĂ„got lĂ€gre poĂ€ng, proportionerligt mot hur mycket dyrare de Ă€r. I det hĂ€r fallet â 0,75 och 0,92 poĂ€ng respektive.
Bedömning av möjligheter
Bedömning av möjligheter delas in i mÄnga grupper, vars antal endast begrÀnsas av fantasien hos den som gör bedömningen. En optimal metod verkar vara att dela möjligheterna efter de team som kommer att anvÀnda dem; i vÄrt exempel Àr detta utvecklare, administratörer och informationssÀkerhetstjÀnstemÀn. Anta att vikterna för dessa funktioner fördelas som 40:40:20.
Funktioner relaterade till utveckling inkluderar:
- anvÀndarvÀnlighet vid datamanipulering;
- skalbarhet;
- tillgÄng till sekundÀra index.
Listan över kriterier, liksom deras vikter, Ă€r mycket subjektiv. Ăven vid lösning av samma uppgift kommer dessa listor, vikterna för punkterna och svaren att skilja sig avsevĂ€rt beroende pĂ„ sammansĂ€ttningen av ditt team. SĂ„ till exempel anvĂ€nder Facebook MySQL för datalagring, medan Instagram byggs pĂ„ Cassandra. Det Ă€r osannolikt att utvecklarna av dessa program fyllde i sĂ„dana tabeller. Man kan bara gissa att Mark Zuckerberg valde en fullstĂ€ndig relationsmodell, och betalade för det med behovet av applikationssharding, medan Kevin Systrom byggde in skalbarhet genom plattformen och offrade bekvĂ€mligheten av datatillgĂ„ng.
Funktioner relaterade till administration inkluderar:
- möjligheter för systembackup;
- anvÀndarvÀnlighet vid övervakning;
- anvĂ€ndarvĂ€nlighet vid hantering av resurser â diskar och noder;
- möjligheter för dat replication.
Observera att frÄgestÀllningarna mÄste möjliggöra en kvantitativ bedömning. Man kan till och med komma överens om hur man utvÀrderar en viss funktion. LÄt oss till exempel försöka ge betyg Ät sÀkerhetskopieringsverktyg med hjÀlp av verktyg som tillhandahÄlls med Oracle-databashanteraren:
Verktyget
Kommentar
UtvÀrdering
imp/exp
Export och import av data
0.1
börja/sluta backup
Filkopiering
0.3
RMAN
Möjlighet till inkrementell kopiering
0.7
ZDLRA
Endast inkrementell kopiering, snabbaste ÄterstÀllning till en punkt
1.0
Om tydliga bedömningskriterier saknas kan det vara bra att be nÄgra experter ge betyg och sedan ta ett genomsnitt.
Till sist, lÄt oss helt enkelt lista funktionerna för informationssÀkerhet:
- existerande policyer för lösenordshantering;
- möjlighet att ansluta externa autentiseringsmedel (LDAP, Kerberos);
- rollbaserad Ätkomstmodell;
- revisionsmöjligheter;
- kryptering av data pÄ disk;
- kryptering vid överföring över nÀtverket (TLS);
- skydd av data frÄn administratören.
Prestandatestning
Separat vill jag varna för att anvÀnda resultaten av nÄgra stress tester som utförts av nÄgon annan som argument.
För det första kan databasstrukturen och belastningsprofilen för de testade applikationerna skilja sig avsevÀrt frÄn den uppgift du planerar att lösa. För 10-15 Är sedan brukade databasleverantörerna skryta med resultat frÄn TPC-tester, men nu verkar det som om ingen tar dessa resultat pÄ allvar.
För det andra beror systemets prestanda starkt pÄ vilken plattform koden ursprungligen skrivits för och vilken hÄrdvara testen genomfördes pÄ. Jag har sett mÄnga tester dÀr Oracle jÀmfördes med PostgreSQL. Resultaten varierade frÄn total överlÀgsenhet för det ena systemet till samma överlÀgsenhet för det andra.
Och slutligen, för det tredje vet du ingenting om vem som utförde testet. BÄde kvalifikationen, som pÄverkar kvaliteten pÄ OS- och plattformsinstÀllningarna, och motivationen, som pÄverkar testresultaten starkare Àn alla andra faktorer tillsammans, Àr viktiga.
Om prestanda Àr en kritiskt viktig faktor, genomför testet sjÀlv, helst med hjÀlp av specialister som kommer att stÀlla in och underhÄlla det industriella systemet.
Resultat
Slutligen ska resultatet av allt arbete vara ett kalkylblad dÀr alla betyg har sammanstÀllts, multiplicerats och summerats:

Som ni förstÄr kan man genom att Àndra vikterna och justera betygen uppnÄ vilket önskat resultat som helst, men det Àr en helt annan historia...
KĂ€lla: habr.com
