Databases mingħajr ċpar

X’tipi ta’ databases hemm

18 min
What you'll learn
  • tagħraf il-ħames familji ta’ DB — relazzjonali, ċavetta-valur, dokumentali, kolonnari, grafiċi — skont kif jaħżnu d-data u x’xogħlijiet tipiċi jagħmlu
  • tagħżel il-maħżen skont in-natura tal-mistoqsijiet: database relazzjonali bħala default, Redis/MongoDB/ClickHouse — għal xogħol speċifiku, mhux «għax hekk fil-moda»
  • tispjega d-differenza bejn u u għalfejn il-prodott jikteb f’PostgreSQL filwaqt li l-analitika taqra replika kolonnari
  • issib bżonn «dokumentali» li jissodisfa kolonna jsonb f’PostgreSQL mingħajr it-tieni database

Fit-triq lejn l-indiċi, QUERY jieqaf ftit ħdejn sezzjoni mudlama tal-vault. Wara l-ħġieġa — reġistru ta’ arkivji tad-Dinja l-qadima li ma baqgħux ħajjin wara s-Severance il-Kbira: in-nodi tal-cache ntfew l-ewwel, il-maħżen dokumentali waslu f’biċċiet imċarrta, il-clusters analitiċi siekta f’setturi sħaħ. Imma l-istampa relazzjonali ta’ «Kotomarket» baqgħet sħiħa — bir-rabtiet kollha.

Mhux biss relazzjonali

Għal «Kotomarket» speċjalment komdi huma d-databases relazzjonali: il-klijenti, l-ordnijiet u l-prodotti jaqgħu b’mod naturali f’tabelli b’rabtiet. Propju lilhom huwa ddedikat il-kors. Imma fl-industrija — kemm fl-2024 kif ukoll illum — tiltaqa’ ma’ approċċi oħra:

  • ċavetta-valur (Redis) — format «ċavetta → valur» mgħaġġel ħafna, meta jkollok bżonn tiġbed rekord sempliċi mill-ewwel;
  • orjentat lejn id-dokumenti (MongoDB) — jaħżnu dokumenti flessibbli, fejn l-istruttura tista’ tvarja minn rekord għal rekord;
  • kolonnari (ClickHouse) — qawwija fl-analitika, meta jkollok bżonn tikkalkula malajr indikaturi fuq volumi enormi ta’ data.

Il-biċċa l-kbira tad- popolari għall-iżvilupp tal-prodotti jibqgħu relazzjonali: PostgreSQL, MySQL, Oracle, MS SQL. Titgħallem l-SQL hawn — u tkun tista’ taqra d-data b’kunfidenza f’kumpaniji differenti ħafna.

QUERY: Lil kull arkivju x-xogħol tiegħu: lil wieħed il-veloċità, lil ieħor il-flessibbiltà, lit-tielet l-analitika. Aħna tnejn kellna xorti tajba: missilna dak fejn kollox marbut ma’ kollox.

Gallerija mudlama ta’ arkivji mitfija tad-Dinja l-qadima b’forom differenti; fl-aħħar tagħha tixgħel sħiħa ologramma relazzjonali ta’ tabelli marbuta
Il-maħżen ivarjaw: ċavetta-valur, dokumenti, kolonni. L-istampa tagħna li baqgħet ħajja hija relazzjonali: tabelli u rabtiet.

Not only relational

For Kotomarket, relational databases suit us especially well: buyers, orders, and products fall naturally into tables with links between them. That’s what this course is about. But across the industry — in 2024 just as today — you’ll meet other approaches too:

  • key-value (Redis) — a blazingly fast "key → value" format for when you need to grab a simple record instantly;
  • document-oriented (MongoDB) — stores flexible documents whose structure can differ from record to record;
  • columnar (ClickHouse) — strong at analytics, when you need to crunch metrics over enormous volumes of data fast.

Most of the popular DBMSs for product development stay relational: PostgreSQL, MySQL, Oracle, MS SQL. Master SQL here and you’ll be able to read data confidently at very different companies.

QUERY: Each archive has its own job: one prizes speed, another flexibility, a third analytics. You and I got lucky: we inherited the one where everything is connected to everything.

Ir-reġistru tal-familji: maqsum bil-galbu

