Ebe nchekwa data Messenger (akụkụ 2): nkewa "maka uru"

Anyị emeela nke ọma nhazi nke nchekwa data PostgreSQL anyị maka ịchekwa akwụkwọ ozi, otu afọ agafeela, ndị ọrụ na-ejuputa ya nke ọma, ma ugbu a ọ nwere. ọtụtụ nde ndekọ, na... ihe malitere iji nwayọọ.

Ebe nchekwa data Messenger (akụkụ 2): nkewa "maka uru"
Point bụ na Ka okpokoro okpokoro na-eto eto, otú ahụ ka "ihe omimi" nke index. - n'agbanyeghị logarithmically. Mana ka oge na-aga, nke a na-amanye ihe nkesa ahụ ịrụ otu ọrụ ọgụgụ / dee hazie ọtụtụ ibe ibe datakarịa na mmalite.

Nke a bụ ebe ọ na-abịa na nnapụta ngalaba.

Ka m mara na anyị anaghị ekwu maka sharding, ya bụ, ikesa data n'etiti ọdụ data dị iche iche ma ọ bụ sava. N'ihi na ọbụna na-ekewa data n'ime ọtụtụ sava, ị gaghị ewepụ nsogbu nke index "ọzịza" ka oge na-aga. O doro anya na ọ bụrụ na ị nwere ike itinye ihe nkesa ọhụrụ na-arụ ọrụ kwa ụbọchị, mgbe ahụ nsogbu gị agaghị adịkwa ọzọ na ụgbọelu nke otu nchekwa data.

Anyị ga-atụle ọ bụghị kpọmkwem scripts maka mmejuputa atumatu partitioning "na ngwaike", ma obibia n'onwe ya - ihe na otú e kwesịrị "bee n'ime Mpekere", na ihe dị otú ahụ ọchịchọ na-eduga.

Echiche

Ka anyị kọwapụta ebumnuche anyị ọzọ: anyị chọrọ ijide n'aka na taa, echi, na n'ime otu afọ, ọnụọgụ data PostgreSQL na-agụ n'oge ọrụ ọgụgụ / ide ihe ọ bụla na-adịgide otu ihe ahụ.

Maka nke ọ bụla chịkọbara data oge (ozi, akwụkwọ, ndekọ, ebe nchekwa, ...) nhọrọ eke dị ka igodo nkebi bụ ụbọchị/oge mmemme. N'ọnọdụ anyị, ihe omume dị otú ahụ bụ oge nke izipu ozi.

Rịba ama na ndị ọrụ fọrọ nke nta ka ọ bụrụ mgbe niile na-arụ ọrụ naanị na ndị "kacha ọhụrụ". data dị otú ahụ - ha na-agụ ozi kachasị ọhụrụ, nyochaa ndekọ ọhụrụ, ... Mba, n'ezie, ha nwere ike ịpịgharịa gaa n'ihu n'oge, ma ha na-eme nke a adịkarịghị.

Site na mgbochi ndị a, o doro anya na ngwọta ozi kacha mma ga-abụ ngalaba "kwa ụbọchị". - E kwuwerị, onye ọrụ anyị na-agụkarị ihe bịakwutere ya "taa" ma ọ bụ "ụnyaahụ".

Ọ bụrụ na anyị na-ede ma na-agụ ihe fọrọ nke nta ka ọ bụrụ naanị n'otu akụkụ n'ụbọchị, mgbe ahụ nke a na-enyekwa anyị iji ebe nchekwa na diski rụọ ọrụ nke ọma - ebe ọ bụ na ndepụta ngalaba niile na-adaba ngwa ngwa na RAM, n'ụzọ dị iche na ndị "nnukwu na abụba" na tebụl.

nzọụkwụ-site-nzọụkwụ

N'ozuzu, ihe niile e kwuru n'elu dị ka otu uru na-aga n'ihu. Na ọ bụ achievable, ma maka nke a anyị ga-agbalịsi ike - n'ihi na mkpebi nke nkewa otu n'ime ụlọ ọrụ na-eduga na mkpa "hụrụ" ihe metụtara ya.

Ozi, njirimara ya na amụma ya

