Isizindalwazi se-Messenger (ingxenye 1): ukuklama uhlaka oluyisisekelo

Uzihumusha kanjani izimfuneko zebhizinisi zibe izakhiwo zedatha ethile usebenzisa isibonelo sokuklama isizindalwazi sezithunywa kusukela ekuqaleni.

Isizindalwazi se-Messenger (ingxenye 1): ukuklama uhlaka oluyisisekelo
Isisekelo sethu ngeke sibe sikhulu futhi sisatshalaliswe, njenge-VKontakte noma Badoo, kodwa "ukuze kube", kodwa kwakukuhle - kusebenza, kushesha futhi lingana kuseva eyodwa I-PostgreSQL - ukuze ukwazi ukusebenzisa isibonelo esihlukile senkonzo endaweni ethile eceleni, isibonelo.

Ngakho-ke, ngeke sithinte ezindabeni zokwabiwa, ukuphindaphinda kanye nezinhlelo ezisabalaliswa nge-geo, kodwa sizogxila ezixazululweni zeskimu ngaphakathi kwesizindalwazi.

Isinyathelo 1: Imininingwane yebhizinisi elincane

Ngeke sidizayine imilayezo yethu ngendlela engabonakali, kodwa sizoyihlanganisa nemvelo. inethiwekhi yezokuxhumana yenkampaniOkungukuthi, abantu bakithi abagcini nje “ukuthumelana imiyalezo,” kodwa baxhumana bodwa esimweni sokuxazulula izinkinga ezithile zebhizinisi.

Hlobo luni lwemisebenzi ibhizinisi elibhekene nayo? Ake sibheke isibonelo sikaVasily, inhloko yomnyango wentuthuko.

  • "Nikolai, le nkinga idinga isichibi namuhla!"
    Lokhu kusho ukuthi ukuxhumana kungenziwa ngokwengqikithi yabathile idokhumenti.
  • "Kolya, uya e-Dota namhlanje kusihlwa?"
    Lokhu kusho ukuthi ngisho nepheya elilodwa labaxhumanisi lingaxhumana kanyekanye. ngezihloko ezihlukahlukene.
  • "Peter, Nikolai, bheka okunamathiselwe kwi-imeyili kohlu lwamanani eseva entsha."
    Ngakho, umlayezo owodwa ungaba amakheli amaningi. Umlayezo ungaqukatha amafayela anamathiselwe.
  • "Semyon, nawe ake ubheke."
    Futhi kufanele kube nenketho yokwengeza ezincwadini ezikhona. mema ilungu elisha.

Ake sime okwamanje kulolu hlu lwezidingo "ezisobala".

Ngaphandle kokuqonda imininingwane ebekiwe yomsebenzi kanye nezingqinamba ozibekayo, kunzima ukuklama ngempumelelo Cishe akunakwenzeka ukuxazulula uhlelo lwesizindalwazi.

Isinyathelo sesi-2: Isekhethi Enengqondo Encane

Kuze kube manje, uhlelo lubukeka lufana kakhulu nezincwadi ze-imeyili—ithuluzi lebhizinisi elivamile. Ngempela, imisebenzi eminingi yebhizinisi iyafana ngokwe-algorithm, ngakho-ke amathuluzi wokuyixazulula azofana ngokwesakhiwo.

Ake sithwebule umphumela womdwebo onengqondo wobudlelwano bebhizinisi. Ukuze kube lula ukuqonda, sizosebenzisa ukumelwa kwakudala kakhulu. Amamodeli we-ER ngaphandle kwezinkinga ze-UML noma i-IDEF yamanothi:

Isizindalwazi se-Messenger (ingxenye 1): ukuklama uhlaka oluyisisekelo

Esibonelweni sethu, umuntu, idokhumenti, "nomzimba" wefayela kanambambili kuyizinhlangano "zangaphandle" ezikhona ngokuzimela ngaphandle kwesevisi yethu. Ngakho-ke, sizovele sibaphathe njengezinkomba "zasendaweni ethile" nge-UUID.

Dweba izikimu njengoba elula ngangokunokwenzeka — Abantu abaningi ozobabonisa bona ababona ongoti ekufundeni i-UML/IDEF. Kodwa - qiniseka ukudweba.

Isinyathelo sesi-3: Dweba isakhiwo setafula

