database ea Messenger (karolo ea 2): karohano "bakeng sa phaello"

Re atlehile ho rala sebopeho sa database sa rona sa PostgreSQL bakeng sa ho boloka mangolo, selemo se fetile, basebelisi ba se tlatsa ka mafolofolo, 'me joale se na le limilione tsa lirekoto, mme... ntho e nngwe ya qala ho theoha butle.

database ea Messenger (karolo ea 2): karohano "bakeng sa phaello"
Taba ke hore Ha boholo ba tafole bo ntse bo hola, ho joalo le ka "botebo" ba li-index. - leha ho le joalo ka logarithmically. Empa ha nako e ntse e ea sena se qobella seva ho etsa mesebetsi e tšoanang ea ho bala / ho ngola sebetsa ka makhetlo a mangata maqephe a datahofeta qalong.

Ke hona moo ho tlang ho thusa karohano.

E re ke hlokomele hore ha re bue ka sharding, ke hore, ho aba data pakeng tsa li-database tse fapaneng kapa li-server. Hobane esita le ho arola data ho tse 'maloa li-server, u ke ke ua tlosa bothata ba li-index "ho ruruha" ha nako e ntse e ea. Ho hlakile hore haeba u ka khona ho kenya seva se secha ts'ebetsong letsatsi le leng le le leng, joale mathata a hau a ke ke a hlola a robala ho hang ka sefofaneng sa database e itseng.

Ha re na ho nahana ka lingoloa tse tobileng tsa ho kenya tšebetsong karohano "ka Hardware", empa mokhoa ka boeona - hore na o lokela ho "khaola likotoana" joang le hore na takatso e joalo e lebisa ho eng.

Khopolo

Ha re hlaloseng sepheo sa rona hape: re batla ho etsa bonnete ba hore kajeno, hosane, le ka selemo, palo ea data e baloang ke PostgreSQL nakong ea ts'ebetso efe kapa efe ea ho bala / ho ngola e lula e tšoana.

Bakeng sa leha e le efe data e bokelletsoeng ka tatellano (melaetsa, litokomane, li-log, li-archives, ...) khetho ea tlhaho e le senotlolo sa ho arola ke letsatsi/nako ya ketsahalo. Tabeng ea rona, ketsahalo e joalo e motsotso wa ho romela molaetsa.

Hlokomela hore basebelisi hoo e ka bang kamehla sebetsa feela le "tsa moraorao". data tse joalo - ba bala melaetsa ea morao-rao, ba hlahloba lintlha tsa morao-rao, ... Che, ha e le hantle, ba ka khona ho khutlela morao ka nako, empa ba etsa sena ka seoelo haholo.

Ho tsoa litšitisong tsena ho hlakile hore tharollo ea molaetsa o nepahetseng e tla ba likarolo tsa "letsatsi le letsatsi". - ka mor'a moo, mosebedisi oa rona o tla lula a bala se tlileng ho eena "kajeno" kapa "maobane".

Haeba re ngola le ho bala hoo e ka bang karolong e le 'ngoe feela motšehare, joale sena se boetse se re fa tšebeliso e nepahetseng haholoanyane ea memori le disk - kaha li-index tsohle tsa likarolo li kena habonolo ho RAM, ho fapana le tse "kholo le tse mafura" ho pholletsa le tafole.

kgato-kgato

Ka kakaretso, ntho e 'ngoe le e' ngoe e boletsoeng ka holimo e utloahala e le phaello e le 'ngoe e tsoelang pele. 'Me e ka finyelloa, empa bakeng sa sena re tla tlameha ho leka ka matla - hobane qeto ea ho arola e 'ngoe ea mekhatlo e lebisa tlhokong ea ho "bona" ​​e amanang.

Molaetsa, thepa le likhakanyo tsa ona

Kaha re nkile qeto ea ho fokotsa melaetsa ka matsatsi, hoa utloahala ho arola likarolo-thepa tse itšetlehileng ka tsona (lifaele tse khomaretsoeng, lenane la ba amohelang), le hape ka letsatsi la molaetsa.

Kaha o mong oa mesebetsi ea rona e tloaelehileng ke ho sheba lirejisete tsa melaetsa (tse sa baloang, tse kenang, kaofela), hoa utloahala ho li "hulela" ho arola ka matsatsi a melaetsa.

