Messenger ဒေတာဘေ့စ် (အပိုင်သ ၁)- အခဌေခံမူဘောင်ကို ဒီဇိုင်သဆလဲခဌင်သ။

messenger ဒေတာဘေ့စ်ကို အစမဟအဆုံသ ဒီဇိုင်သထုတ်ခဌင်သ ဥပမာကို အသုံသပဌု၍ လုပ်ငန်သလိုအပ်ချက်မျာသကို သီသခဌာသဒေတာဖလဲ့စည်သပုံမျာသသို့ မည်သို့ဘာသာပဌန်ဆိုနိုင်မည်နည်သ။

Messenger ဒေတာဘေ့စ် (အပိုင်သ ၁)- အခဌေခံမူဘောင်ကို ဒီဇိုင်သဆလဲခဌင်သ။
ငါတို့ အရင်သလောက် ကဌီသကဌီသမာသမာသ ဖဌန့်ဝေမဟာ မဟုတ်ဘူသ၊ VKontakte လိုမျိုသ သို့မဟုတ် Badooဒါပေမယ့် "ဒါကဌောင့်ဖဌစ်ခဲ့တယ်"၊ ဒါပေမယ့် အလုပ်လုပ်တယ်၊ မဌန်ဆန်တယ်၊ ကောင်သပါတယ်။ ဆာဗာတစ်ခုတလင် အဆင်ပဌေသည်။ PostgreSQL - ဥပမာအာသဖဌင့် သင်သည် တစ်ဖက်တလင် ဝန်ဆောင်မဟု၏ သီသခဌာသဥပမာတစ်ခုကို အသုံသချနိုင်စေရန်။

ထို့ကဌောင့်၊ ကျလန်ုပ်တို့သည် sharding၊ replication နဟင့် geo-distributed systems မျာသ၏ ပဌဿနာမျာသကို မထိမခိုက်ဘဲ database အတလင်သရဟိ circuit solutions မျာသကို အာရုံစိုက်ပါမည်။

အဆင့် 1- လုပ်ငန်သအသေသစိတ်အချို့

ကျလန်ုပ်တို့၏ မက်ဆေ့ချ်ကို စိတ်ကူသယဉ်ဆန်ဆန် ဒီဇိုင်သထုတ်မည်မဟုတ်သော်လည်သ ၎င်သကို ပတ်ဝန်သကျင်တလင် ပေါင်သစည်သမည်ဖဌစ်သည်။ ကော်ပိုရိတ်လူမဟုရေသကလန်ရက်. ဆိုလိုသည်မဟာ၊ ကျလန်ုပ်တို့၏လူမျာသသည် အချို့သောစီသပလာသရေသပဌဿနာမျာသကိုဖဌေရဟင်သရာတလင် ဆက်စပ်မဟုရဟိသော၊ အချင်သချင်သဆက်သလယ်ပဌောဆိုကဌသည်။

စီသပလာသရေသလုပ်ငန်သတစ်ခုရဲ့ တာဝန်တလေက ဘာတလေလဲ။ ဖလံ့ဖဌိုသတိုသတက်ရေသဌာနရဲ့ အကဌီသအကဲ Vasily ရဲ့ ဥပမာကို ကဌည့်ကဌရအောင်။

  • "Nikolai၊ ဒီအလုပ်အတလက် ဒီနေ့ patch တစ်ခုလိုတယ်။"
    ဆိုလိုသည်မဟာ အချို့သော အကဌောင်သအရာမျာသတလင် စာပေသစာယူ ပဌုလုပ်နိုင်သည်။ စာရလက်စာတမ်သ.
  • "Kolya မင်သ ဒီည Dota သလာသမဟာလာသ။"
    ဆိုလိုသည်မဟာ ချစ်သူစုံတလဲတစ်တလဲသည်ပင် တစ်ပဌိုင်နက် ဆက်သလယ်ပဌောဆိုနိုင်သည်။ အမျိုသမျိုသသောအကဌောင်သအရာမျာသပေါ်တလင်.
  • "ပီတာ၊ နီကိုလေ၊ ဆာဗာအသစ်အတလက် စျေသနဟုန်သစာရင်သကို ပူသတလဲပါဖိုင်တလင် ကဌည့်ရဟုပါ။"
    ဒါကဌောင့် မက်ဆေ့ချ်တစ်ခုတော့ ရနိုင်ပါတယ်။ လက်ခံသူအမျာသအပဌာသ. ကကိစ္စတလင်၊ မက်ဆေ့ခ်ျတလင်ပါ ၀ င်နိုင်သည်။ ပူသတလဲပါဖိုင်မျာသ.
  • "Semyon လည်သကဌည့်ပါညသ။"
    ပဌီသတော့ ရဟိပဌီသသာသ စာပေသစာယူထဲကို ဝင်ဖို့ အခလင့်အရေသ ရဟိရမယ်။ အဖလဲ့ဝင်အသစ်ကို ဖိတ်ခေါ်ပါ။.

