Махзани маълумотҳои Messenger (қисми 1): тарҳрезии чаҳорчӯбаи асосӣ

Чӣ тавр шумо метавонед бо истифода аз намунаи тарҳрезии пойгоҳи додаҳои паёмнависӣ аз сифр, талаботи тиҷоратро ба сохторҳои мушаххаси додаҳо тарҷума кунед.

Махзани маълумотҳои Messenger (қисми 1): тарҳрезии чаҳорчӯбаи асосӣ
Пойгоҳи мо он қадар калон ва паҳн нахоҳад шуд, мисли ВКонтакте ё Badoo, балки "то ки он буд", аммо он хуб буд - функсионалӣ, зуд ва дар як сервер мувофиқат кунед PostgreSQL - ба тавре ки шумо метавонед як мисоли алоҳидаи хидматро дар ҷое дар паҳлӯ ҷойгир кунед, масалан.

Аз ин рӯ, мо ба масъалаҳои тақсимкунӣ, такрорӣ ва системаҳои геотақсимшуда дахл нахоҳем кард, балки ба ҳалли схемаҳо дар дохили пойгоҳи додаҳо тамаркуз хоҳем кард.

Қадами 1: Баъзе мушаххасоти тиҷорат

Мо паёмнависии худро ба таври абстрактӣ тарҳрезӣ намекунем, балки онро ба муҳит ҳамгиро мекунем шабакаи иҷтимоии корпоративӣ. Яъне, одамони мо на «факат мукотиба мекунанд», балки бо хамдигар дар доираи халли баъзе проблемахои тичоратй алока мекунанд.

Ва дар назди корхона чй гуна вазифахо гузошта шудаанд?.. Ба мисоли сардори шуъбаи ободонй Василий назар меандозем.

  • «Николай, барои ин вазифа имруз пачка даркор!
    Ин маънои онро дорад, ки мукотиба метавонад дар заминаи баъзе гузаронида шавад ҳуҷҷат.
  • "Коля, шумо ин бегоҳ ба Дота меравед?"
    Яъне, ҳатто як ҷуфт ҳамсӯҳбат метавонад ҳамзамон муошират кунад дар мавзуъхои гуногун.
  • "Питер, Николай, ба замима барои рӯйхати нархҳои сервери нав нигаред."
    Ҳамин тавр, як паём метавонад дошта бошад якчанд гирандагон. Дар ин ҳолат, паём метавонад дар бар гирад Файлҳои замимашуда.
  • — Семён, хам як назар кун.
    Ва бояд имкони ворид шудан ба мукотибаи мавҷуда вуҷуд дошта бошад аъзои навро даъват кунед.

Биёед ҳоло дар бораи ин рӯйхати ниёзҳои "аён" истодагарӣ кунем.

Бе дарки мушаххасоти татбиқшавандаи мушкилот ва маҳдудиятҳои ба он додашуда, тарҳрезӣ самаранок схемаи пойгоҳи додаҳо барои ҳалли он қариб ғайриимкон аст.

Қадами 2: Схемаи минималии мантиқӣ

То ба ҳол, ҳама чиз ба мукотибаи почтаи электронӣ хеле монанд аст - як воситаи анъанавии тиҷорат. Бале, «алгоритмӣ» бисёр масъалаҳои тиҷоратӣ ба ҳамдигар монанданд, аз ин рӯ воситаҳои ҳалли онҳо аз ҷиҳати сохтор шабеҳ хоҳанд буд.

Биёед диаграммаи мантиқии аллакай ба даст овардаи муносибатҳои субъектҳоро ислоҳ кунем. Барои осонтар фаҳмидани модели мо, мо варианти ибтидоии намоишро истифода мебарем моделҳои ER бе мушкилии аломатҳои UML ё IDEF:

Махзани маълумотҳои Messenger (қисми 1): тарҳрезии чаҳорчӯбаи асосӣ

Дар мисоли мо, шахс, ҳуҷҷат ва "ҷасади" бинарии файл объектҳои "берунӣ" мебошанд, ки мустақилона бидуни хидмати мо вуҷуд доранд. Аз ин рӯ, мо онҳоро дар оянда ҳамчун баъзе истинодҳои "дар ҷое" аз ҷониби UUID қабул хоҳем кард.

кашидан диаграммаҳо то ҳадди имкон оддӣ - аксари одамоне, ки шумо ба онҳо нишон медиҳед, мутахассиси хондани UML/IDEF нестанд. Аммо ҳатман кашед.

Қадами 3: Нақшаи сохтори ҷадвал