database ea Messenger (karolo ea 2): karohano "bakeng sa phaello"

Re eketsa senotlolo sa ho arola (letsatsi la molaetsa) ho litafole tsohle: baamoheli, faele, liregistries. Ha ua tlameha ho e eketsa molaetsa ka boeona, empa sebelisa DateTime e teng.

dikgwele

Kaha ho na le sehlooho se le seng feela bakeng sa melaetsa e mengata, ha ho na mokhoa oa ho "khaola" ka mokhoa o le mong; u tlameha ho itšetleha ka ntho e 'ngoe. Tabeng ea rona ho loketse letsatsi la molaetsa wa pele ka ngollano - ke hore, nako ea pōpo, ha e le hantle, ea sehlooho.

database ea Messenger (karolo ea 2): karohano "bakeng sa phaello"

Kenya konopo ea ho arola (letsatsi la sehlooho) litafoleng tsohle: sehlooho, monkakarolo.

Empa joale re na le mathata a mabeli ka nako e le 'ngoe:

  • Ke karolong efe eo ke lokelang ho sheba melaetsa ka eona sehloohong?
  • Ke karolong efe moo ke lokelang ho sheba sehlooho se tsoang molaetseng?

Ka 'nete, re ka tsoela pele ho batla likarolong tsohle, empa sena se tla re utloisa bohloko haholo 'me se tla hlokomoloha meputso eohle ea rona. Ka hona, e le hore re tsebe hore na re sheba hokae hantle, re tla etsa lihokela / lisupa tse utloahalang ho likarolo:

  • re tla eketsa molaetsa sebaka sa letsatsi la sehlooho
  • ha re kenyelletse sehloohong letsatsi la molaetsa le behiloe lengolo lena (e ka ba tafole e arohaneng, kapa matsatsi a mangata)

database ea Messenger (karolo ea 2): karohano "bakeng sa phaello"

Kaha ho tla ba le liphetoho tse fokolang lethathamong la matsatsi a melaetsa bakeng sa mangolo a motho ka mong (ka mor'a moo, hoo e batlang e le melaetsa eohle e oela matsatsing a 1-2 a haufi), ke tla tsepamisa maikutlo ho khetho ena.

Ka kakaretso, sebopeho sa database sa rona se nkile mokhoa o latelang, ho nahanoa ka karohano:

Litafole: RU, haeba u na le khopiso ho alfabeta ea Cyrillic ka mabitso a litafole / masimo, ho molemo hore u se ke ua sheba

-- секции по дате сообщения
CREATE TABLE "Сообщение_YYYYMMDD"(
  "Сообщение"
    uuid
      PRIMARY KEY
, "Тема"
    uuid
, "ДатаТемы"
    date
, "Автор"
    uuid
, "ДатаВремя" -- используем как дату
    timestamp
, "Текст"
    text
);

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

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

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

-- секции по дате темы
CREATE TABLE "Тема_YYYYMMDD"(
  "ДатаТемы"
    date
, "Тема"
    uuid
      PRIMARY KEY
, "Документ"
    uuid
, "Название"
    text
);

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

CREATE TABLE "ДатыСообщенийТемы_YYYYMMDD"(
  "ДатаТемы"
    date
, "Тема"
    uuid
      PRIMARY KEY
, "Дата"
    date
);

Boloka sente e ntle

Ho thoe'ng haeba re sa sebelise khetho ea khale ea ho arola ho ipapisitsoe le kabo ea boleng ba tšimo (ka li-triggers le lefa kapa PATITION BY), le "ka letsoho" boemong ba kopo, u tla hlokomela hore boleng ba senotlolo sa ho arola bo se bo bolokiloe ka lebitso la tafole ka boeona.

Kahoo haeba ho joalo Na u tšoenyehile haholo ka palo ea data e bolokiloeng?, joale u ka tlosa masimo ana a "eketsehileng" 'me ua bua ka litafole tse itseng. Ke 'nete, likhetho tsohle tse tsoang likarolong tse' maloa tabeng ena li tla tlameha ho fetisetsoa lehlakoreng la kopo.

Source: www.habr.com

Eketsa ka tlhaloso