Stòr-dàta Messenger (pàirt 2): sgaradh "airson prothaid"

Tha sinn air structar ar stòr-dàta PostgreSQL a dhealbhadh gu soirbheachail airson conaltradh a stòradh, tha bliadhna air a dhol seachad, tha luchd-cleachdaidh gu gnìomhach ga lìonadh, agus a-nis tha e ann. milleanan de chlàran, agus... thòisich rudeigin a' fàs nas slaodaiche.

Stòr-dàta Messenger (pàirt 2): sgaradh "airson prothaid"
Rubha 'S e sin Mar a bhios meud a’ bhùird a’ fàs, mar sin tha “doimhneachd” nan clàran-amais. - ged a tha e logarithmically. Ach thar ùine bheir seo air an fhrithealaiche na h-aon ghnìomhan leughaidh/sgrìobhaidh a dhèanamh pròiseas iomadh uair barrachd dhuilleagan dàtana aig an toiseach.

Seo far a bheil e a’ tighinn gu teasairginn roinn.

Thoir an aire dhomh nach eil sinn a’ bruidhinn mu dheidhinn sharding, is e sin, a’ sgaoileadh dàta eadar diofar stòran-dàta no frithealaichean. Leis gu bheil eadhon an dàta a roinn a-steach grunnan frithealaichean, chan fhaigh thu cuidhteas duilgheadas clàran-amais “swelling” thar ùine. Tha e soilleir, mas urrainn dhut seirbheisiche ùr a chuir an gnìomh a h-uile latha, nach bi na duilgheadasan agad idir ann am plèana stòr-dàta sònraichte.

Beachdaichidh sinn chan ann air sgriobtaichean sònraichte airson a bhith a’ buileachadh sgaradh “ann am bathar-cruaidh”, ach an dòigh-obrach fhèin - dè agus ciamar a bu chòir a bhith “air a ghearradh ann an sliseagan”, agus dè a dh’ adhbhraicheas a leithid de mhiann.

Bun-bheachd

Mìnichidh sinn ar n-amas a-rithist: tha sinn airson dèanamh cinnteach gum fuirich an-diugh, a-màireach, agus ann am bliadhna, an ìre de dhàta a leugh PostgreSQL rè gnìomhachd leughaidh / sgrìobhaidh sam bith timcheall air an aon rud.

Airson sam bith dàta cruinnichte a rèir eachdraidh (teachdaireachdan, sgrìobhainnean, logaichean, tasglannan, ...) tha an roghainn nàdarra mar iuchair sgaradh ceann-latha/àm tachartais. Anns a 'chùis againn, tha tachartas mar seo mionaid airson an teachdaireachd a chuir.

Thoir an aire gu bheil luchd-cleachdaidh cha mhòr an-còmhnaidh obraich a-mhàin leis an fheadhainn “as ùire”. dàta mar sin - bidh iad a’ leughadh na teachdaireachdan as ùire, a’ dèanamh mion-sgrùdadh air na logaichean as ùire,... Chan e, gu dearbh, is urrainn dhaibh gluasad nas fhaide air ais ann an tìm, ach is ann ainneamh a nì iad seo.

Bho na cuingeadan sin tha e soilleir gur e am fuasgladh teachdaireachd as fheàrr a bhiodh ann earrannan "làitheil". - às deidh a h-uile càil, bidh an neach-cleachdaidh againn cha mhòr an-còmhnaidh a ’leughadh na thàinig thuige“ an-diugh ”no“ an-dè ”.

Ma tha sinn a 'sgrìobhadh agus a' leughadh cha mhòr a-mhàin ann an aon earrann tron ​​latha, tha seo cuideachd a 'toirt dhuinn cleachdadh nas èifeachdaiche de chuimhne agus diosc - leis gu bheil a h-uile clàr-amais earrann gu furasta a’ freagairt air an RAM, an taca ris an fheadhainn “mòr is geir” air feadh a’ bhùird.

ceum air cheum

San fharsaingeachd, tha a h-uile dad a chaidh a ràdh gu h-àrd coltach ri aon prothaid leantainneach. Agus tha e comasach a choileanadh, ach airson seo feumaidh sinn feuchainn gu cruaidh - oir tha an co-dhùnadh sgaradh a dhèanamh eadar aon de na buidhnean a’ leantainn gu feum air “faicinn” na tha co-cheangailte.