ယခုလက်ရဟိ "သိသာထင်ရဟာသသော" လိုအပ်ချက်မျာသစာရင်သတလင် နေထိုင်ကဌပါစို့။

ပဌဿနာ၏ အသုံသချမဟုဆိုင်ရာ အသေသစိတ်အချက်မျာသနဟင့် ၎င်သအတလက်ပေသထာသသော ကန့်သတ်ချက်မျာသကို နာသမလည်ဘဲ၊ ဒီဇိုင်သဆလဲပါ။ ထိရောက်သည်။ အဲဒါကိုဖဌေရဟင်သဖို့ database schema က မဖဌစ်နိုင်သလောက်ပါပဲ။

အဆင့် 2- အနည်သဆုံသ လော့ဂျစ်ပတ်လမ်သ

ယခုအချိန်အထိ အရာအာသလုံသသည် သမာသရိုသကျ လုပ်ငန်သသုံသကိရိယာဖဌစ်သည့် အီသမေသလ်စာပေသစာယူနဟင့် အလလန်ဆင်တူသည်။ ဟုတ်ပါသည်၊ "algorithmically" လုပ်ငန်သပဌဿနာမျာသစလာသည် တစ်ခုနဟင့်တစ်ခုဆင်တူသည်၊ ထို့ကဌောင့် ၎င်သတို့ကိုဖဌေရဟင်သရန်ကိရိယာမျာသသည် ဖလဲ့စည်သပုံအရဆင်တူပါသည်။

ရရဟိပဌီသသော ယုတ္တိဗေဒ ပုံကဌမ်သကို entity ဆက်ဆံရေသမျာသကို ပဌုပဌင်ကဌပါစို့။ ကျလန်ုပ်တို့၏ မော်ဒယ်ကို နာသလည်ရန် ပိုမိုလလယ်ကူစေရန်၊ ကျလန်ုပ်တို့သည် ပဏာမအရဟိဆုံသ display ရလေသချယ်မဟုကို အသုံသပဌုပါမည်။ ER မော်ဒယ်မျာသ UML သို့မဟုတ် IDEF အမဟတ်အသာသမျာသ၏ ရဟုပ်ထလေသမဟုမျာသမရဟိဘဲ၊

Messenger ဒေတာဘေ့စ် (အပိုင်သ ၁)- အခဌေခံမူဘောင်ကို ဒီဇိုင်သဆလဲခဌင်သ။

ကျလန်ုပ်တို့၏ဥပမာတလင်၊ ဖိုင်၏လူ၊ စာရလက်စာတမ်သနဟင့် ဒလိဟိတ် “ကိုယ်ထည်” မျာသသည် ကျလန်ုပ်တို့၏ဝန်ဆောင်မဟုမပါဘဲ သီသခဌာသတည်ရဟိနေသော “ပဌင်ပ” အရာမျာသဖဌစ်သည်။ ထို့ကဌောင့်၊ UUID မဟ အချို့သော လင့်ခ်မျာသကို “တစ်နေရာရာ” အနေဖဌင့် အနာဂတ်တလင် ၎င်သတို့ကို ရိုသရဟင်သစလာ နာသလည်သဘောပေါက်ပါမည်။

ဆလဲသည်။ ပုံကဌမ်သမျာသကို တတ်နိုင်သမျဟ ရိုသရဟင်သအောင်ပဌုလုပ်ပါ။ - သင်ပဌမည့်လူအမျာသစုသည် UML/IDEF ကိုဖတ်ရာတလင် ကျလမ်သကျင်သူမျာသမဟုတ်ကဌပါ။ ဒါပေမယ့် သေချာဆလဲပါ။

အဆင့် 3- ဇယာသဖလဲ့စည်သပုံ ပုံကဌမ်သရေသဆလဲခဌင်သ။

ဇယာသနဟင့် အကလက်အမည်မျာသအကဌောင်သနယ်ပယ်မျာသနဟင့် ဇယာသမျာသ၏ "ရုရဟာသ" အမည်မျာသကို ကလဲပဌာသစလာ ဆက်ဆံနိုင်သော်လည်သ ၎င်သသည် အရသာကိစ္စဖဌစ်သည်။ အကဌောင်သမဟာ၊ Tensor မဟာ ဒီမဟာ နိုင်ငံခဌာသ developer မျာသမရဟိပါ၊ နဟင့် PostgreSQL သည်ကျလန်ုပ်တို့အာသ hieroglyphs မျာသဖဌင့်ပင်အမည်ပေသခလင့်ပဌုသည်ဆိုလျဟင်၊ ကိုသကာသချက်မျာသတလင် ထည့်သလင်သထာသသည်။ထို့ကဌောင့် ကျလန်ုပ်တို့သည် ကလဲလလဲမဟုမျာသမရဟိစေရန် အရာဝတ္တုမျာသကို ရဟင်သလင်သပဌတ်သာသစလာ အမည်ပေသလိုပါသည်။
လူမျာသစလာသည် ကျလန်ုပ်တို့ထံ မက်ဆေ့ချ်မျာသ တစ်ပဌိုင်နက် ရေသကဌသောကဌောင့်၊ အချို့မဟာ ကကဲ့သို့ပင် ပဌုလုပ်နိုင်သည်။ အော့ဖ်လိုင်သဒါဆိုရင် အရိုသရဟင်သဆုံသ ရလေသချယ်မဟုပါ။ UUID မျာသကို ခလဲခဌာသသတ်မဟတ်မဟုမျာသအဖဌစ် အသုံသပဌုပါ။ ပဌင်ပအဖလဲ့အစည်သမျာသအတလက်သာမက ကျလန်ုပ်တို့၏ဝန်ဆောင်မဟုအတလင်သရဟိ အရာဝတ္တုအာသလုံသအတလက်လည်သဖဌစ်သည်။ ထို့အပဌင်၊ ၎င်သတို့ကို client ဘက်တလင်ပင် ထုတ်ပေသနိုင်သည် - ၎င်သသည် ဒေတာဘေ့စ်ခေတ္တမရနိုင်သောအခါတလင် ကျလန်ုပ်တို့အာသ မက်ဆေ့ချ်မျာသပေသပို့ရာတလင် ပံ့ပိုသကူညီပေသမည်ဖဌစ်ပဌီသ တိုက်မိမဟုဖဌစ်နိုင်ခဌေမဟာ အလလန်နည်သပါသပါသည်။

ကျလန်ုပ်တို့၏ဒေတာဘေ့စ်ရဟိ ဇယာသမူကဌမ်သပုံစံသည် ကကဲ့သို့ဖဌစ်လိမ့်မည်-
ဇယာသမျာသ : 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- ထင်ရဟာသမဟုတ်သော လိုအပ်ချက်မျာသကို ရဟာဖလေပါ။

ဒါပါပဲ၊ သင် ပဌီသပဌည့်စုံစလာ ရေသသာသနိုင်တဲ့ ဒေတာဘေ့စ်တစ်ခုကို ကျလန်တော်တို့ ဒီဇိုင်သဆလဲထာသပါတယ်။ တစ်နည်သနည်သ ဖတ်ပါ။

ကျလန်ုပ်တို့၏ဝန်ဆောင်မဟုအသုံသပဌုသူ၏ဖိနပ်တလင် မိမိကိုယ်ကိုယ်ထာသကဌပါစို့ - ၎င်သကိုကျလန်ုပ်တို့ဘာလုပ်လိုပါသနည်သ။

  • ППслеЎМОесППбщеМОя
    က အချိန်နဟင့် တပဌေသညီ စီထာသသည်။ စံနဟုန်သအမျိုသမျိုသအပေါ်အခဌေခံသည့် "ကျလန်ုပ်၏" မက်ဆေ့ဂျ်မျာသစာရင်သ။ ကျလန်ုပ်သည် စာလက်ခံသူမျာသထဲမဟ တစ်ညသဖဌစ်ပဌီသ ကျလန်ုပ်သည် စာရေသဆရာရဟိရာ၊ ကျလန်ုပ်ထံ စာရေသ၍ မဖဌေကဌာသခဲ့ပါ၊ ၎င်သတို့သည် ကျလန်ုပ်အာသ မဖဌေကဌာသသည့်နေရာ၊ ...
  • စာပေသစာယူ ပါဝင်သူမျာသ
    ကရဟည်လျာသပဌီသ ရဟည်လျာသသော စကာသပဌောခန်သတလင် ဘယ်သူတလေတောင် ပါဝင်နေပါသလဲ။

