ʻIkepili ʻelele (mahele 1): ka hoʻolālā ʻana i ke kahua kumu

Pehea e hiki ai iā ʻoe ke unuhi i nā koi ʻoihana i loko o nā hoʻolālā ʻikepili kikoʻī me ka hoʻohana ʻana i ka laʻana o ka hoʻolālā ʻana i kahi waihona ʻelele mai ka wā kahiko.

ʻIkepili ʻelele (mahele 1): ka hoʻolālā ʻana i ke kahua kumu
ʻAʻole e like ka nui o kā mākou waihona, e like me VKontakte ai ole ia, ʻO Badoo, akā "no laila", akā maikaʻi - hana, wikiwiki a kūpono ma kahi kikowaena PostgreSQL - i hiki iā ʻoe ke hoʻokaʻawale i kahi ʻokoʻa o ka lawelawe ma kahi ʻaoʻao, no ka laʻana.

No laila, ʻaʻole mākou e hoʻopaʻa i nā pilikia o ka sharding, replication a me geo-distributed system, akā e kālele ana i nā hopena kaapuni i loko o ka waihona.

KaʻAnuʻu 1: ʻO kekahi mau ʻoihana kikoʻī

ʻAʻole mākou e hoʻolālā i kā mākou leka uila, akā e hoʻohui i ia i loko o ke kaiapuni hui kaiaulu. ʻO ia hoʻi, ʻaʻole "kūlike wale" ko mākou poʻe, akā kamaʻilio pū kekahi i kekahi i ka pōʻaiapili o ka hoʻoponopono ʻana i kekahi mau pilikia ʻoihana.

A he aha nā hana o kahi ʻoihana?.. E nānā kākou i ka laʻana o Vasily, ke poʻo o ka ʻoihana hoʻomohala.

  • "Nikolai, no kēia hana pono mākou i kahi papa i kēia lā!"
    'O ia ho'i, hiki ke hana 'ia ka leka ma ka pō'aiapili o kekahi palapala.
  • "Kolya, e hele ana ʻoe i Dota i kēia ahiahi?"
    ʻO ia hoʻi, hiki i hoʻokahi mau hoa kamaʻilio ke kamaʻilio i ka manawa like ma nā kumuhana like ʻole.
  • "Peter, Nikolay, e nānā i ka pākuʻi no ka papa inoa kumu kūʻai no ke kikowaena hou."
    No laila, hiki ke loaʻa i hoʻokahi memo kekahi mau mea loaa. I kēia hihia, aia paha ka memo Nā faila i hoʻopili ʻia.
  • "Semyon, e nānā pū kekahi."
    A pono e loaʻa kahi manawa e komo ai i nā leka e kū nei kono i lālā hou.

E noʻonoʻo kākou i kēia papa inoa o nā pono "ʻike" i kēia manawa.

Me ka hoʻomaopopo ʻole i nā kikoʻī i hoʻopili ʻia o ka pilikia a me nā palena i hāʻawi ʻia iā ia, hoʻolālā pono 'ikepili schema e hoʻoponopono ia mea aneane hiki ole.

KaʻAnuʻu 2: Kaapuni Logic Minimal

I kēia manawa, hana like nā mea a pau me ka leka uila - he mea hana maʻamau. ʻAe, "algorithmically" he nui nā pilikia ʻoihana e like me kekahi, no laila e like ke ʻano o nā mea hana no ka hoʻoponopono ʻana iā lākou.

E hoʻoponopono i ke kiʻikuhi i loaʻa mua o nā pilina hui. I mea e maʻalahi ai ka hoʻomaopopo ʻana i kā mākou kumu hoʻohālike, e hoʻohana mākou i ke koho hōʻike mua loa Nā hiʻohiʻona ER me ka pilikia ʻole o nā hōʻailona UML a i ʻole IDEF:

ʻIkepili ʻelele (mahele 1): ka hoʻolālā ʻana i ke kahua kumu

Ma kā mākou laʻana, ʻo ke kanaka, ka palapala a me ka "kino" binary o ka faila he mau ʻano "waho" i kū kūʻokoʻa me ka ʻole o kā mākou lawelawe. No laila, e ʻike wale mākou iā lākou i ka wā e hiki mai ana e like me kekahi mau loulou "ma kahi" e UUID.

Kaha kiʻi kiʻi maʻalahi e like me ka hiki - ʻo ka hapa nui o ka poʻe āu e hōʻike aku ai iā lākou ʻaʻole lākou he akamai i ka heluhelu ʻana i ka UML/IDEF. Akā, e kaha kiʻi.

KaʻAnuʻu Hana 3: Ke kaha kiʻi ʻana i ke ʻano o ka papaʻaina