Дар бораи номҳои ҷадвал ва майдонҳоБа номхои «русй»-и майдонхо ва чадвалхо ба таври гуногун муносибат кардан мумкин аст, аммо ин масъалаи табъ аст. Зеро ки дар ин ҷо дар Тензор таҳиягарони хориҷӣ вуҷуд надоранд ва PostgreSQL ба мо имкон медиҳад, ки ҳатто дар иероглифҳо ном гузорем, агар онҳо дар иқтибос оварда шудаанд, пас мо бартарӣ медиҳем, ки объектҳоро якхела ва возеҳ ном бибарем, то ки ягон ихтилоф вуҷуд надошта бошад.
Азбаски бисёриҳо якбора ба мо паём менависанд, баъзеи онҳо ҳатто метавонанд ин корро кунанд офлайн, пас соддатарин вариант аст UUIDҳоро ҳамчун идентификатор истифода баред на танҳо барои объектҳои беруна, балки барои ҳама объектҳои дохили хидмати мо. Ғайр аз он, онҳоро ҳатто дар тарафи муштарӣ тавлид кардан мумкин аст - ин ба мо кӯмак мекунад, ки фиристодани паёмҳоро ҳангоми муваққатан дастнорас будани пойгоҳи додаҳо ва эҳтимолияти бархӯрд хеле кам аст.

Сохтори лоиҳаи ҷадвал дар базаи мо чунин хоҳад буд:
Ҷадвалҳо: 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
);

Ҷадвалҳо: 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
);

Оддӣтарин чизе, ки ҳангоми тавсифи формат оғоз кардани графики пайвастшавӣ аст аз ҷадвалҳое, ки истинод карда нашудаанд худ ба ҳеҷ кас.

Қадами 4: Эҳтиёҷоти норавшанро дарёфт кунед

Ин аст, ки мо як пойгоҳи додаҳоро тарҳрезӣ кардем, ки дар он шумо метавонед ба таври комил нависед ва гӯё хонед.

Биёед худро ба ҷои корбари хидмати худ гузорем - мо бо он чӣ кор кардан мехоҳем?

  • Паёмҳои охирин
    ин аз рӯи хронологӣ ҷудо карда шудааст феҳристи паёмҳои "ман" дар асоси меъёрҳои гуногун. Дар куҷо ман яке аз қабулкунандагон ҳастам, дар куҷо муаллиф ҳастам, дар куҷо онҳо ба ман навиштанд ва ман ҷавоб надодам, дар куҷо ба ман ҷавоб надоданд, ...
  • Иштироккунандагони мукотиба
    Кӣ ҳатто дар ин сӯҳбати тӯлонӣ ва тӯлонӣ иштирок мекунад?

Сохтори мо ба мо имкон медихад, ки хар дуи ин проблемахоро «умуман» хал кунем, вале на зуд. Мушкилот дар он аст, ки барои мураттабсозӣ дар доираи вазифаи аввал индекс эҷод карда наметавонад, барои ҳар як иштирокчӣ мувофиқ аст (ва шумо бояд ҳамаи сабтҳоро гиред) ва барои ҳалли дуюми шумо лозим аст ҳама паёмҳоро хориҷ кунед дар ин мавзӯъ.

Вазифаҳои истифодабарандаи номатлуб метавонанд ғафс бошанд дар бораи хосилнокии мехнат.

Қадами 5: Denormalization Smart

Ҳарду мушкилоти мо бо ҷадвалҳои иловагӣ ҳал карда мешаванд, ки мо дар он хоҳем буд нусхаи қисми маълумот, зарур аст, ки дар руи онхо индексхои ба вазифахои мо мувофикро ташкил кунем.
Махзани маълумотҳои Messenger (қисми 1): тарҳрезии чаҳорчӯбаи асосӣ

Ҷадвалҳо: RU

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

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

Ҷадвалҳо: 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)
);

Дар ин ҷо мо ду равиши маъмулиро ҳангоми сохтани ҷадвалҳои ёрирасон истифода кардем:

  • Сабтҳои зиёд
    Бо истифода аз як сабти паёми ибтидоӣ, мо дар намудҳои гуногуни реестрҳо барои соҳибони гуногун - ҳам барои ирсолкунанда ва ҳам барои қабулкунанда якчанд сабтҳои минбаъда эҷод мекунем. Аммо ҳар як регистр ҳоло ба индекс рост меояд - дар ниҳоят, дар як ҳолати маъмулӣ, мо танҳо саҳифаи аввалро дидан мехоҳем.
  • Сабтҳои беназир
    Ҳар дафъае, ки шумо дар доираи як мавзӯи мушаххас паём мефиристед, барои тафтиш кардан кифоя аст, ки оё чунин сабт аллакай вуҷуд дорад. Агар не, онро ба «лугат»-и мо илова кунед.

Дар қисми навбатии мақола мо дар бораи он сӯҳбат хоҳем кард татбиқи тақсимот ба сохтори базаи мо ворид кунед.

Манбаъ: will.com

Хостинги боэътимодро барои сайтҳо бо муҳофизати DDoS, серверҳои VPS VDS харед 🔥 Харидани хостинги боэътимоди вебсайт бо муҳофизати DDoS, серверҳои VPS VDS | ProHoster