Ir-reġistru wara l-ħġieġa huwa raġuni tajba biex naqsmu l-familji tad-databases bis-serjetà: «x’tipi ta’ DB hemm u meta tieħu liema» huwa wieħed mill-aktar mistoqsijiet frekwenti fl-intervisti. Ngħaddu ħames familji wara xulxin, u fuq kull waħda — l-istess skema: mod ta’ ħażna, naħat b’saħħithom u dgħajfa, prodotti u meta tieħu.

Databases relazzjonali: skema stretta u rabtiet

Mod ta’ ħażna: ringieli f’tabelli bi skema ddikjarata minn qabel — kull kolonna għandha t-tip tagħha, bejn it-tabelli jaħdmu r-rabtiet permezz taċ-ċwievet, u d- innifsu jħares l-integrità: ordni minn klijent li ma jeżistix ma tirnexxix tinkiteb. Il-bidliet jiġu eżegwiti bħala tranżazzjonijiet bil-garanziji — «ordni + tnaqqis tal-istokk» jew jinkitbu flimkien, jew ma jinkitbux xejn.

users — a tableidPKintegerfull_nametextcitytextsignup_datedate123Artyom VolkovEkaterina AlekseevNikolay NikitinSaint PetersburgYekaterinburgAlmaty2024-10-202025-01-252024-09-21rows are records · columns are typed properties · there can be just one table
Fil-qalba tagħha, database relazzjonali hija tabella: ringieli-rekords u kolonni bit-tip tagħhom. Ir-rabtiet biċ-ċwievet jiżdiedu fuqha, u t-tabelli jistgħu jkunu anki waħda.
usersidnameproductsidtitleordersiduser_idproduct_idFK → PKproducts · banking · ordersPostgreSQL · MySQL
U meta t-tabelli jkunu bosta — jorbtu biċ-ċwievet: skema stretta u rabtiet bejn it-tabelli.
  • Naħat b’saħħithom: SQL espressiv (filtri, tgħaqqid ta’ tabelli, aggregati), integrità fil-livell tad-database, tranżazzjonijiet.
  • Naħat dgħajfa: l-iskema trid taħsibha minn qabel u tagħmlilha migrazzjoni meta jinbidlu l-affarijiet; l-iskalar orizzontali fuq bosta servers huwa aktar diffiċli milli għall-familji .
  • Prodotti: PostgreSQL, MySQL/MariaDB, Microsoft SQL Server, Oracle, SQLite.
  • Meta tieħu: utenti, ordnijiet, flus, maħżen — kullimkien fejn id-data marbuta u żball ta’ kitba mhux aċċettabbli. Għal prodott ġdid din hija l-għażla bħala default.

Databases ċavetta-valur: dizzjunarju b’veloċità massima

Mod ta’ ħażna: dizzjunarju ġganti wieħed «ċavetta → valur», l-aktar spiss fil-memorja operattiva. La tabelli u lanqas rabtiet: poġġejt biċ-ċavetta — ġbidt biċ-ċavetta f’frazzjoni ta’ millisekonda.

-- Dan mhux SQL, dawn huma kmandi ta’ Redis
SET session:8f3a '{"user_id": 42}'
GET session:8f3a
keyvalueuser:42Anna · Moscowcart:42[milk, cheese]sess:9factive until 18:40lookup by key — instantcache · sessions · carts — Redis
Ċavetta-valur: aċċess istantanju biċ-ċavetta eżatta — u l-ebda mistoqsija «skont il-kontenut».
  • Naħat b’saħħithom: veloċità, sempliċità, skalar faċli.
  • Naħat dgħajfa: mistoqsijiet biss biċ-ċavetta eżatta — il-mistoqsija «sib is-sessjonijiet kollha tal-klijenti minn Moska» ma tistax issaqsi lil dan il-format; il-ġewwieni tal-valur huwa opak għad-database.
  • Prodotti: Redis, Memcached, Amazon DynamoDB.
  • Meta tieħu: cache, sessjonijiet, contatori, kjuwijiet, klassifiki — data sħuna ħdejn id-database prinċipali, mhux minflokha.

Databases dokumentali: JSON flessibbli