E pili ana i ka papa a me nā inoa kahuaHiki ke mālama ʻia nā inoa ʻo "Russian" o nā māla a me nā papa, akā he mea ʻono kēia. No ka mea maanei ma Tensor ʻaʻohe mea hoʻomohala haole, a ʻae ʻo PostgreSQL iā mākou e hāʻawi i nā inoa ma nā hieroglyphs, inā lākou i hoʻopaʻa ʻia i loko o nā huaʻōlelo, a laila makemake mākou e hoʻopaʻa inoa i nā mea me ka maopopo ʻole a ʻaʻohe mea like ʻole.
No ka mea he nui ka poʻe e kākau i nā leka iā mākou i ka manawa hoʻokahi, hiki i kekahi o lākou ke hana i kēia offline, a laila ʻo ka koho maʻalahi e hoʻohana i nā UUID i mea hōʻike ʻaʻole wale no nā hui o waho, akā no nā mea āpau i loko o kā mākou lawelawe. Eia kekahi, hiki ke hana ʻia ma ka ʻaoʻao o ka mea kūʻai aku - e kōkua kēia iā mākou i ke kākoʻo ʻana i ka hoʻouna ʻana i nā memo ke loaʻa ʻole ka waihona ʻikepili no ka manawa pōkole, a haʻahaʻa loa ka hopena o ka hui ʻana.

Penei ke ʻano o ka papa kuhikuhi kikoʻī ma kā mākou waihona:
Nā Papa: 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
);

Nā Papa: 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
);

ʻO ka mea maʻalahi i ka wehewehe ʻana i kahi ʻano ʻo ia ka hoʻomaka ʻana e "wehe" i ka pakuhi pili mai nā papa i kuhikuhi ʻole ʻia ia lakou iho i kekahi.

KaʻAnuʻu Hana 4: E ʻike i nā pono ʻike ʻole

ʻO ia, ua hoʻolālā mākou i kahi waihona kahi e hiki ai iā ʻoe ke kākau pololei a kekahiʻano heluhelu.

E hoʻokomo mākou iā mākou iho i nā kāmaʻa o ka mea hoʻohana i kā mākou lawelawe - he aha kā mākou makemake e hana ai?

  • Nā leka hope loa
    keia chronologically sorted he papa inoa o nā memo "koʻu" e pili ana i nā pae like ʻole. ʻO wau kahi o ka poʻe i loaʻa, kahi wau i kākau ai, kahi i kākau ai lākou iaʻu a ʻaʻole wau i pane, kahi i pane ʻole mai ai iaʻu, ...
  • ʻO nā mea komo o ka leka
    ʻO wai ka mea e komo nei i kēia kamaʻilio lōʻihi lōʻihi?

ʻO kā mākou hoʻolālā e hiki ai iā mākou ke hoʻoponopono i kēia mau pilikia ʻelua "ma ka laulā," akā ʻaʻole wikiwiki. ʻO ka pilikia no ka hoʻokaʻawale ʻana i loko o ka hana mua hiki ole ke hana index, kūpono i kēlā me kēia o nā mea komo (a pono ʻoe e unuhi i nā moʻolelo āpau), a e hoʻoponopono i ka lua āu e pono ai unuhi i nā memo a pau ma keia kumuhana.

Hiki i nā hana mea hoʻohana ʻole ke kau i ka wiwo ʻole kea ma ka hoonui.

KaʻAnuʻu Hana 5: Smart Denormalization

E hoʻoponopono ʻia nā pilikia ʻelua e nā papa ʻē aʻe a mākou e hana ai ʻāpana kope o ka ʻikepili, pono e hoʻokumu ma luna o lākou i nā kuhikuhi kūpono no kā mākou mau hana.
ʻIkepili ʻelele (mahele 1): ka hoʻolālā ʻana i ke kahua kumu

Nā Papa: RU

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

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

Nā Papa: 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)
);

Ma ʻaneʻi ua hoʻohana mākou i ʻelua ala maʻamau i hoʻohana ʻia i ka hana ʻana i nā papa kōkua:

  • Hoʻonui i nā moʻolelo
    Ke hoʻohana nei i hoʻokahi moʻolelo memo mua, hana mākou i kekahi mau moʻolelo hahai ma nā ʻano papa inoa like ʻole no nā mea nona nā ʻokoʻa - no ka mea hoʻouna a no ka mea loaʻa. Akā ke hāʻule nei kēlā me kēia o nā papa inoa ma ka papa kuhikuhi - ma hope o nā mea āpau, i kahi hihia maʻamau, makemake mākou e ʻike i ka ʻaoʻao mua wale nō.
  • Nā moʻolelo kū hoʻokahi
    I kēlā me kēia manawa āu e hoʻouna ai i kahi memo i loko o kahi kumuhana kikoʻī, ua lawa ia e nānā inā loaʻa kahi komo. Inā ʻaʻole, e hoʻohui iā ia i kā mākou "papa ʻōlelo".

Ma ka ʻaoʻao aʻe o ka ʻatikala e kamaʻilio mākou e pili ana ka hoʻokō ʻana i ka ʻāpana i loko o ke ʻano o kā mākou waihona.

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka