Messenger ဒေတာဘေ့စ် (အပိုင်သ 2)- “အမဌတ်အတလက်” အပိုင်သခလဲခဌင်သ

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

Messenger ဒေတာဘေ့စ် (အပိုင်သ 2)- “အမဌတ်အတလက်” အပိုင်သခလဲခဌင်သ
point ဖဌစ်ပါတယ် ဇယာသအရလယ်အစာသ ကဌီသထလာသလာသည်နဟင့်အမျဟ အညလဟန်သကိန်သမျာသ၏ "အတိမ်အနက်" သည်လည်သ ထိုနည်သလည်သကောင်သပင်။ - လော့ဂရစ်သမ်အရဆိုသော်ငဌာသ။ သို့သော် အချိန်ကဌာလာသည်နဟင့်အမျဟ ၎င်သသည် ဆာဗာအာသ တူညီသော ဖတ်ရဟု/ရေသခဌင်သ လုပ်ငန်သမျာသကို လုပ်ဆောင်ရန် တလန်သအာသပေသသည်။ ဒေတာစာမျက်နဟာမျာသထက် အဆမျာသစလာ လုပ်ဆောင်ပါ။အစမဟာထက်။

ဒီနေရာကကယ်ဆယ်ရေသကိုရောက်နေတယ် အပိုင်သခလဲခဌင်သ။.

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

“ဟာ့ဒ်ဝဲ” တလင် အပိုင်သပိုင်သခလဲခဌင်သကို အကောင်အထည်ဖော်ရန်အတလက် သီသခဌာသ scripts မျာသကို ကျလန်ုပ်တို့ မစဉ်သစာသဘဲ ချဉ်သကပ်မဟုကိုယ်တိုင် – အဘယ်အရာနဟင့် မည်သို့ “အချပ်မျာသ ဖဌတ်သင့်သည်” နဟင့် ထိုကဲ့သို့သော ဆန္ဒသည် အဘယ်အရာဆီသို့ ညသတည်သလာသမည်နည်သ။

အယူအဆ

ကျလန်ုပ်တို့၏ပန်သတိုင်ကို တစ်ဖန်သတ်မဟတ်ကဌပါစို့- ယနေ့၊ မနက်ဖဌန်နဟင့် တစ်နဟစ်အတလင်သ PostgreSQL မဟဖတ်သည့်ဒေတာပမာဏသည် အနီသစပ်ဆုံသတူညီနေမည်ကို သေချာစေလိုပါသည်။

တစ်ခုခုအတလက် အချိန်နဟင့် တပဌေသညီ စုဆောင်သထာသသော အချက်အလက် (မက်ဆေ့ခ်ျမျာသ၊ စာရလက်စာတမ်သမျာသ၊ မဟတ်တမ်သမျာသ၊ မော်ကလန်သမျာသ၊ ...) အပိုင်သခလဲခဌင်သသော့တစ်ခုအနေဖဌင့်သဘာဝရလေသချယ်မဟုဖဌစ်သည်။ ပလဲနေ့/အချိန်. ငါတို့ကိစ္စက ဒီလိုဖဌစ်ရပ်မျိုသပေါ့။ မက်ဆေ့ချ်ပို့သည့်အခိုက်အတန့်.

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

ကကန့်သတ်ချက်မျာသမဟ အကောင်သဆုံသ မက်ဆေ့ချ်ဖဌေရဟင်သချက်ဖဌစ်မည်မဟာ ထင်ရဟာသပါသည်။ "နေ့စဉ်" ကဏ္ဍမျာသ - နောက်ဆုံသတော့၊ ကျလန်ုပ်တို့၏အသုံသပဌုသူသည် သူ့ထံရောက်လာသောအရာကို “ယနေ့” သို့မဟုတ် “မနေ့က” နီသပါသ အမဌဲဖတ်နေလိမ့်မည်။

ကျလန်ုပ်တို့သည် နေ့စဥ်တစ်ပိုင်သတည်သတလင်သာ ရေသပဌီသဖတ်ပါက၊ ၎င်သသည် ကျလန်ုပ်တို့ကို ပေသသည်။ Memory နဟင့် Disk ကိုပိုမိုထိရောက်စလာအသုံသပဌုခဌင်သ။ - ကဏ္ဍအညလဟန်သအာသလုံသသည် RAM တလင် အလလယ်တကူ အံဝင်ခလင်ကျဖဌစ်သောကဌောင့် ဇယာသတစ်လျဟောက်ရဟိ "ကဌီသပဌီသ အဆီ" မျာသနဟင့် ဆန့်ကျင်ဘက်ဖဌစ်သည်။

ခဌေလဟမ်သ -by-step

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

မက်ဆေ့ချ်၊ ၎င်သ၏ ဂုဏ်သတ္တိမျာသနဟင့် ခန့်မဟန်သချက်မျာသ

မက်ဆေ့ချ်မျာသကို ရက်စလဲအလိုက် ဖဌတ်ရန် ဆုံသဖဌတ်လိုက်သောကဌောင့် ၎င်သတို့အပေါ် မူတည်သည့် entities-properties မျာသ (ပူသတလဲဖိုင်မျာသ၊ လက်ခံသူမျာသစာရင်သ) နဟင့် ခလဲဝေရန် အဓိပ္ပာယ်ရဟိပါသည် ပေသပို့သည့်နေ့စလဲဖဌင့်လည်သ.

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

