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

Ungazihumusha kanjani izimfuneko zebhizinisi ezinhlakeni ezithile zedatha usebenzisa isibonelo sokudizayina 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 kwaba", kodwa kwakukuhle - kusebenza, kushesha futhi lingana kuseva eyodwa I-PostgreSQL - ukuze ukwazi ukusebenzisa isibonelo esihlukile senkonzo endaweni ethile eceleni, isibonelo.

Ngakho-ke, ngeke sithinte izindaba zokwabelana, ukuphindaphinda kanye nezinhlelo ezisabalaliswa nge-geo, kodwa sizogxila kuzixazululo zesekethe ngaphakathi kwesizindalwazi.

Isinyathelo 1: Ezinye izici zebhizinisi

Ngeke siklame imilayezo yethu ngokusobala, kodwa sizoyihlanganisa nemvelo inethiwekhi yezokuxhumana yenkampani. Okusho ukuthi, abantu bakithi "abahambisani nje," kodwa baxhumana bodwa esimweni sokuxazulula izinkinga ezithile zebhizinisi.

Futhi yini imisebenzi yebhizinisi? .. Ake sibheke isibonelo sikaVasily, inhloko yomnyango wezokuthuthukiswa.

  • "Nikolai, kulo msebenzi sidinga isiqeshana namuhla!"
    Lokhu kusho ukuthi izincwadi zingenziwa esimweni sabanye idokhumenti.
  • "Kolya, uya e-Dota namhlanje kusihlwa?"
    Okusho ukuthi, ngisho nepheya elilodwa labaxhumanisi lingaxhumana kanyekanye ngezihloko ezihlukahlukene.
  • "Peter, Nikolay, bheka okunamathiselwe kuhlu lwamanani eseva entsha."
    Ngakho, umlayezo owodwa ungaba abamukeli abambalwa. Kulokhu, umlayezo ungaqukatha Amafayela anamathiselwe.
  • "Semyon, bheka futhi."
    Futhi kufanele kube nethuba lokungena ezingxoxweni ezikhona mema ilungu elisha.

Asigxile kulolu hlu lwezidingo “ezisobala” okwamanje.

Ngaphandle kokuqonda imininingwane esetshenzisiwe yenkinga kanye nemikhawulo enikezwe yona, klama ngempumelelo I-schema yedatha yokuyixazulula cishe akunakwenzeka.

Isinyathelo sesi-2: Isekhethi Enengqondo Encane

Kuze kube manje, yonke into isebenza ngokufana kakhulu nezincwadi ze-imeyili - ithuluzi lebhizinisi lendabuko. Yebo, "i-algorithmically" izinkinga eziningi zebhizinisi ziyefana, ngakho-ke amathuluzi wokuzixazulula azofana ngokwesakhiwo.

Masilungise umdwebo onengqondo osuvele utholiwe wobudlelwano bebhizinisi. Ukuze senze imodeli yethu iqondeke kalula, sizosebenzisa inketho yesibonisi yakudala kakhulu Amamodeli we-ER ngaphandle kwezinkinga ze-UML noma i-IDEF yamanothi:

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

Esibonelweni sethu, umuntu, idokhumenti kanye "nomzimba" kanambambili wefayela kuyizinhlangano "zangaphandle" ezikhona ngokuzimela ngaphandle kwesevisi yethu. Ngakho-ke, sizovele sibabone ngokuzayo njengezixhumanisi ezithile “ndawana thize” nge-UUID.

Dweba imidwebo elula ngangokunokwenzeka - abantu abaningi ozobakhombisa bona ababona ochwepheshe bokufunda i-UML/IDEF. Kodwa qiniseka ukudweba.

Isinyathelo sesi-3: Ukudweba 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 abantu abaningi besibhalela imiyalezo ngesikhathi esisodwa, abanye babo bangase bakwenze lokhu okungaxhunyiwe ku-inthanethi, ke inketho elula kakhulu sebenzisa ama-UUID njengezihlonzi hhayi kuphela izinhlangano zangaphandle, kodwa futhi zonke izinto ngaphakathi service yethu. Ngaphezu kwalokho, zingakhiqizwa ngisho nasohlangothini lweklayenti - lokhu kuzosisiza sisekele ukuthumela imilayezo lapho isizindalwazi singatholakali okwesikhashana, futhi amathuba okushayisana aphansi kakhulu.

Isakhiwo setafula esalungiswa kusizindalwazi sethu sizobukeka 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
);

Into elula uma uchaza ifomethi ukuqala "ukuqaqa" igrafu yokuxhuma kusukela kumathebula okungabaluliwe bona kumuntu.

Isinyathelo sesi-4: Thola izidingo ezingabonakali

Yilokho kuphela, siklame i-database ongabhala kuyo kahle futhi ngandlela-thile funda.

Masizibeke ezicathulweni zabasebenzisi benkonzo yethu - yini esifuna ukuyenza ngayo?

  • Imilayezo yokugcina
    Yilokho kuhlungwe ngokulandelana kwesikhathi ukubhaliswa kwemilayezo "yami" ngokusekelwe kumibandela ehlukahlukene. Lapho ngingomunye wabamukeli, lapho ngikhona umbhali, lapho bangibhalela khona futhi angizange ngiphendule, lapho abazange bangiphendule, ...
  • 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 umsebenzi wokuqala ayikwazi ukudala inkomba, elungele ngamunye wabahlanganyeli (futhi kuzodingeka ukhiphe wonke amarekhodi), futhi ukuxazulula elesibili olidingayo khipha yonke imilayezo kulesi sihloko.

Imisebenzi yomsebenzisi engahlosiwe ingase ibeke isibindi ukuwela ekukhiqizeni.

Isinyathelo sesi-5: I-Smart Denormalization

Zombili izinkinga zethu zizoxazululwa ngamathebula engeziwe esizokwenza kuwo phinda ingxenye yedatha, okudingekayo ukwenza kuzo izinkomba 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 amathebula asizayo:

  • Ukuphindaphinda amarekhodi
    Sisebenzisa irekhodi lomlayezo wokuqala, sakha amarekhodi ambalwa okulandelela ezinhlotsheni ezahlukene zamarejista kubanikazi abahlukene - kokubili komthumeli kanye nomamukeli. Kodwa irejista ngayinye manje iwela kunkomba - phela, esimweni esivamile, sizofuna ukubona ikhasi lokuqala kuphela.
  • Amarekhodi ayingqayizivele
    Ngaso sonke isikhathi uma uthumela umlayezo phakathi kwesihloko esithile, kwanele ukuhlola ukuthi lokho okufakiwe sekuvele kukhona yini. Uma kungenjalo, yengeze “kusichazamazwi” sethu.

Engxenyeni elandelayo yesihloko sizokhuluma ngayo ukuqaliswa kokuhlukanisa esakhiweni sesizindalwazi sethu.

Source: www.habr.com

Engeza amazwana