Mayelana namathebula namagama enkundlaAmagama "isiRashiya" amasimu namatafula angaphathwa ngendlela ehlukile, kodwa lokhu kuyindaba yokunambitha. Ngoba i lapha eTensor abekho abathuthukisi bangaphandle, futhi i-PostgreSQL isivumela ukuthi sinikeze amagama ngisho nakuma-hieroglyphs, uma kunjalo kufakwe izingcaphuno, bese sikhetha ukuqamba izinto ngokusobala nangokucacile ukuze kungabikho ukungezwani.
Njengoba sinabantu abaningi ababhala imiyalezo ngesikhathi esisodwa, abanye babo bangakwenza lokhu kumodi engaxhunyiwe ku-inthanethi, ke inketho elula kakhulu sebenzisa ama-UUID njengezihlonzi Hhayi okwezinkampani zangaphandle kuphela, kodwa kuzo zonke izinto ezingaphakathi kwenkonzo yethu. Ngaphezu kwalokho, zingakhiqizwa nakuhlangothi lweklayenti—lokhu kuzosisiza ukuthi sigcine ukuthunyelwa komlayezo ngesikhathi sokungatholakali kwesizindalwazi sesikhathi esifushane, futhi amathuba okushayisana aphansi kakhulu.

Ukwakheka kwamathebula kusizindalwazi sethu kuzobukeka kanje:
Amathebula: 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
);

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

Indlela elula yokuchaza ifomethi ukuqala "ukuqaqa" igrafu yokuxhumana kusukela kumathebula okungabaluliwe thina kumuntu.

Isinyathelo sesi-4: Thola izidingo ezingabonakali

Yilokho kuphela, siklame isizindalwazi ongabhalela kuso futhi ngandlela-thile funda.

Masizibeke ezicathulweni zabasebenzisi bensizakalo yethu—singathanda ukwenzani ngakho?

  • Imilayezo yokugcina
    Yilokho kuhlungwe ngokulandelana kwesikhathi Irejista yemilayezo "yami" esekelwe kumibandela ehlukahlukene. Lapho ngingomunye wabamukeli, lapho ngingumbhali khona, lapho ngithintwa khona kodwa ngangaphendula, lapho ngingaphendulwanga, ...
  • Abahlanganyeli bezincwadi
    Ubani obamba iqhaza kule ngxoxo ende, ende?

Isakhiwo sethu sisivumela ukuthi sixazulule zombili lezi zinkinga "ngokujwayelekile," kodwa hhayi ngokushesha. Inkinga ukuthi ukuhlunga ngaphakathi kwenkinga yokuqala ayikwazi ukudala inkomba, elungele ngamunye wabahlanganyeli (futhi wonke amarekhodi kuzodingeka akhishwe), futhi ukuxazulula elesibili kuyadingeka khipha yonke imilayezo ngesihloko.

Imisebenzi engahlosiwe yomsebenzisi ingaba inselele enkulu. ukuwela ekukhiqizeni.

Isinyathelo sesi-5: I-Smart Denormalization

Zombili izinkinga zethu zizoxazululwa ngamathebula engeziwe, esizowenza phinda ingxenye yedatha, okudingekayo ekwakhiweni kwezinkomba kuzo ezifanele imisebenzi yethu.
Isizindalwazi se-Messenger (ingxenye 1): ukuklama uhlaka oluyisisekelo

Amathebula: RU

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

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

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

Lapha sisebenzise izindlela ezimbili ezijwayelekile ezisetshenziswa lapho kwakhiwa amatafula asizayo:

  • Ukuphindaphindeka kwamarekhodi
    Senza amarekhodi okulandelela amaningi erekhodi ngalinye lomlayezo wokuqala ezinhlotsheni ezihlukene zokubhaliswa kwabanikazi abahlukene—kokubili umthumeli nomamukeli. Kodwa-ke, indawo yokubhalisa ngayinye isihlala kunkomba, njengoba esimweni esijwayelekile, sizofuna kuphela ukubona ikhasi lokuqala.
  • Ukuhluka kwamarekhodi
    Ngaso sonke isikhathi uma uthumela umlayezo phakathi kwesihloko esithile, udinga nje ukuhlola ukuthi okufakiwe sekuvele kukhona yini. Uma kungenjalo, uyengeza "kusichazamazwi sakho."

Engxenyeni elandelayo yesihloko sizokhuluma ngayo ukuqaliswa kokuhlukanisa esakhiweni sesizindalwazi sethu.

Source: www.habr.com

Thenga ukusingathwa okuthembekile kwamasayithi anokuvikelwa kwe-DDoS, amaseva e-VPS VDS 🔥 Thenga ukusingathwa kwewebhusayithi okuthembekile ngokuvikelwa kwe-DDoS, amaseva e-VPS VDS | ProHoster