Stòr-dàta Messenger (pàirt 1): dealbhadh am frèam bunaiteach

Mar a nì thu eadar-theangachadh air riatanasan gnìomhachais gu structaran dàta sònraichte a’ cleachdadh eisimpleir de bhith a’ dealbhadh stòr-dàta teachdaire bhon fhìor thoiseach.

Stòr-dàta Messenger (pàirt 1): dealbhadh am frèam bunaiteach
Cha bhi ar bunait cho mòr agus cho sgaoilte, mar air VKontakte no Badoo, ach “mar sin a bha e”, ach bha e math - obrachail, luath agus freagarrach air aon fhrithealaiche PostgreSQL - gus an urrainn dhut eisimpleir air leth den t-seirbheis a chleachdadh an àiteigin air an taobh, mar eisimpleir.

Mar sin, cha bhith sinn a’ beantainn ri cùisean sharding, ath-riochdachadh agus siostaman geo-sgaoilte, ach cuiridh sinn fòcas air na fuasglaidhean sgemataigeach taobh a-staigh an stòr-dàta.

Ceum 1: Beagan fiosrachaidh mu ghnìomhachas

Cha bhith sinn a’ dealbhadh ar teachdaireachdan gu h-eas-chruthach, ach an àite sin ga thoirt a-steach don àrainneachd. lìonra sòisealta corporra’S e sin, chan e a-mhàin gu bheil ar daoine a’ “cur teachdaireachdan gu chèile”, ach a’ conaltradh ri chèile ann an co-theacsa fuasgladh dhuilgheadasan gnìomhachais sònraichte.

Dè an seòrsa ghnìomhan a tha romh ghnìomhachas? Seallaidh sinn air eisimpleir Vasily, ceannard na roinne leasachaidh.

  • "Nikolai, feumaidh am pasgan seo a bhith air a chàradh an-diugh!"
    Tha seo a’ ciallachadh gum faodar an conaltradh a dhèanamh ann an co-theacsa cuid de sgrìobhainn.
  • "Kolya, a bheil thu a' dol gu Dota a-nochd?"
    Tha seo a’ ciallachadh gum faod eadhon aon phaidhir de luchd-labhairt conaltradh a dhèanamh aig an aon àm. air diofar chuspairean.
  • "Peadar, Nikolai, thoiribh sùil anns a' cheangal airson liosta phrìsean an fhrithealaiche ùir."
    Mar sin, faodaidh aon teachdaireachd a bhith ann iomadh neach-faighinnDh’fhaodadh gum bi am brath seo a’ gabhail a-steach faidhlichean ceangailte.
  • "Semyon, thoir sùil ort fhèin cuideachd."
    Agus bu chòir roghainn a bhith ann airson cur ri conaltradh a tha ann mar-thà. cuireadh a thoirt do bhall ùr.

Stadamaid an-dràsta air an liosta seo de fheumalachdan "follaiseach".

Às aonais tuigse air mion-fhiosrachadh an obair agus na cuingeadan a chuireas i an sàs, tha e duilich dealbhadh èifeachdach Tha e cha mhòr do-dhèanta sgeama an stòr-dàta fhuasgladh.

Ceum 2: Cuairt Lòdaig as ìsle

Gu ruige seo, tha an siostam glè choltach ri conaltradh post-d – inneal gnìomhachais traidiseanta. Gu dearbh, tha mòran ghnìomhan gnìomhachais coltach ri chèile a thaobh algairim, agus mar sin bidh na h-innealan airson an fhuasgladh coltach ri chèile a thaobh structar.

Glacamaid an diagram loidsigeach a thig às a sin de dhàimhean eintiteas. Gus tuigse nas fhasa a thoirt seachad, cleachdaidh sinn an riochdachadh as prìomhadaiche. Modalan ER às aonais nan duilgheadasan a tha an lùib notaichean UML no IDEF:

Stòr-dàta Messenger (pàirt 1): dealbhadh am frèam bunaiteach

