Isiseko sedatha yoMthunywa (icandelo 1): ukuyila isiseko sesiseko

Ungaguqulela njani iimfuno zoshishino kwizakhiwo ezithile zedatha usebenzisa umzekelo wokuyila i-database yezithunywa ukusuka ekuqaleni.

Isiseko sedatha yoMthunywa (icandelo 1): ukuyila isiseko sesiseko
Isiseko sethu asiyi kuba sikhulu kwaye sisasazwe, njenge "VKontakte". okanye Badoo, kodwa "ukuze kube", kodwa yayilungile - iyasebenza, ikhawuleza kwaye ngena kwiseva enye I-PostgreSQL - ukuze ukwazi ukuhambisa umzekelo owahlukileyo wenkonzo kwindawo ethile ecaleni, umzekelo.

Ngoko ke, asiyi kuchaphazela imiba ye-sharding, ukuphindaphinda kunye ne-geo-distributed systems, kodwa iya kugxininisa kwizisombululo zesekethe ngaphakathi kwedatha.

Inyathelo 1: Ezinye iinkcukacha zeshishini

Asiyi kuyila imiyalezo yethu ngokungafihlisiyo, kodwa siya kuyidibanisa nokusingqongileyo inethiwekhi yoluntu yoshishino. Oko kukuthi, abantu bethu "abahambelani nje," kodwa banxibelelana kumxholo wokusombulula iingxaki ezithile zoshishino.

Kwaye yintoni imisebenzi yeshishini? .. Makhe sijonge umzekelo kaVasily, intloko yesebe lophuhliso.

  • "Nikolai, kulo msebenzi sifuna isiqwenga namhlanje!"
    Oku kuthetha ukuba imbalelwano inokuqhutywa ngokomxholo wabanye uxwebhu.
  • “Kolya, uya eDota ngobu busuku?”
    Oko kukuthi, isibini esinye se-interlocutors sinokunxibelelana ngaxeshanye kwizihloko ezahlukeneyo.
  • "Peter, Nikolay, jonga kuncamatheliso kuluhlu lwexabiso leseva entsha."
    Ke, umyalezo omnye unokuba nawo abamkeli abaninzi. Kule meko, umyalezo unokuqulatha Iifayile ezincanyathiselwe.
  • "Semyon, jonga nawe."
    Kwaye kufuneka kubekho ithuba lokungena kwimbalelwano ekhoyo mema ilungu elitsha.

Masihlale kolu luhlu lweemfuno "ezicacileyo" okwangoku.

Ngaphandle kokuqonda iinkcukacha ezisetyenzisiweyo zengxaki kunye nezithintelo ezinikezelwe kuyo, yila esebenzayo I-schema yedatha yokuyicombulula phantse ayinakwenzeka.

Inyathelo lesi-2: ISekethe yeNgcaciso encinci

Ukuza kuthi ga ngoku, yonke into isebenza ngokufana kakhulu nembalelwano ye-imeyile - isixhobo seshishini lemveli. Ewe, "i-algorithmically" ezininzi iingxaki zoshishino zifana enye kwenye, ngoko ke izixhobo zokuzisombulula ziya kufana nolwakhiwo.

Masilungise umzobo osele uwufumene wobudlelwane bequmrhu. Ukwenza imodeli yethu ibe lula ukuyiqonda, siya kusebenzisa eyona ndlela yakudala yokubonisa Iimodeli ze-ER ngaphandle kweengxaki ze UML okanye IDEF yamanqaku:

Isiseko sedatha yoMthunywa (icandelo 1): ukuyila isiseko sesiseko

Kumzekelo wethu, umntu, uxwebhu kunye nebhinari "umzimba" wefayile ngamaqumrhu "angaphandle" akhoyo ngokuzimeleyo ngaphandle kwenkonzo yethu. Ke ngoko, siya kubabona nje kwikamva njengamakhonkco athile “ndaweni ithile” nge-UUID.

Zoba imizobo elula kangangoko - uninzi lwabantu oya kubabonisa kubo ayizo iingcali ekufundeni i-UML / IDEF. Kodwa qiniseka ukuba uyazoba.

Inyathelo lesi-3: Ukuzoba ubume betafile