Teachdaireachd, a feartan agus ro-mheasaidhean

Leis gun do chuir sinn romhainn teachdaireachdan a ghearradh a rèir cinn-latha, tha e ciallach cuideachd na buidhnean-seilbh a tha an urra riutha a roinn (faidhlichean ceangailte, liosta de luchd-faighinn), agus cuideachd a rèir ceann-latha na teachdaireachd.

Leis gur e aon de na gnìomhan àbhaisteach againn a bhith a’ coimhead gu mionaideach air clàran teachdaireachd (gun leughadh, a’ tighinn a-steach, uile), tha e reusanta cuideachd “an tarraing a-steach” gu bhith gan sgaradh a rèir cinn-latha teachdaireachd.

Stòr-dàta Messenger (pàirt 2): sgaradh "airson prothaid"

Cuiridh sinn an iuchair sgaradh (ceann-latha teachdaireachd) ris a h-uile clàr: luchd-faighinn, faidhle, clàran. Chan fheum thu a chuir ris an teachdaireachd fhèin, ach cleachd an DateTime a tha ann mu thràth.

ceangal a-nall

Leis nach eil ann ach aon chuspair airson grunn theachdaireachdan, chan eil dòigh ann air a “ghearradh” san aon mhodail; feumaidh tu a bhith an urra ri rudeigin eile. Anns a 'chùis againn tha e air leth freagarrach ceann-latha a’ chiad teachdaireachd ann an conaltradh — 's e sin, àm cruthachaidh, gu dearbh, a' chuspair.

Stòr-dàta Messenger (pàirt 2): sgaradh "airson prothaid"

Cuir an iuchair sgaradh (ceann-latha cuspair) ris a h-uile clàr: cuspair, com-pàirtiche.

Ach a-nis tha dà dhuilgheadas againn aig an aon àm:

  • Dè an earrann air am bu chòir dhomh coimhead airson teachdaireachdan air a’ chuspair?
  • Dè an earrann anns am bu chòir dhomh coimhead airson a’ chuspair bhon teachdaireachd?

Faodaidh sinn, gu dearbh, leantainn air adhart a’ sgrùdadh anns a h-uile roinn, ach bidh seo gu math brònach agus nì sinn dearmad air na buannachdan againn uile. Mar sin, gus faighinn a-mach càite dìreach a choimheadas sinn, nì sinn ceanglaichean loidsigeach / molaidhean gu earrannan:

  • cuiridh sinn a-steach an teachdaireachd raon cuspair ceann-latha
  • cuireamaid ris a' chuspair ceann-latha teachdaireachd air a shuidheachadh an conaltradh seo (faodaidh clàr air leth a bhith ann, neo sreath de chinn-latha)

Stòr-dàta Messenger (pàirt 2): sgaradh "airson prothaid"

Leis nach bi mòran atharrachaidhean air an liosta de chinn-latha teachdaireachd airson gach conaltradh fa leth (às deidh a h-uile càil, bidh cha mhòr a h-uile teachdaireachd a ’tuiteam air làithean 1-2 ri thaobh), cuiridh mi fòcas air an roghainn seo.

Gu h-iomlan, ghabh structar an stòr-dàta againn an cruth a leanas, a’ toirt aire do sgaradh:

Clàran: RU, ma tha an aghaidh na h-aibideil Cyrillic ann an ainmean chlàran/achaidhean, tha e nas fheàrr gun a bhith a’ coimhead

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

Sàbhail sgillinn gu math

Uill, dè mura cleachd sinn roghainn roinneadh clasaigeach stèidhichte air cuairteachadh luachan achaidh (tro luchd-brosnachaidh agus dìleab no PÀIRT BY), agus “le làimh” aig ìre an tagraidh, chì thu gu bheil luach na h-iuchrach dealachaidh air a stòradh mar-thà ann an ainm a’ bhùird fhèin.

Mar sin ma tha thu mar sin A bheil dragh mòr ort mun ìre de dhàta a tha air a stòradh?, an uairsin gheibh thu cuidhteas na raointean “a bharrachd” sin agus seòladh gu clàran sònraichte. Fìor, feumar a h-uile taghadh bho ghrunn earrannan sa chùis seo a ghluasad gu taobh an tagraidh.

Source: www.habr.com

Cuir beachd ann