Database Messenger (Kashi na 2): Rarraba "don riba"

Mun yi nasarar tsara tsarin bayananmu na PostgreSQL don adana wasiku, shekara ta wuce, masu amfani suna cika shi sosai, kuma yanzu ya ƙunshi. miliyoyin records, kuma... wani abu ya fara raguwa.

Database Messenger (Kashi na 2): Rarraba "don riba"
Point shi ne, Yayin da girman tebur ke girma, haka ma "zurfin" na ma'auni. - albeit logarithmically. Amma bayan lokaci wannan yana tilasta uwar garken yin ayyukan karantawa/rubutu iri ɗaya aiwatar da shafukan bayanai da yawa sau da yawafiye da farkon.

Wannan shi ne inda ya zo don ceto sashe.

Bari in lura cewa ba muna magana ne game da sharing ba, wato, rarraba bayanai tsakanin rumbun adana bayanai ko sabobin. Domin ko da raba bayanai a ciki da dama sabobin, ba za ku kawar da matsalar fihirisar "kumburi" akan lokaci ba. A bayyane yake cewa idan za ku iya samun damar sanya sabon uwar garken aiki a kowace rana, to matsalolinku ba za su ƙara kasancewa a cikin jirgin na takamaiman bayanai ba.

Za mu yi la'akari da ba takamaiman rubutun don aiwatar da partitioning "a hardware", amma m kanta - abin da kuma yadda ya kamata a "yanke cikin yanka", da kuma abin da irin wannan sha'awar take kaiwa zuwa.

Tunani

Bari mu sake ayyana burinmu: muna son tabbatar da cewa yau, gobe, da kuma a cikin shekara, adadin bayanan da PostgreSQL ya karanta yayin kowane aikin karantawa/rubutu ya kasance kusan iri ɗaya.

Ga kowane bayanan da aka tara na lokaci-lokaci (saƙonni, takardu, rajistan ayyukan, rumbun adana bayanai, ...) zaɓi na halitta azaman maɓallin rarrabawa shine kwanan wata/lokacin taron. A cikin yanayinmu, irin wannan taron shine lokacin aika sakon.

Lura cewa masu amfani kusan ko da yaushe aiki kawai tare da "sabon" wadanda irin waɗannan bayanai - suna karanta sabbin saƙonni, suna nazarin sabbin rajistan ayyukan,... A'a, ba shakka, za su iya ƙara komawa cikin lokaci, amma suna yin hakan da wuya.

Daga waɗannan ƙuntatawa a bayyane yake cewa mafi kyawun maganin saƙon zai kasance sassan "kullum". - bayan haka, mai amfani da mu zai kusan karanta abin da ya zo masa "yau" ko "jiya".

Idan muka yi rubutu da karantawa kusan a cikin sashe ɗaya kawai a cikin rana, wannan kuma yana ba mu mafi inganci amfani da ƙwaƙwalwar ajiya da faifai - tunda duk fihirisar sashe cikin sauƙin shiga cikin RAM ɗin, ya bambanta da “manyan da mai” a cikin teburin.

taka-ta-mataki

Gabaɗaya, duk abin da aka faɗa a sama yana kama da ci gaba da riba. Kuma yana yiwuwa, amma saboda wannan dole ne mu yi ƙoƙari sosai - saboda yanke shawarar raba ɗaya daga cikin abubuwan yana haifar da buƙatar "gani" abin da aka haɗa.

Saƙo, kaddarorinsa da hasashensa

Tun da mun yanke shawarar yanke saƙonni ta kwanan wata, yana da ma'ana don raba abubuwan da suka dogara da su (fayilolin da aka haɗe, jerin masu karɓa), da kuma ta ranar saƙo.

Tun da ɗayan ayyukanmu na yau da kullun shine kallon rajistar saƙo daidai (ba a karanta ba, mai shigowa, duka), yana da ma'ana a “ja su ciki” zuwa rarraba ta kwanakin saƙo.

Database Messenger (Kashi na 2): Rarraba "don riba"

Muna ƙara maɓallin ɓarna (kwanan kwanan saƙo) zuwa duk tebur: masu karɓa, fayil, rajista. Ba dole ba ne ka ƙara shi zuwa saƙon da kansa, amma amfani da DateTime data kasance.

Sharhuna

Tun da akwai jigo ɗaya kawai don saƙonni da yawa, babu wata hanyar da za a “yanke” a cikin tsari ɗaya; dole ne ku dogara da wani abu dabam. A cikin yanayinmu yana da manufa ranar saƙon farko a cikin wasiƙa - wato, lokacin halitta, a zahiri, na batun.

Database Messenger (Kashi na 2): Rarraba "don riba"

Ƙara maɓallin rarrabuwa (kwanan batu) zuwa duk teburi: batu, ɗan takara.

Amma yanzu muna da matsaloli guda biyu a lokaci guda:

  • A wanne bangare zan nemi sakonni kan batun?
  • A wanne bangare zan nemi batun daga sakon?

Za mu iya, ba shakka, ci gaba da bincike a duk sassan, amma wannan zai zama mai bakin ciki sosai kuma zai watsar da duk nasarorin da muka samu. Don haka, don sanin ainihin inda za mu duba, za mu sanya hanyoyin haɗi / masu nuni zuwa sassan:

  • za mu ƙara a cikin sakon filin kwanan batu
  • mu kara zuwa kan batun saita kwanan wata wannan wasiƙun (zai iya zama tebur dabam, ko tsararrun kwanakin)

Database Messenger (Kashi na 2): Rarraba "don riba"

Tun da za a sami ƴan gyare-gyare ga jerin kwanakin saƙo na kowane wasiƙu na kowane mutum (bayan haka, kusan duk saƙonnin sun faɗi akan kwanaki 1-2 na gaba), zan mai da hankali kan wannan zaɓi.

Gabaɗaya, tsarin ma'ajin bayanan mu ya ɗauki nau'i mai zuwa, la'akari da rarrabuwa:

Tables: RU, idan kuna da ƙiyayya ga haruffan Cyrillic a cikin sunayen tebur / filayen, yana da kyau kada ku duba.

-- секции по дате сообщения
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
);

Ajiye kyakkyawan dinari

To, idan ba mu yi amfani da shi ba classic sashe zabin dangane da rarraba darajar filin (ta hanyar jawowa da gado ko PARTITION BY), da kuma "da hannu" a matakin aikace-aikacen, za ku lura cewa an riga an adana darajar maɓallin rarrabawa a cikin sunan tebur kanta.

Don haka idan kun kasance haka Kuna damu sosai game da adadin bayanan da aka adana?, to, za ku iya kawar da waɗannan filayen "karin" da kuma magance takamaiman tebur. Gaskiya ne, duk zaɓuka daga sassa da yawa a wannan yanayin dole ne a canza su zuwa ɓangaren aikace-aikacen.

source: www.habr.com

Add a comment