Ebe ọ bụ na anyị kpebiri ibelata ozi site na ụbọchị, ọ bụ ihe ezi uche dị na ya kewaa ụlọ ọrụ-ihe ndị dabere na ha (faịlụ agbakwunyere, ndepụta ndị nnata), na nakwa site na ụbọchị ozi.

Ebe ọ bụ na otu n'ime ọrụ anyị na-ahụkarị bụ ịlele ndekọ ozi nke ọma (agụghị akwụkwọ, na-abata, ihe niile), ọ bụkwa ihe ezi uche dị na ya 'ịdọrọ ha' na nkewa site na ụbọchị ozi.

Ebe nchekwa data Messenger (akụkụ 2): nkewa "maka uru"

Anyị na-agbakwunye igodo nkewa (ụbọchị ozi) na tebụl niile: ndị nnata, faịlụ, ndekọ. Ịkwesighi itinye ya na ozi ahụ n'onwe ya, mana jiri DateTime dị adị.

eri

Ebe ọ bụ na e nwere naanị otu isiokwu maka ọtụtụ ozi, ọ dịghị ụzọ ị ga-esi "bee" ya n'otu ụdị; ị ga-adabere na ihe ọzọ. N'ọnọdụ anyị ọ dị mma ụbọchị ozi mbụ na akwụkwọ ozi - ya bụ, oge e kere eke, n'ezie, nke isiokwu.

Ebe nchekwa data Messenger (akụkụ 2): nkewa "maka uru"

Tinye igodo nkewa (ụbọchị isiokwu) na tebụl niile: isiokwu, onye so na ya.

Ma ugbu a, anyị nwere nsogbu abụọ n'otu oge:

  • Na nkebi nke ka m ga-achọ ozi na isiokwu?
  • Na nkebi nke m kwesịrị ịchọ isiokwu site na ozi?

Anyị nwere ike, n'ezie, na-aga n'ihu na-achọ na ngalaba niile, ma nke a ga-abụ ihe mwute na ọ ga-ewepụ mmeri anyị niile. Ya mere, iji mara kpọmkwem ebe a ga-ele anya, anyị ga-eme njikọ / ntụnye ezi uche na ngalaba:

  • anyị ga-agbakwunye na ozi ubi ụbọchị isiokwu
  • ka anyị gbakwunye na isiokwu edobere ụbọchị ozi akwụkwọ ozi a (nwere ike ịbụ tebụl dị iche, ma ọ bụ ọtụtụ ụbọchị)

Ebe nchekwa data Messenger (akụkụ 2): nkewa "maka uru"

Ebe ọ bụ na a ga-enwe mgbanwe ole na ole na ndepụta ụbọchị ozi maka akwụkwọ ozi onye ọ bụla (mgbe niile, ihe fọrọ nke nta ka ọ bụrụ ozi niile na-adaba na ụbọchị 1-2 n'akụkụ), m ga-elekwasị anya na nhọrọ a.

Na mkpokọta, nhazi nke nchekwa data anyị weere ụdị a, na-eburu n'uche nkewa:

Tebụl: RU, ọ bụrụ na ị nwere ịkpọasị na mkpụrụedemede Cyrillic n'aha tebụl / ubi, ọ ka mma ka ị ghara ile anya.

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

Chekwaa penny mara mma

Ọfọn, gịnị ma ọ bụrụ na anyị anaghị eji kpochapụwo ngalaba nhọrọ dabere na nkesa nke ụkpụrụ ubi (site na mkpali na ihe nketa ma ọ bụ nkebi BY), na "aka" na ọkwa ngwa, ị ga-achọpụta na echekwabara uru nke igodo nkebi n'aha nke tebụl n'onwe ya.

Ya mere ọ bụrụ na ị dị otú ahụ Ị na-echegbu onwe gị maka ọnụọgụ data echekwara?, mgbe ahụ, ị ​​​​nwere ike ikpochapụ ndị a "mgbakwunye" ubi na adreesị kpọmkwem tebụl. N'ezie, nhọrọ niile sitere na ngalaba dị iche iche na nke a ga-ebufe n'akụkụ ngwa.

isi: www.habr.com

Tinye a comment