Bunachair sonraí gan an ceo

Na cineálacha bunachar sonraí atá ann

18 min
What you'll learn
  • na cúig theaghlach bunachar sonraí a aithint thar a chéile — coibhneasta, eochair-luach, doiciméid, colúnach, graf — de réir mar a stórálann siad sonraí agus de réir na dtascanna tipiciúla
  • stóras a roghnú a oireann do nádúr na gceisteanna: bunachar coibhneasta de réir réamhshocraithe, Redis/MongoDB/ClickHouse — do thasc ar leith, agus ní «de bharr go bhfuil sé faiseanta»
  • an difríocht idir agus a mhíniú, agus cén fáth a scríobhann an táirge chuig PostgreSQL agus a léann an anailís macasamhail cholúnach
  • riachtanas «doiciméadach» a aithint a chlúdaíonn colún jsonb in PostgreSQL gan dara bunachar

Ar an mbealach chuig an innéacs, stadann QUERY ag rannóg dhorcha den stóras. Taobh thiar den ghloine — clár na gcartlann de chuid na Domhain shean nár tháinig slán ón Scoilt Mhór: mhúch na nóid taisce ar dtús, tháinig na stórais doiciméad ina mbloghanna stróicthe, tá na braislí anailíse ina dtost ar fud earnálacha iomlána. Ach mhair seat coibhneasta «Kotomarket» go hiomlán — leis na naisc ar fad.

Ní hamháin na cinn choibhneasta

Do «Kotomarket» oireann bunachair choibhneasta dúinn go háirithe: luíonn ceannaitheoirí, orduithe agus táirgí go nádúrtha i dtáblaí le naisc. Is dóibh siúd a chaitear an cúrsa. Ach sa tionscal — i 2024 chomh maith le anois — castar cuir chuige eile ort freisin:

  • eochair-luach (Redis) — formáid an-tapa «eochair → luach», nuair is gá taifead simplí a fháil láithreach;
  • doiciméad-dhírithe (MongoDB) — stórálann siad doiciméid solúbtha, ina bhféadfadh an struchtúr difriú ó thaifead go taifead;
  • colúnach (ClickHouse) — láidir san anailís, nuair is gá meadrachtaí a ríomh go tapa thar mhéideanna ollmhóra sonraí.

Fanann formhór na DBMSanna móréilimh d’fhorbairt táirgí coibhneasta: PostgreSQL, MySQL, Oracle, MS SQL. Foghlaim SQL anseo agus beidh tú in ann sonraí a léamh go muiníneach i gcuideachtaí an-difriúla.

QUERY: Tá a phost féin ag gach cartlann: ceann a thugann luach ar luas, ceann eile ar sholúbthacht, an tríú ceann ar anailís. Bhí an t-ádh orainn: thit linn an ceann ina bhfuil gach rud nasctha le gach rud.

Dánléir dorcha de chartlanna múchta de chuid na Domhain shean de chruthanna éagsúla; ag a ceann scéimre tá holagram coibhneasta de tháblaí nasctha ag lonrú go hiomlán
Bíonn stórais de chineálacha éagsúla: eochair-luach, doiciméid, colúin. Is ceann coibhneasta é ár seat a mhair: táblaí agus naisc.

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.

Clár na dteaghlach: rangaithe go cúramach

Is leithscéal maith é an clár taobh thiar den ghloine chun teaghlaigh na mbunachar sonraí a iniúchadh i ndáiríre: «na cineálacha bunachar sonraí atá ann, agus cathain a roghnaíonn tú ceann» — ceann de na ceisteanna agallaimh is coitianta. Rachaimid trí chúig theaghlach as a chéile, gach ceann leagtha amach mar an gcéanna: an modh stórála, láidreachtaí agus laigí, táirgí, agus cathain a roghnaítear é.

Bunachair choibhneasta: scéimre docht agus naisc

Modh stórála: sraitheanna i dtáblaí le scéimre dearbhaithe roimh ré — tá cineál ag gach colún, ritheann naisc idir táblaí trí eochracha, agus cosnaíonn an an tsláine é féin: ní féidir ordú do cheannaitheoir nach ann dó a thaifeadadh. Ritear na hathruithe mar idirbhearta le ráthaíochtaí — scríobhtar «cruthaigh an t-ordú + laghdaigh an stoc» le chéile, nó ní scríobhtar ceachtar acu.

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
Ag a chroílár is tábla é bunachar coibhneasta: is taifid iad na sraitheanna, agus tá cineál féin ag gach colún. Cuirtear naisc bunaithe ar eochracha lena bharr — agus d’fhéadfadh nach mbeadh ann ach tábla amháin.
usersidnameproductsidtitleordersiduser_idproduct_idFK → PKproducts · banking · ordersPostgreSQL · MySQL
Agus nuair atá roinnt táblaí ann — nascann eochracha le chéile iad: scéimre docht agus naisc idir táblaí.
  • Láidreachtaí: SQL léiritheach (scagairí, comhcheangail táblaí, comhiomláin), sláine forfheidhmithe ag leibhéal an bhunachair, idirbhearta.
  • Laigí: caithfear an scéimre a mheabhrú roimh ré agus a aistriú nuair a athraíonn rudaí; tá scálú cothrománach thar go leor freastalaithe níos deacra ná do na teaghlaigh .
  • Táirgí: PostgreSQL, MySQL/MariaDB, Microsoft SQL Server, Oracle, SQLite.
  • Cathain a roghnaítear é: úsáideoirí, orduithe, airgead, stoc — áit ar bith a bhfuil na sonraí nasctha agus nach bhfuil drochscríobh inghlactha. Do tháirge nua, is é seo an rogha réamhshocraithe.

