á á¬áá±ážá á¬áá°ááᯠááááºážáááºážáááºá¡ááœáẠáá»áœááºá¯ááºááá¯á·á PostgreSQL áá±áá¬áá±á·á áºá ááœá²á·á ááºážáá¯á¶ááᯠá¡á±á¬ááºááŒááºá áœá¬ áá®ááá¯ááºážááœá²ááŒá®áž áá áºááŸá áºáá»á±á¬áºááœá¬ážáá«ááŒá®á á¡áá¯á¶ážááŒá¯áá°áá»á¬ážááẠáááºážááᯠáááºááŒáœá áœá¬ ááŒáá·áºááœááºážáá±ááŒááŒá®á ááá¯á¡áá« áááºážááœáẠáá«áááºáá«áááºá áááºážáá±á«ááºážáá»á¬ážá áœá¬áá±á¬ ááŸááºáááºážáá»á¬ážááŸáá·áº... áá áºáá¯áᯠááŸá±ážááœá±ážáá¬áááºá
á¡ááá¯ááºáž 1- á¡ááŒá±áá¶áá±á¬ááºááᯠáá®ááá¯ááºážááœá²ááŒááºážá - á¡ááá¯ááºáž 2- "á¡ááŒááºá¡á áœááºážá¡ááœááº" ááá¹áááœá²ááŒááºáž
point ááŒá
áºáá«ááẠááá¬ážá¡ááœááºá¡á
á¬áž ááŒá®ážááœá¬ážáá¬áááºááŸáá·áºá¡áá»áŸ á¡ááœáŸááºážááááºážáá»á¬ážá "á¡ááááºá¡áááº" áááºáááºáž ááá¯áááºážáááºážáá±á¬ááºážáááºá - áá±á¬á·ááá
áºáááºá¡áááá¯áá±á¬áºááŒá¬ážá ááá¯á·áá±á¬áº á¡áá»áááºááŒá¬áá¬áááºááŸáá·áºá¡áá»áŸ áááºážááẠáá¬áá¬á¡á¬áž áá°áá®áá±á¬ áááºááŸá¯/áá±ážááŒááºáž áá¯ááºáááºážáá»á¬ážááᯠáá¯ááºáá±á¬ááºááẠááœááºážá¡á¬ážáá±ážáááºá áá±áá¬á
á¬áá»ááºááŸá¬áá»á¬ážááẠá¡ááá»á¬ážá
áœá¬ áá¯ááºáá±á¬ááºáá«áá¡á
ááŸá¬áááºá
áá®áá±áá¬ááááºáááºáá±ážááá¯áá±á¬ááºáá±ááẠá¡ááá¯ááºážááœá²ááŒááºážá.
áá»áœááºá¯ááºááá¯á·ááẠááá°áá®áá±á¬áá±áá¬áá±á·á
áºáá»á¬áž ááá¯á·ááá¯áẠáá¬áá¬áá»á¬ážááŒá¬ážááœáẠáá±áá¬ááŒáá·áºáá±ááŒááºážá¡ááŒá±á¬ááºážááᯠáá»áŸáá±ááŒááºážá¡ááŒá±á¬ááºáž áááŒá±á¬áááºááᯠáá»áœááºá¯ááºáááááŒá¯áááá«áá
á±á áá¬ááŒá±á¬áá·áºáá² ááá¯áá±á¬á· áá±áá¬ááœá±ááá¯áá±á¬áẠááá¯ááºážááŒá¬ážáá¬ážáááºá á¡áá±á¬áºááŒá¬ áá¬áá¬áá»á¬ážá áááºááẠá¡áá»áááºááŒá¬áá¬áááºááŸáá·áºá¡áá»áŸ á¡ááœáŸááºážááááºážáá»á¬áž âáá±á¬ááºáááºážááŒááºážâ ááŒá¿áá¬ááᯠáááºááŸá¬ážáá
áºáááºááá¯ááºáá«á á¡áááºá áááºááẠáá¬áá¬á¡áá
áºáá
áºáá¯ááᯠáá±á·ááá¯ááºážáá¯ááºáá±á¬ááºááẠáááºááá¯ááºáá«áá áááºáááŒá¿áá¬áá»á¬ážááẠáá®ážááŒá¬ážáá±áá¬áá±á·á
áºáá
áºáá¯á áá±áá¬ááºááœáẠáá¯á¶ážááááŸááá±á¬á·ááŒá±á¬ááºáž ááŸááºážáá«áááºá
âáá¬á·ááºáá²â ááœáẠá¡ááá¯ááºážááá¯ááºážááœá²ááŒááºážááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºáááºá¡ááœáẠáá®ážááŒá¬áž scripts áá»á¬ážááᯠáá»áœááºá¯ááºááá¯á· áá ááºážá á¬ážáá² áá»ááºážáááºááŸá¯ááá¯ááºááá¯áẠâ á¡áááºá¡áá¬ááŸáá·áº áááºááá¯á· âá¡áá»ááºáá»á¬áž ááŒááºááá·áºáááºâ ááŸáá·áº ááá¯áá²á·ááá¯á·áá±á¬ ááá¹áááẠá¡áááºá¡áá¬áá®ááá¯á· áŠážáááºááœá¬ážáááºáááºážá
á¡áá°á¡á
áá»áœááºá¯ááºááá¯á·ááááºážááá¯ááºááᯠáá áºáááºáááºááŸááºááŒáá«á áá¯á·- ááá±á·á ááááºááŒááºááŸáá·áº áá áºááŸá áºá¡ááœááºáž PostgreSQL ááŸáááºááá·áºáá±áá¬ááá¬áááẠá¡áá®ážá ááºáá¯á¶ážáá°áá®áá±áááºááᯠáá±áá»á¬á á±ááá¯áá«áááºá
áá áºáá¯áá¯á¡ááœáẠá¡áá»áááºááŸáá·áº áááŒá±ážáá® á á¯áá±á¬ááºážáá¬ážáá±á¬ á¡áá»ááºá¡ááẠ(áááºáá±á·ááºá»áá»á¬ážá á á¬ááœááºá á¬áááºážáá»á¬ážá ááŸááºáááºážáá»á¬ážá áá±á¬áºááœááºážáá»á¬ážá ...) á¡ááá¯ááºážááœá²ááŒááºážáá±á¬á·áá áºáá¯á¡áá±ááŒáá·áºááá¬áááœá±ážáá»ááºááŸá¯ááŒá áºáááºá ááœá²áá±á·/á¡áá»áááº. áá«ááá¯á·ááá á¹á á áá®ááá¯ááŒá áºáááºáá»áá¯ážáá±á«á·á áááºáá±á·áá»áºááá¯á·ááá·áºá¡ááá¯ááºá¡ááá·áº.
á¡áá¯á¶ážááŒá¯áá°áá»á¬áž á¡ááŒá²ááá¯ááᯠáááááŒá¯áá«á "áá±á¬ááºáá¯á¶ážáá±á«áº" áá»á¬ážááŸáá·áºáá¬á¡áá¯ááºáá¯ááºáá«á ááá¯áá²á·ááá¯á·áá±á¬áá±áᬠ- áá°ááá¯á·ááẠáá±á¬ááºáá¯á¶ážáááºáá±á·áá»áºáá»á¬ážááá¯áááºáááºá áá±á¬ááºáá¯á¶ážáá±á«áºááŸááºáááºážáá»á¬ážááᯠááœá²ááŒááºážá áááºááŒá¬ááŒáááºá ... áá¯ááºáá«áááºáá áá°ááá¯á·á á¡áá»áááºáá®áá±á¬ááºááŒááºááŸáá·áºááá¯ááºáá±ááá·áº áá«ááá¯áá¯ááºááᬠá¡ááœááºááŸá¬ážáá«áááºá
á€ááá·áºáááºáá»ááºáá»á¬ážá០á¡áá±á¬ááºážáá¯á¶áž áááºáá±á·áá»áºááŒá±ááŸááºážáá»ááºááŒá áºáááºááŸá¬ áááºááŸá¬ážáá«áááºá "áá±á·á ááº" ááá¹ááá»á¬áž - áá±á¬ááºáá¯á¶ážáá±á¬á·á áá»áœááºá¯ááºááá¯á·áá¡áá¯á¶ážááŒá¯áá°ááẠáá°á·áá¶áá±á¬ááºáá¬áá±á¬á¡áá¬ááᯠâááá±á·â ááá¯á·ááá¯áẠâááá±á·áâ áá®ážáá«áž á¡ááŒá²áááºáá±áááá·áºáááºá
áá»áœááºá¯ááºááá¯á·ááẠáá±á·á á¥áºáá áºááá¯ááºážáááºážááœááºáᬠáá±ážááŒá®ážáááºáá«áá áááºážááẠáá»áœááºá¯ááºááá¯á·ááᯠáá±ážáááºá Memory ááŸáá·áº Disk ááá¯ááá¯ááá¯áááá±á¬ááºá áœá¬á¡áá¯á¶ážááŒá¯ááŒááºážá - ááá¹áá¡ááœáŸááºážá¡á¬ážáá¯á¶ážááẠRAM ááœáẠá¡ááœááºááá° á¡á¶áááºááœááºáá»ááŒá áºáá±á¬ááŒá±á¬áá·áº ááá¬ážáá áºáá»áŸá±á¬ááºááŸá "ááŒá®ážááŒá®áž á¡áá®" áá»á¬ážááŸáá·áº ááá·áºáá»ááºáááºááŒá áºáááºá
ááŒá±ááŸááºáž -by-step
áá±áá°áá»á¡á¬ážááŒáá·áº á¡áááºááœááºááŒá±á¬áá²á·ááá·áºá¡áá¬á¡á¬ážáá¯á¶ážááẠá ááºáááºáááŒááºá¡áá»áá¯ážá¡ááŒááºáá áºáá¯ááŒá áºáááºá ááŒá®ážáá±á¬á· á¡á²áá«á á¡á±á¬ááºááŒááºááá¯ááºáá±ááá·áº áá®á¡ááœáẠáá»áœááºáá±á¬áºááá¯á· ááŒáá¯ážá á¬ážááá«áŠážáááºá á¡ááœá²á·á¡á ááºážáá áºáá¯á¡á¬áž ááá¯ááºážááŒá¬ážááẠáá¯á¶ážááŒááºáá»ááºááẠáááºá ááºááŸá¯ááᯠâááŒááºâ ááẠááá¯á¡ááºáá¬áááºá.
áááºáá±á·áá»áºá áááºážá áá¯ááºááá¹áááá»á¬ážááŸáá·áº ááá·áºááŸááºážáá»ááºáá»á¬áž
áááºáá±á·áá»áºáá»á¬ážááᯠáááºá áœá²á¡ááá¯áẠááŒááºááẠáá¯á¶ážááŒááºááá¯ááºáá±á¬ááŒá±á¬áá·áº áááºážááá¯á·á¡áá±á«áº áá°áááºááá·áº entities-properties áá»á¬áž (áá°ážááœá²ááá¯ááºáá»á¬ážá áááºáá¶áá°áá»á¬ážá á¬áááºáž) ááŸáá·áº ááœá²áá±ááẠá¡áááá¹áá¬ááºááŸááá«ááẠáá±ážááá¯á·ááá·áºáá±á·á áœá²ááŒáá·áºáááºáž.
áá»áœááºá¯ááºááá¯á·ááá¯á¶ááŸááºá¡áá¯ááºáá»á¬ážáá²ááŸáá áºáá¯ááẠáááºáá±á·áá»áºá á¬áááºážáá»á¬ážááᯠá¡ááá¡áá»ááŒáá·áºááŸá¯ááŒááºážááŒá áºááẠ(ááááºááá±ážáá±á¬á á¡áááºá á¡á¬ážáá¯á¶áž) ááŒá áºáá±á¬ááŒá±á¬áá·áº áááºáá±á·áá»áºáááºá áœá²áá»á¬ážá¡ááá¯áẠá¡ááá¯ááºážááá¯ááºážááœá²ááŒááºážááá¯á· âáá°ááá¯á·ááᯠááœá²ááœááºážâ áááºááŸá¬áááºáž áá¯áá¹áááááºáá«áááºá
áá»áœááºá¯ááºááá¯á·ááẠááá¬ážáá»á¬ážá¡á¬ážáá¯á¶ážááá¯á· á¡ááá¯ááºážááœá²ááŒááºážáá±á¬á· (áááºáá±á·áá»áºáááºá áœá²) ááᯠáá±á«ááºážááá·áºáááº- áááºáá¶áá°áá»á¬ážá ááá¯ááºá ááŸááºáá¯á¶áááºááŒááºážáá»á¬ážá áááºááẠáááºážááᯠáááºáá±á·áá»áºááá¯á· ááá·áºááẠáááá¯á¡ááºáá±á¬áºáááºáž ááŸáááŒá®ážáá¬áž DateTime ááᯠá¡áá¯á¶ážááŒá¯áá«á
áá»ááº
áááºáá±á·áá»áºáá»á¬ážá áœá¬á¡ááœáẠáá±á«ááºážá ááºáá áºáá¯áááºážáá¬ááŸááá±á¬ááŒá±á¬áá·áº áááºážááᯠáá°áá®áá±á¬áá¯á¶á á¶ááŒáá·áº âááŒááºâ ááẠáááºážáááºážáááŸááá«á áááºááẠá¡ááŒá¬ážá¡áá¬áá áºáá¯ááᯠá¡á¬ážááá¯ážááááºááŒá áºáá«áááºá áá»áœááºá¯ááºááá¯á·áá¡ááŒá±á¡áá±ááœáẠá á¶ááŒááŒá áºáááºá á á¬áá±ážá á¬áá° áááááẠ- ááá¯ááá¯áááºááŸá¬ á¡ááŒá±á¬ááºážá¡áá¬á áááºáááºážááŒááºážá¡ááá¯ááºá¡ááá·áºááŒá áºáááºá
ááá¬ážá¡á¬ážáá¯á¶ážááœáẠá¡ááá¯ááºážááœá²ááŒááºážáá±á¬á· (á¡ááŒá±á¬ááºážá¡áá¬áááºá áœá²) ááᯠááá·áºáá«- á¡ááŒá±á¬ááºážá¡áá¬á áá«áááºáá°á
áá«áá±ááá·áº á¡áᯠáá»áœááºáá±á¬áºááá¯á·ááŸá¬ ááŒá¿áᬠááŸá áºáá¯ááŸááááºá
- áá±á«ááºážá ááºáá²á· áááºáááºáá²á· áááºáá±á·áá»áºááœá±ááᯠáááºá¡ááá¯ááºážááŸá¬ ááŸá¬áááá²á
- áááºáá±á·áá»áºá០áááºááá·áºá¡ááŒá±á¬ááºážá¡áá¬ááᯠááŸá¬ááœá±ááááºáááºážá
áá»áœááºá¯ááºááá¯á·ááẠááá¹áá¡á¬ážáá¯á¶ážááœáẠáááºáááºááŸá¬ááœá±ááá¯ááºáááºá ááá¯á·áá±á¬áº áááºážááẠá¡ááœááºáááºážáááºážááœááºáá±á¬ááºážááŒá®áž áá»áœááºá¯ááºááá¯á·áá¡ááá¯ááºáááŸáááŸá¯á¡á¬ážáá¯á¶ážááᯠáááºáá»áááºááŒá áºáááºá ááá¯á·ááŒá±á¬áá·áºá áááºááá·áºáá±áá¬ááœáẠááŒáá·áºááŸá¯ááááºááᯠá¡ááá¡áá» áááááºá¡ááœáẠá¡ááá¯ááºážáá»á¬ážááá¯á· áá¯áá¹áááá»áá±á¬ ááá·áºááºáá»á¬áž/ááœáŸááºááŒáá»ááºáá»á¬ážááᯠááŒá¯áá¯ááºáá«áááºá
- áááºáá±á·áá»áºááŸá¬ ááá·áºáá«áááºá á¡ááŒá±á¬ááºážá¡áᬠáááºá áœá²á¡ááœááº
- áá±á«ááºážá ááºááᯠááá·áºááŒáá·áºáá¡á±á¬áẠáááºáá±á·áá»áºáááºá áœá² á€á á¬áá±ážá á¬áá°ááẠ(áá®ážááŒá¬ážááá¬ážáá áºáᯠááá¯á·ááá¯áẠáááºá áœá²áá»á¬ážáá áºáᯠááŒá áºááá¯ááºáááº)
áá
áºáŠážáá»ááºážá
á®á
á¬áá±ážá
á¬áá°áá
áºáá¯á
á®á¡ááœáẠáááºáá±á·áá»áºáááºá
áœá²áá»á¬ážá
á¬áááºážááœáẠááŒá¯ááŒááºááŒá±á¬ááºážáá²ááŸá¯á¡áááºážáááºááŸááááºááŒá
áºáá±á¬ááŒá±á¬áá·áº (á¡á¬ážáá¯á¶ážááŒá®ážáá±á¬ááºá áááºáá±á·áá»áºá¡á¬ážáá¯á¶ážáá®ážáá«ážááẠáááºáá»áẠ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
);
áá áºááŒá¬ážáá áºáá»ááºá០ááááºážáááºážáá«á
á¡ááºáž ááá¯á¶ážááẠáááºááá¯áá¯ááºááá²á
áá« ááá¯áááºáá±á¬á· áá«áá«áá²á ááááºážáááºážáá¬ážááá·áº áá±áá¬ááá¬áá¡ááœáẠááẠá¡ááœááºá
áá¯ážááááºáá±áá«ááá¬ážáááá¯á·áá±á¬áẠဠ"á¡ááá¯" á¡ááœááºáá»á¬ážááᯠáááºááŸá¬ážááá¯ááºááŒá®áž áááá»áá±á¬ ááá¬ážáá»á¬ážááᯠáááºááŸá¬ážááá¯ááºáá«áááºá ááŸááºáá«áááºá á€ááá
á¹á
áááºááœáẠááá¹ááá»á¬ážá
áœá¬á០ááœá±ážáá»ááºááŸá¯á¡á¬ážáá¯á¶ážááᯠá¡ááá®áá±ážááŸááºážáááºááá¯á· ááœáŸá²ááŒá±á¬ááºážááááºááŒá
áºáááºá
source: www.habr.com