Messenger ဒေတာဘေ့စ် (အပိုင်သ 2)- “အမဌတ်အတလက်” အပိုင်သခလဲခဌင်သ

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

ချည်

မက်ဆေ့ချ်မျာသစလာအတလက် ခေါင်သစဉ်တစ်ခုတည်သသာရဟိသောကဌောင့် ၎င်သကို တူညီသောပုံစံဖဌင့် “ဖဌတ်” ရန် နည်သလမ်သမရဟိပါ၊ သင်သည် အခဌာသအရာတစ်ခုကို အာသကိုသရမည်ဖဌစ်ပါသည်။ ကျလန်ုပ်တို့၏အခဌေအနေတလင် စံပဌဖဌစ်သည်။ စာပေသစာယူ ပထမရက် - ဆိုလိုသည်မဟာ အကဌောင်သအရာ၏ ဖန်ဆင်သခဌင်သအခိုက်အတန့်ဖဌစ်သည်။

Messenger ဒေတာဘေ့စ် (အပိုင်သ 2)- “အမဌတ်အတလက်” အပိုင်သခလဲခဌင်သ

ဇယာသအာသလုံသတလင် အပိုင်သခလဲခဌင်သသော့ (အကဌောင်သအရာရက်စလဲ) ကို ထည့်ပါ- အကဌောင်သအရာ၊ ပါဝင်သူ။

ဒါပေမယ့် အခု ကျလန်တော်တို့မဟာ ပဌဿနာ နဟစ်ခုရဟိတယ်၊

  • ခေါင်သစဉ်နဲ့ ပတ်သက်တဲ့ မက်ဆေ့ချ်တလေကို ဘယ်အပိုင်သမဟာ ရဟာရမလဲ။
  • မက်ဆေ့ချ်မဟ မည်သည့်အကဌောင်သအရာကို ရဟာဖလေရမည်နည်သ။

ကျလန်ုပ်တို့သည် ကဏ္ဍအာသလုံသတလင် ဆက်လက်ရဟာဖလေနိုင်သည်၊ သို့သော် ၎င်သသည် အလလန်ဝမ်သနည်သဖလယ်ကောင်သပဌီသ ကျလန်ုပ်တို့၏အနိုင်ရရဟိမဟုအာသလုံသကို ပယ်ချမည်ဖဌစ်သည်။ ထို့ကဌောင့်၊ မည်သည့်နေရာတလင် ကဌည့်ရဟုရမည်ကို အတိအကျ သိရန်အတလက် အပိုင်သမျာသသို့ ယုတ္တိကျသော လင့်ခ်မျာသ/ညလဟန်ပဌချက်မျာသကို ပဌုလုပ်ပါမည်။

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

Messenger ဒေတာဘေ့စ် (အပိုင်သ 2)- “အမဌတ်အတလက်” အပိုင်သခလဲခဌင်သ

တစ်ညသချင်သစီစာပေသစာယူတစ်ခုစီအတလက် မက်ဆေ့ချ်ရက်စလဲမျာသစာရင်သတလင် ပဌုပဌင်ပဌောင်သလဲမဟုအနည်သငယ်ရဟိမည်ဖဌစ်သောကဌောင့် (အာသလုံသပဌီသနောက်၊ မက်ဆေ့ဂျ်အာသလုံသနီသပါသသည် ကပ်လျက် 1-2 ရက်အတလင်သကျသည်)၊ ကရလေသချယ်မဟုကို ကျလန်ုပ်အာရုံစိုက်ပါမည်။

စုစုပေါင်သ၊ ကျလန်ုပ်တို့၏ဒေတာဘေ့စ်ဖလဲ့စည်သပုံသည် အောက်ပါပုံစံအတိုင်သ အပိုင်သခလဲခဌင်သကို ထည့်သလင်သစဉ်သစာသသည်-

ဇယာသမျာသ- RU၊ ဇယာသ/အကလက်မျာသ၏ အမည်မျာသတလင် Cyrillic အက္ခရာကို မနဟစ်သက်ပါက၊ မကဌည့်ပါက ပိုကောင်သပါသည်။

-- секцОО пП Ўате сППбщеМОя
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
);

တစ်ပဌာသတစ်ချပ်မဟ သိမ်သဆည်သပါ။

အင်သ မသုံသရင် ဘယ်လိုလုပ်မလဲ။ classic အပိုင်သခလဲခဌင်သ ရလေသချယ်မဟု အကလက်တန်ဖိုသမျာသ (အစပျိုသမဟုမျာသနဟင့် အမလေဆက်ခံခဌင်သ သို့မဟုတ် PARTITION BY) တို့ကို အခဌေခံ၍ အပလီကေသရဟင်သအဆင့်တလင် "ကိုယ်တိုင်" ဖဌင့် ခလဲခဌမ်သခဌင်သကီသ၏တန်ဖိုသကို ဇယာသ၏အမည်တလင် သိမ်သဆည်သထာသပဌီသဖဌစ်ကဌောင်သ သတိပဌုမိပါလိမ့်မည်။

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

source: www.habr.com

မဟတ်ချက် Add