Bunachair eochair-luach: foclóir ar luas iomlán

Modh stórála: foclóir ollmhór amháin «eochair → luach», go minic sa chuimhne randamrochtana. Gan táblaí, gan naisc: cuir isteach de réir eochrach — tarraing amach de réir eochrach i mbrioscaí milleasoicind.

-- Ní SQL é seo, is orduithe Redis iad
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
Eochair-luach: rochtain láithreach de réir eochrach beachta — agus aon cheistiú «de réir inneachair».
  • Láidreachtaí: luas, simplíocht, scálú éasca.
  • Laigí: ní féidir ceist a chur ach de réir eochrach beachta — níl aon bhealach an cheist «aimsigh gach seisiún do cheannaitheoirí i Moscó» a chur ar an bhformáid seo; tá taobh istigh luacha doiléir don bhunachar.
  • Táirgí: Redis, Memcached, Amazon DynamoDB.
  • Cathain a roghnaítear é: taisce, seisiúin, áirimh, scuainí, cláir cheannairí — sonraí te taobh le do phríomhbhunachar, ní ina ionad.

Bunachair doiciméad: JSON solúbtha

Modh stórála: is doiciméid iad na taifid, grúpáilte i mbailiúcháin. Ní dhearbhaítear an scéimre roimh ré: tá réimse «saolré ceallraí» ag uaireadóir cliste, tá «cairt méideanna» ag húdaí, agus luíonn an dá dhoiciméad go socair sa bhailiúchán céanna. Stóráiltear struchtúir neadaithe díreach taobh istigh den doiciméad, gan táblaí ar leith.

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
An tsamhail doiciméid: doiciméid JSON solúbtha le tacair éagsúla réimsí ina gcónaí i mbailiúchán amháin.
  • Láidreachtaí: struchtúr solúbtha, léitear doiciméad go hiomlán in aon iarraidh amháin, áisiúil do chatalóga le tréithe ilghnéitheacha agus do fhréamhshamhlacha tapa.
  • Laigí: is cúram an fheidhmchláir iad na naisc idir doiciméid, agus ní bhíonn fíor- ann beagnach; gan smacht, iompaíonn bailiúchán ina zú d’fhormáidí neamh-chomhoiriúnacha.
  • Táirgí: MongoDB, Couchbase, Firestore.
  • Cathain a roghnaítear é: inneachar, catalóga le réimsí an-éagsúla, próifílí agus socruithe.

Tá an teorainn idir na teaghlaigh doiléir, dála an scéil: tá PostgreSQL in ann doiciméid a stóráil i gcolún de chineál jsonb agus innéacsanna a thógáil orthu — go minic clúdaíonn sé sin riachtanas «doiciméadach» gan dara bunachar:

-- Sampla taobh amuigh dár seat: is colún de chineál jsonb é attrs
SELECT name, attrs->>'color' AS color
FROM catalog
WHERE attrs @> '{"brand": "Kotomarket"}';

Bunachair cholúnacha: anailís thar na billiúin sraith

Modh stórála: ní luíonn na luachanna de réir sraithe ach de réir colún: na praghsanna go léir le chéile, na dátaí go léir le chéile. Léann ceist «meánseic de réir míonna» dhá cholún amháin ón diosca in ionad an tábla iomláin, agus comhbhrúitear luachanna den chineál céanna go hálainn. Sin é an luas ar chomhiomláin.

-- Seánra is ansa leis an mbunachar colúnach (canúint ClickHouse: is feidhm dá chuid í toYYYYMM)
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
Stóráil cholúnach: léann comhiomlán na colúin a theastaíonn uaidh amháin ón diosca, ní an tábla iomlán sraith ar shraith.
  • Láidreachtaí: comhiomláin agus scanadh na billiúin sraith, comhbhrú trom.
  • Laigí: tá nuashonruithe agus scriostaí spotacha costasach; tá léamh sraithe iomláine amháin níos moille ná i mbunachar sraithe; ní le haghaidh ualach idirbhirt a ceapadh iad.
  • Táirgí: ClickHouse, BigQuery, Snowflake, Amazon Redshift.
  • Cathain a roghnaítear é: anailís, tuairiscí, imeachtaí, logaí, meadrachtaí — de ghnáth taobh leis an mbunachar coibhneasta «beo».