Malunga netheyibhile kunye namagama ommandlaAmagama "esiRashiya" amasimi kunye neetafile angaphathwa ngendlela eyahlukileyo, kodwa lo mbandela wokunambitha. Ngenxa yokuba apha eTensor akukho baphuhlisi bangaphandle, kwaye i-PostgreSQL isivumela ukuba sinike amagama nakwi-hieroglyphs, ukuba kunjalo efakwe kwizicatshulwa, emva koko sikhetha ukubiza izinto ngokucacileyo nangokucacileyo ukuze kungabikho zintlukwano.
Ekubeni abantu abaninzi besibhalela imiyalezo ngaxeshanye, abanye babo basenokwenza oku ngaphandle kweintanethi, ngoko olona khetho lulula lu sebenzisa ii-UUID njengezazisi hayi kuphela kwizigqeba zangaphandle, kodwa nazo zonke izinto ezingaphakathi kwinkonzo yethu. Ngaphezu koko, zinokuveliswa nakwicala lomxhasi - oku kuya kusinceda sixhase ukuthumela imiyalezo xa uvimba weenkcukacha ungafumanekiyo okwexeshana, kwaye amathuba okungqubana aphantsi kakhulu.

Uyilo lwesakhiwo setheyibhile kwisiseko sedatha yethu siya kujongeka ngolu hlobo:
Iitheyibhile : 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
);

Iitheyibhile: 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
);

Eyona nto ilula xa uchaza ifomathi kukuqalisa "ukukhulula" igrafu yoqhagamshelwano ukusuka kwiitafile ezingabhekiselwanga bona ngokwabo nakubani na.

Inyathelo lesi-4: Fumana iimfuno ezingacacanga

Yiyo loo nto, siyile isiseko sedatha apho ungabhala ngokugqibeleleyo kwaye ngandlela thile ukufunda.

Masizibeke ezihlangwini zabasebenzisi benkonzo yethu - sifuna ukwenza ntoni ngayo?

  • Imiyalezo yokugqibela
    Oku ihlelwe ngokolandelelwano ubhaliso lwemiyalezo "yeyam" esekwe kwiikhrayitheriya ezahlukeneyo. Apho ndingomnye wabamkeli, apho ndingumbhali, apho bandibhalela khona kwaye andizange ndiphendule, apho abazange baphendule kum, ...
  • Abathathi-nxaxheba kwimbalelwano
    Ngubani ode athathe inxaxheba kule ncoko inde nende?

Isakhiwo sethu sisivumela ukuba sisombulule zombini ezi ngxaki "ngokubanzi," kodwa kungekhona ngokukhawuleza. Ingxaki kukuba yokuhlela ngaphakathi komsebenzi wokuqala ayikwazi ukwenza isalathisi, ilungele ngamnye wabathathi-nxaxheba (kwaye kuya kufuneka ukhuphe zonke iirekhodi), kunye nokusombulula eyesibini oyifunayo. khupha yonke imiyalezo ngalo mxholo.

Imisebenzi engalindelekanga yomsebenzisi inokubeka isibindi ukuwela imveliso.

Inyathelo lesi-5: I-Smart Denormalization

Zombini iingxaki zethu ziya kusonjululwa ngeetheyibhile ezongezelelweyo esiya kuthi kuzo phinda inxalenye yedatha, kuyimfuneko ukwenza kuzo i-indices ezifanelekileyo kwimisebenzi yethu.
Isiseko sedatha yoMthunywa (icandelo 1): ukuyila isiseko sesiseko

Iitheyibhile : RU

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

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

Iitheyibhile: 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)
);

Apha sisebenzise iindlela ezimbini eziqhelekileyo ezisetyenziswayo xa kusenziwa iitafile ezincedisayo:

  • Ukuphindaphinda iirekhodi
    Ukusebenzisa irekhodi yomyalezo wokuqala, senza iirekhodi ezininzi zokulandela kwiintlobo ezahlukeneyo zeerejista kubanini abohlukeneyo - bobabini abathumeli kunye nabamkeli. Kodwa nganye irejista ngoku iwela kwisalathiso - emva kwayo yonke loo nto, kwimeko eqhelekileyo, siya kufuna ukubona kuphela iphepha lokuqala.
  • Iirekhodi ezizodwa
    Ngalo lonke ixesha uthumela umyalezo ngaphakathi kwesihloko esithile, kwanele ukujonga ukuba ungeno olunjalo sele lukhona. Ukuba akunjalo, yongeze “kwisichazi-magama” sethu.

Kwinxalenye elandelayo yenqaku siza kuthetha ngayo ukuphunyezwa kokwahlulahlula kwisakhiwo sedatabase yethu.

umthombo: www.habr.com

Yongeza izimvo