Anns an eisimpleir againne, tha an neach, an sgrìobhainn, agus am faidhle dà-chànanach "corp" nan eintiteasan "taobh a-muigh" a tha ann gu neo-eisimeileach às aonais ar seirbheis. Mar sin, làimhsichidh sinn iad mar iomraidhean "gu àiteigin" le UUID.

Tarraing sgeamaichean cho sìmplidh 's a ghabhas — Chan eil a’ mhòr-chuid de na daoine a sheallas tu dhaibh nan eòlaichean ann a bhith a’ leughadh UML/IDEF. Ach — bi cinnteach gun dèan thu dealbh.

Ceum 3: Dealbhaich structar a’ bhùird

Mu dheidhinn ainmean chlàran is raointeanFaodar dèiligeadh ri ainmean achaidhean is bùird “Ruiseanach” ann an dòigh eadar-dhealaichte, ach tha seo na chùis blas. Air sgàth gu bheil an an seo aig Tensor chan eil luchd-leasachaidh cèin ann, agus leigidh PostgreSQL leinn ainmean a thoirt seachad eadhon ann an hieroglyphs, ma tha dùinte ann an luachan, an uairsin is fheàrr leinn nithean ainmeachadh gu soilleir agus gu soilleir gus nach bi eadar-dhealachaidhean ann.
Leis gu bheil tòrr dhaoine againn a’ sgrìobhadh teachdaireachdan aig an aon àm, faodaidh cuid dhiubh seo a dhèanamh eadhon ann am modh far-loidhne, an uairsin is e an roghainn as sìmplidh cleachd UUIDan mar chomharraichearan Chan ann a-mhàin airson eintiteasan taobh a-muigh, ach airson a h-uile nì taobh a-staigh na seirbheis againn. A bharrachd air an sin, faodar an gineadh eadhon air taobh an neach-dèiligidh—cuidichidh seo sinn le bhith a’ cumail a’ dol le teachdaireachdan rè ùine ghoirid far nach eil stòr-dàta ri fhaighinn, agus tha an coltachd gum bi bualaidhean ann gu math ìosal.

Bidh structar garbh nan clàran san stòr-dàta againn coltach ri seo:
Clàran: RU

CREATE TABLE "Тема"(
  "Тема"
    uuid
      PRIMARY KEY
, "Документ"
    uuid
, "Название"
    text
);

CREATE TABLE "Сообщение"(
  "Сообщение"
    uuid
      PRIMARY KEY
, "Тема"
    uuid
, "Автор"
    uuid
, "ДатаВремя"
    timestamp
, "Текст"
    text
);

CREATE TABLE "Адресат"(
  "Сообщение"
    uuid
, "Персона"
    uuid
, PRIMARY KEY("Сообщение", "Персона")
);

CREATE TABLE "Файл"(
  "Файл"
    uuid
      PRIMARY KEY
, "Сообщение"
    uuid
, "BLOB"
    uuid
, "Имя"
    text
);

Clàran: EN

CREATE TABLE theme(
  theme
    uuid
      PRIMARY KEY
, document
    uuid
, title
    text
);

CREATE TABLE message(
  message
    uuid
      PRIMARY KEY
, theme
    uuid
, author
    uuid
, dt
    timestamp
, body
    text
);

CREATE TABLE message_addressee(
  message
    uuid
, person
    uuid
, PRIMARY KEY(message, person)
);

CREATE TABLE message_file(
  file
    uuid
      PRIMARY KEY
, message
    uuid
, content
    uuid
, filename
    text
);

Is e an dòigh as fhasa air cruth a mhìneachadh tòiseachadh air graf nan ceanglaichean a “dhì-cheangal”. bho chlàran nach eil air an ainmeachadh sinn fhèin do dhuine sam bith.

Ceum 4: Comharraich feumalachdan nach eil follaiseach

Sin agad e, tha sinn air stòr-dàta a dhealbhadh as urrainn dhut sgrìobhadh thuige agus air dòigh air choireigin leugh.