Mod ta’ ħażna: ir-rekords huma dokumenti , miġbura f’kollezzjonijiet. L-iskema ma tiġix iddikjarata minn qabel: arloġġ intelliġenti għandu kamp «ħajja tal-batterija», hoodie għandu «tabella tal-qisien», u ż-żewġ dokumenti joqogħdu bi kwiet fl-istess kollezzjoni. L-istrutturi mwaħħlin jinħażnu direttament ġewwa d-dokument, mingħajr tabelli separati.

document 1document 2{name: "Mouse",price: 390,tags: ["hit"]}{name: "Food",brand: "Kote",specs: {weight: "2 kg"}}fields and nesting differ — schema is flexiblecatalogs · profiles · CMS — MongoDB
Il-mudell dokumentali: dokumenti JSON flessibbli b’settijiet differenti ta’ kampi jgħixu fl-istess kollezzjoni.
  • Naħat b’saħħithom: struttura flessibbli, id-dokument jinqara kollu b’aċċess wieħed, komdu għal katalgi b’attributi eteroġeni u għal prototipi mgħaġġla.
  • Naħat dgħajfa: ir-rabtiet bejn id-dokumenti huma r-responsabbiltà tal-applikazzjoni, sħiħ kważi ma jeżistix; mingħajr dixxiplina l-kollezzjoni ssir żoo ta’ formati inkompatibbli.
  • Prodotti: MongoDB, Couchbase, Firestore.
  • Meta tieħu: kontenut, katalgi b’kampi differenti ħafna, profili u settings.

Il-konfini tal-familji, fil-fatt, mhumiex ċari: PostgreSQL jaf jaħżen dokumenti f’kolonna tat-tip jsonb u jibni indiċijiet fuqhom — spiss dan jissodisfa l-bżonn «dokumentali» mingħajr it-tieni database:

-- Eżempju barra l-istampa tagħna: attrs — kolonna tat-tip jsonb
SELECT name, attrs->>'color' AS color
FROM catalog
WHERE attrs @> '{"brand": "Kotomarket"}';

Databases kolonnari: analitika fuq biljuni ta’ ringieli

Mod ta’ ħażna: il-valuri ma jinsabux ringiela b’ringiela, imma skont il-kolonni: il-prezzijiet kollha — flimkien, id-dati kollha — flimkien. Il-mistoqsija «valur medju tal-ordni skont ix-xahar» taqra mid-diska żewġ kolonni biss minflok it-tabella kollha, u valuri tal-istess tip jingħafsu tajjeb ħafna. Minn hawn il-veloċità fuq l-aggregati.

-- Il-ġeneru favorit ta’ database kolonnari (djalett ClickHouse: toYYYYMM — il-funzjoni tiegħu)
SELECT toYYYYMM(created_at) AS month, avg(total_amount) AS avg_check
FROM orders
GROUP BY month;
columnar storage: the table is laid out by columnsuser_ideventpricets39029905901490990AVG(price): only one column is readevent analytics · metrics — ClickHouse
Ħażna kolonnari: aggregat jaqra mid-diska biss il-kolonni meħtieġa, mhux it-tabella kollha ringiela b’ringiela.
  • Naħat b’saħħithom: aggregati u skennjar ta’ biljuni ta’ ringieli, kompressjoni qawwija.
  • Naħat dgħajfa: aġġornamenti u tħassir puntwali huma għaljin; taqra ringiela waħda kollha — itwal milli f’database bir-ringieli; il-piż tranżazzjonali — għal tali piż mhumiex maħsuba.
  • Prodotti: ClickHouse, BigQuery, Snowflake, Amazon Redshift.
  • Meta tieħu: analitika, rapporti, avvenimenti, logs, metriċi — normalment ħdejn id-database relazzjonali «tal-gwerra».

Hawn ukoll par termini li jħobbu fl-intervisti: (online processing — ħafna operazzjonijiet qosra ta’ kitba u qari, id-dinja ta’ PostgreSQL) u (online analytical processing — qari analitiku tqil fuq l-istorja kollha, id-dinja ta’ ClickHouse). Il-prodott jikteb f’database OLTP, l-analitika taqra kopja OLAP.

U l-aħħar familja — databases grafiċi

Meta r-rabtiet huma aktar importanti mir-rekords infushom — «ħbieb tal-ħbieb», rotot tal-konsenja, ktajjen ta’ rakkomandazzjonijiet — jieħdu databases grafiċi (Neo4j, Memgraph). Id-data fihom hija nodi (dawn huma rekords) u xfar (dawn huma r-rabtiet bejn ir-rekords); il-mixi mar-rabtiet ta’ kull fond huwa operazzjoni nattiva. F’database relazzjonali tali mixja hija sellum ta’ tgħaqqid ta’ tabelli, li mal-fond isir aktar tqil.