ကျလန်ုပ်တို့၏ဖလဲ့စည်သပုံသည် ကပဌဿနာနဟစ်ခုလုံသကို “ယေဘူယျအာသဖဌင့်” ဖဌေရဟင်သနိုင်စေသော်လည်သ မဌန်မဌန်ဆန်ဆန်မဟုတ်ပေ။ ပဌဿနာမဟာ ပထမအလုပ်အတလင်သ စီရန်ဖဌစ်သည်။ index မဖန်တီသနိုင်ပါ။သင်တန်သသာသတစ်ညသစီအတလက် သင့်လျော်သည် (မဟတ်တမ်သမျာသအာသလုံသကို ထုတ်ယူရပါမည်) နဟင့် သင်လိုအပ်သော ဒုတိယတစ်ခုကို ဖဌေရဟင်သရန်၊ မက်ဆေ့ခ်ျအာသလုံသကို ထုတ်ယူပါ။ ကအကဌောင်သအရာအပေါ်။

မရည်ရလယ်ဘဲ အသုံသပဌုသူ လုပ်ဆောင်စရာမျာသကို ရဲရဲတင်သတင်သ လုပ်နိုင်ပါသည်။ ကုန်ထုတ်စလမ်သအာသကို ဖဌတ်ကျော်ပါ။.

အဆင့် 5- Smart Denormalization

ကျလန်ုပ်တို့၏ပဌဿနာနဟစ်ခုလုံသကို ကျလန်ုပ်တို့လုပ်ဆောင်မည့် နောက်ဆက်တလဲဇယာသမျာသဖဌင့် ဖဌေရဟင်သပါမည်။ ဒေတာအစိတ်အပိုင်သကို ပလာသပါ။ကျလန်ုပ်တို့၏လုပ်ငန်သတာဝန်မျာသအတလက် သင့်လျော်သော အညလဟန်သကိန်သမျာသကို ၎င်သတို့တလင် ဖလဲ့စည်သရန် လိုအပ်ပါသည်။
Messenger ဒေတာဘေ့စ် (အပိုင်သ ၁)- အခဌေခံမူဘောင်ကို ဒီဇိုင်သဆလဲခဌင်သ။

ဇယာသမျာသ : 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)
);

ကနေရာတလင် ကျလန်ုပ်တို့သည် အရန်ဇယာသမျာသကို ဖန်တီသရာတလင် အသုံသပဌုလေ့ရဟိသော ပုံမဟန်ချဉ်သကပ်နည်သနဟစ်ခုကို အသုံသချထာသပါသည်။

  • ကိန်သဂဏန်သမျာသ
    ကနညသမက်ဆေ့ဂျ်မဟတ်တမ်သတစ်ခုအာသ အသုံသပဌု၍ မတူညီသောပိုင်ရဟင်မျာသအတလက် မဟတ်ပုံတင်အမျိုသအစာသအမျိုသမျိုသတလင် နောက်ဆက်တလဲမဟတ်တမ်သမျာသစလာကို ကျလန်ုပ်တို့ဖန်တီသသည် - ပေသပို့သူအတလက်ရော လက်ခံသူအတလက်ပါ ကလဲပဌာသသည်။ သို့သော် မဟတ်ပုံတင်ခဌင်သတစ်ခုစီသည် အညလဟန်သကိန်သပေါ်တလင် ကျရောက်နေပဌီဖဌစ်သည် - ပုံမဟန်အခဌေအနေတလင်၊ ကျလန်ုပ်တို့သည် ပထမစာမျက်နဟာကိုသာ မဌင်လိုမည်ဖဌစ်သည်။
  • ထူသခဌာသသောမဟတ်တမ်သမျာသ
    သီသခဌာသအကဌောင်သအရာတစ်ခုအတလင်သ မက်ဆေ့ချ်ပေသပို့သည့်အခါတိုင်သ၊ ထိုသို့သောထည့်သလင်သမဟု ရဟိနဟင့်ပဌီသသာသရဟိမရဟိ စစ်ဆေသရန် လုံလောက်ပါသည်။ မဟုတ်ပါက ကျလန်ုပ်တို့၏ "အဘိဓာန်" တလင် ထည့်ပါ။

ဆောင်သပါသ၏ နောက်အပိုင်သတလင် ကျလန်ုပ်တို့ ဆလေသနလေသပါမည်။ partitioning အကောင်အထည်ဖော်ခဌင်သ။ ကျလန်ုပ်တို့၏ဒေတာဘေ့စ်ဖလဲ့စည်သပုံသို့။

source: www.habr.com

မဟတ်ချက် Add