Cuireamaid sinn fhèin ann am brògan neach-cleachdaidh na seirbheis againn—dè a bhiodh sinn airson a dhèanamh leis?

  • Teachdaireachdan mu dheireadh
    seo air a sheòrsachadh gu cronaigeach Clàr de na teachdaireachdan "agam" stèidhichte air diofar shlatan-tomhais. Càite a bheil mi nam aon de na luchd-faighinn, càite a bheil mi nam ùghdar, càite an deach fios a chur thugam ach nach do fhreagair mi, càite nach deach freagairt a thoirt dhomh, …
  • Com-pàirtichean na conaltraidh
    Cò a tha a’ gabhail pàirt anns a’ chòmhradh fhada, fhada seo idir?

Leigidh an structar againn leinn an dà dhuilgheadas seo fhuasgladh "san fharsaingeachd," ach chan ann gu sgiobalta. Is e an duilgheadas, airson seòrsachadh taobh a-staigh a’ chiad dhuilgheadas, gun chomas clàr-amais a chruthachadh, freagarrach do gach aon de na com-pàirtichean (agus feumar na clàran uile a thoirt a-mach), agus gus an dàrna fear fhuasgladh tha e riatanach tarraing a-mach a h-uile teachdaireachd air cuspair.

Faodaidh gnìomhan cleachdaiche gun dùil dùbhlan mòr a chruthachadh. tar-chur air cinneasachd.

Ceum 5: Dì-àbhaisteachadh Glic

Thèid an dà dhuilgheadas againn fhuasgladh le clàran a bharrachd, a nì sinn pàirt dhùblaichte den dàta, riatanach airson clàran-amais a chruthachadh orra a tha freagarrach airson ar gnìomhan.
Stòr-dàta Messenger (pàirt 1): dealbhadh am frèam bunaiteach

Clàran: RU

CREATE TABLE "РеестрСообщений"(
  "Владелец"
    uuid
, "ТипРеестра"
    smallint
, "ДатаВремя"
    timestamp
, "Сообщение"
    uuid
, PRIMARY KEY("Владелец", "ТипРеестра", "Сообщение")
);
CREATE INDEX ON "РеестрСообщений"("Владелец", "ТипРеестра", "ДатаВремя" DESC);

CREATE TABLE "УчастникТемы"(
  "Тема"
    uuid
, "Персона"
    uuid
, PRIMARY KEY("Тема", "Персона")
);

Clàran: EN

CREATE TABLE message_registry(
  owner
    uuid
, registry
    smallint
, dt
    timestamp
, message
    uuid
, PRIMARY KEY(owner, registry, message)
);
CREATE INDEX ON message_registry(owner, registry, dt DESC);

CREATE TABLE theme_participant(
  theme
    uuid
, person
    uuid
, PRIMARY KEY(theme, person)
);

An seo, chleachd sinn dà dhòigh-obrach àbhaisteach a thathas a’ cleachdadh nuair a thathar a’ cruthachadh chlàran taice:

  • Iomadachadh chlàran
    Bidh sinn a’ gineadh iomadh clàr leanmhainn airson gach clàr teachdaireachd tùsail ann an diofar sheòrsaichean chlàran airson diofar shealbhadairean—an neach a chuir an teachdaireachd agus an neach a gheibh e. Ach, tha gach aon de na clàran a-nis a’ fuireach san chlàr-amais, oir ann an cùis àbhaisteach, cha bhith sinn airson ach a’ chiad duilleag fhaicinn.
  • Neo-àbhaisteachd chlàran
    A h-uile uair a chuireas tu teachdaireachd taobh a-staigh cuspair sònraichte, chan fheum thu ach sgrùdadh a dhèanamh a bheil an inntrigeadh ann mu thràth. Mura h-eil, cuiridh tu ris an "fhaclair" agad e.

Anns an ath phàirt den artaigil bruidhnidh sinn mu dheidhinn cur an gnìomh roinneadh a-steach do structar ar stòr-dàta.

Source: www.habr.com

Ceannaich aoigheachd earbsach airson làraich le dìon DDoS, frithealaichean VPS VDS 🔥 Ceannaich aoigheachd làrach-lìn earbsach le dìon DDoS, frithealaichean VPS VDS | ProHoster