friendAnnBobCaraDanEvenodes are records, edges are links; "friends of friends" = two edges away
Graff: iċ-ċrieki-nodi huma rekords (pereżempju nies), il-linji-xfar huma r-rabtiet bejniethom. «Ħbieb tal-ħbieb» huwa sempliċement qbiż mal-xfar.

Mini-gwida: kif tagħżel database għal proġett

  1. Ibda mill-mistoqsijiet, mhux mid-data. Liema mistoqsijiet se jistaqsi l-prodott: puntwali «biċ-ċavetta», marbuta «min xtara xiex», analitiċi «kemm fix-xahar»?
  2. Bħala default — relazzjonali. Data marbuta flimkien mal-prezz tal-iżball (ordnijiet, ħlasijiet, stokk) — dan huwa PostgreSQL. L-aktar bidu sigur għal kważi kull prodott.
  3. Databases speċjalizzati — għal xogħol speċifiku, mhux «għar-riżerva». Jagħfsu l-qari sħun — żid cache fuq Redis. Kibret l-analitika — irreplika l-avvenimenti f’ClickHouse. Varjabbiltà selvaġġa tal-kampi — l-ewwel jsonb f’PostgreSQL, u biss meta ma jkunx biżżejjed — database dokumentali.
  4. Għodd il-prezz tat-tieni database. Kull ġdid huwa sinkronizzazzjoni tad-data, backups, monitoraġġ u teknoloġija oħra li t-tim irid jissapportja.

Tfixkil: tagħżel database «għax fil-moda». «Nieħdu MongoDB — mingħajr skema iktar malajr» jispiċċa li xorta tiddisinja l-iskema, biss issa r-regoli tagħha jgħixu fil-kodiċi tal-applikazzjoni, u mhux taħt il-protezzjoni tad-database. It-tfixkil bil-maqlub jiġri wkoll: iġġorr ClickHouse għal volumi li PostgreSQL jaggrega f’millisekondi. Id-database tagħżlu skont in-natura tal-mistoqsijiet u l-prezz tal-iżball — mhux skont il-hype.

ClickHouse huwa kolonnari għall-analitika: iħobbuh għall-kalkoli mgħaġġla fuq tabelli kbar ta’ avvenimenti u ordnijiet. Għandu d-djalett SQL tiegħu; fuq il-pjattaforma hemm trainer separat dwar ClickHouse. U l-istampa tagħna hija relazzjonali: aktar ’il quddiem QUERY jiftaħ l-indiċi u juri minn xiex hija magħmula — tabelli, ringieli u l-ħjut-ċwievet bejniethom.

Interview question

Mistoqsija minn intervista: liema tipi ta’ databases taf u kif tagħżel maħżen għal servizz ġdid?

Tweġiba qawwija: relazzjonali (PostgreSQL, MySQL) — skema stretta, rabtiet, tranżazzjonijiet ; ċavetta-valur (Redis) — cache, sessjonijiet, contatori; dokumentali (MongoDB) — dokumenti flessibbli; kolonnari (ClickHouse, BigQuery) — analitika fuq volumi kbar; grafiċi (Neo4j) — rabtiet fondi. Fl-għażla nibda min-natura tal-mistoqsijiet: bħala sors tal-verità nagħmel id-database relazzjonali, u dawk speċjalizzati nqabbadhom għal xogħol speċifiku (cache, analitika), mhux minflokha.

Mistoqsija addizzjonali: x’inhi d-differenza bejn u ?

Tweġiba qawwija: OLTP — ħafna tranżazzjonijiet qosra ta’ kitba u qari (ipproċessar tal-ordnijiet), bir-ringieli bħal PostgreSQL; OLAP — qari analitiku tqil u aggregati fuq l-istorja, DBMS kolonnari bħal ClickHouse. Spiss jaħdmu bħala par: il-prodott jikteb f’OLTP, l-analitika taqra replika OLAP.

Check yourself
Liema tip ta’ DB normalment jintgħażel għall-analitika ta’ volumi kbar ta’ data?