Anseo freisin tá péire téarmaí ar maith le hagallóirí iad: (online processing — go leor oibríochtaí gairide scríofa agus léite, domhan PostgreSQL) agus (online analytical processing — léamha anailíse troma thar an stair ar fad, domhan ClickHouse). Scríobhann an táirge chuig bunachar OLTP, léann an anailís cóip OLAP.

Agus an teaghlach deireanach — bunachair ghraif

Nuair atá na naisc níos tábhachtaí ná na taifid féin — «cairde na gcairde», bealaí seachadta, slabhraí moltaí — roghnaítear bunachair ghraif (Neo4j, Memgraph). Is iad na sonraí iontu nóid (is iad seo na taifid) agus imill (is iad seo na naisc idir taifid); is gnáthoibríocht í trasnú nasc d’aon doimhneacht. I mbunachar coibhneasta is staighre comhcheangal táblaí é an trasnú sin, a éiríonn níos troime de réir doimhneachta.

friendAnnBobCaraDanEvenodes are records, edges are links; "friends of friends" = two edges away
Graf: is taifid iad na nóid chiorclacha (daoine, abair), is naisc eatarthu iad na himill líne. Níl i «cairde na gcairde» ach léim feadh na n-imeall.

Mion-treoir: conas bunachar a roghnú do thionscadal

  1. Tosaigh leis na ceisteanna, ní leis na sonraí. Cad iad na ceisteanna a chuirfidh an táirge: cinn spotacha «de réir eochrach», cinn nasctha «cé a cheannaigh céard», cinn anailíse «cé mhéad sa mhí»?
  2. De réir réamhshocraithe — coibhneasta. Sonraí nasctha móide costas ard botúin (orduithe, íocaíochtaí, stoc) — sin PostgreSQL. An tús is sábháilte do bheagnach aon táirge.
  3. Bunachair speisialaithe — do thasc ar leith, ní «mar chúltaca». Tá léamha te ag cur brú ort — cuir taisce ar Redis. D’fhás an anailís — macasamhlaigh imeachtaí chuig ClickHouse. Athraitheacht fhiáin sna réimsí — jsonb in PostgreSQL ar dtús, agus ní go dtí nach leor sin — bunachar doiciméad.
  4. Áirigh costas an dara bunachair. Ciallaíonn gach nua sioncronú sonraí, cúltacaí, monatóireacht agus teicneolaíocht eile fós don fhoireann le cothabháil.

Tuisle: bunachar a roghnú «de bharr go bhfuil sé faiseanta». Críochnaíonn «Bainimis úsáid as MongoDB — tá gan scéimre níos tapúla» le scéimre á dhearadh agat ar aon nós, ach anois cónaíonn a rialacha i gcód an fheidhmchláir in ionad faoi chosaint an bhunachair. Tarlaíonn an tuisle eile freisin: ClickHouse a tharraingt isteach do mhéideanna a chomhiomlánaíonn PostgreSQL i milleasoicindí. Roghnaítear bunachar de réir nádúr na gceisteanna agus costas an bhotúin — ní de réir an fhuadair.

Is colúnach é ClickHouse don anailís: is breá le daoine é mar gheall ar ríomhanna tapa thar tháblaí móra imeachtaí agus orduithe. Tá a chanúint SQL féin aige; tá oiliúnóir ClickHouse ar leith ar an ardán. Ach is ceann coibhneasta é ár seat: ar aghaidh osclaíonn QUERY an t-innéacs agus taispeánann sé céard as a bhfuil sé déanta — táblaí, sraitheanna, agus na snáitheanna-eochrach eatarthu.

Interview question

Ceist agallaimh: cad iad na cineálacha bunachar sonraí is eol duit, agus conas a roghnódh tú stóras do sheirbhís nua?

Freagra láidir: coibhneasta (PostgreSQL, MySQL) — scéimre docht, naisc, idirbhearta ; eochair-luach (Redis) — taisce, seisiúin, áirimh; doiciméad (MongoDB) — doiciméid solúbtha; colúnach (ClickHouse, BigQuery) — anailís thar mhéideanna móra; graf (Neo4j) — naisc dhomhain. Téim de réir nádúr na gceisteanna agus mé ag roghnú: déanaim bunachar coibhneasta den fhoinse fírinne, agus tarraingím cinn speisialaithe isteach do thasc ar leith (taisce, anailís), agus ní ina n-ionad.

Ceist bhreise: cén difríocht atá idir agus ?

Freagra láidir: is é OLTP go leor idirbhearta gairide scríofa agus léite (orduithe a dhéanamh), le DBMSanna sraithe ar nós PostgreSQL; is é OLAP léamha anailíse troma agus comhiomláin thar an stair, le DBMSanna colúnacha ar nós ClickHouse. Is minic a oibríonn siad mar phéire: scríobhann an táirge chuig OLTP, léann an anailís macasamhail OLAP.

Check yourself
Cén cineál bunachair a roghnaítear go hiondúil don anailís ar mhéideanna móra sonraí?