рдореИрд╕реЗрдВрдЬрд░ рдбреЗрдЯрд╛рдмреЗрд╕ (рднрд╛рдЧ 1): рдЖрдзрд╛рд░ рдврд╛рдВрдЪреЗ рдХреЛ рдбрд┐рдЬрд╛рдЗрди рдХрд░рдирд╛

рд╢реБрд░реБрдЖрдд рд╕реЗ рд╣реА рдореИрд╕реЗрдВрдЬрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЛ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд░рдиреЗ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЖрдк рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдХреЛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдореЗрдВ рдХреИрд╕реЗ рдЕрдиреБрд╡рд╛рджрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдореИрд╕реЗрдВрдЬрд░ рдбреЗрдЯрд╛рдмреЗрд╕ (рднрд╛рдЧ 1): рдЖрдзрд╛рд░ рдврд╛рдВрдЪреЗ рдХреЛ рдбрд┐рдЬрд╛рдЗрди рдХрд░рдирд╛
рд╣рдорд╛рд░рд╛ рдЖрдзрд╛рд░ рдЙрддрдирд╛ рдмрдбрд╝рд╛ рдФрд░ рд╡рд┐рддрд░рд┐рдд рдирд╣реАрдВ рд╣реЛрдЧрд╛, VKontakte рдХреА рддрд░рд╣ рдпрд╛ Badoo, рд▓реЗрдХрд┐рди "рддрд╛рдХрд┐ рдпрд╣ рдерд╛", рд▓реЗрдХрд┐рди рдпрд╣ рдЕрдЪреНрдЫрд╛ рдерд╛ - рдХрд╛рд░реНрдпрд╛рддреНрдордХ, рддреЗрдЬрд╝ рдФрд░ рдПрдХ рд╕рд░реНрд╡рд░ рдкрд░ рдлрд╝рд┐рдЯ рдХрд░реЗрдВ PostgreSQL - рддрд╛рдХрд┐ рдЖрдк рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрд╣реАрдВ рдХрд┐рдирд╛рд░реЗ рдкрд░ рд╕реЗрд╡рд╛ рдХрд╛ рдПрдХ рдЕрд▓рдЧ рдЙрджрд╛рд╣рд░рдг рддреИрдирд╛рдд рдХрд░ рд╕рдХреЗрдВред

рдЗрд╕рд▓рд┐рдП, рд╣рдо рд╢рд╛рд░реНрдбрд┐рдВрдЧ, рдкреНрд░рддрд┐рдХреГрддрд┐ рдФрд░ рднреВ-рд╡рд┐рддрд░рд┐рдд рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдореБрджреНрджреЛрдВ рдкрд░ рдзреНрдпрд╛рди рдирд╣реАрдВ рджреЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рдЕрдВрджрд░ рд╕рд░реНрдХрд┐рдЯ рд╕рдорд╛рдзрд╛рди рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░реЗрдВрдЧреЗред

рдЪрд░рдг 1: рдХреБрдЫ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛рдПрдБ

рд╣рдо рдЕрдкрдиреЗ рд╕рдВрджреЗрд╢ рдХреЛ рдЕрдореВрд░реНрдд рд░реВрдк рд╕реЗ рдбрд┐рдЬрд╝рд╛рдЗрди рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ, рдмрд▓реНрдХрд┐ рдЗрд╕реЗ рдкрд░реНрдпрд╛рд╡рд░рдг рдореЗрдВ рдПрдХреАрдХреГрдд рдХрд░реЗрдВрдЧреЗ рдХреЙрд░реНрдкреЛрд░реЗрдЯ рд╕реЛрд╢рд▓ рдиреЗрдЯрд╡рд░реНрдХ. рдЕрд░реНрдерд╛рддреН, рд╣рдорд╛рд░реЗ рд▓реЛрдЧ "рдХреЗрд╡рд▓ рдкрддреНрд░-рд╡реНрдпрд╡рд╣рд╛рд░" рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдмрд▓реНрдХрд┐ рдХреБрдЫ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдПрдХ-рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рд╕рдВрд╡рд╛рдж рдХрд░рддреЗ рд╣реИрдВред

рдФрд░ рдПрдХ рд╡реНрдпрд╡рд╕рд╛рдп рдХреЗ рдХрд╛рд░реНрдп рдХреНрдпрд╛ рд╣реИрдВ?.. рдЖрдЗрдП рд╡рд┐рдХрд╛рд╕ рд╡рд┐рднрд╛рдЧ рдХреЗ рдкреНрд░рдореБрдЦ рд╡рд╕реАрд▓реА рдХрд╛ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВред

  • "рдирд┐рдХреЛрд▓рд╛рдИ, рдЗрд╕ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдЖрдЬ рдПрдХ рдкреИрдЪ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ!"
    рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдХреБрдЫ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдкрддреНрд░рд╛рдЪрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝.
  • "рдХреЛрд▓реНрдпрд╛, рдХреНрдпрд╛ рддреБрдо рдЖрдЬ рд╢рд╛рдо рдбреЛрдЯрд╛ рдЬрд╛ рд░рд╣реА рд╣реЛ?"
    рдЕрд░реНрдерд╛рддреН, рд╡рд╛рд░реНрддрд╛рдХрд╛рд░реЛрдВ рдХрд╛ рдПрдХ рдЬреЛрдбрд╝рд╛ рднреА рдПрдХ рд╕рд╛рде рд╕рдВрд╡рд╛рдж рдХрд░ рд╕рдХрддрд╛ рд╣реИ рд╡рд┐рднрд┐рдиреНрди рд╡рд┐рд╖рдпреЛрдВ рдкрд░.
  • "рдкреАрдЯрд░, рдирд┐рдХреЛрд▓реЗ, рдирдП рд╕рд░реНрд╡рд░ рдХреЗ рд▓рд┐рдП рдореВрд▓реНрдп рд╕реВрдЪреА рдХреЗ рдЕрдиреБрд▓рдЧреНрдирдХ рдореЗрдВ рджреЗрдЦреЗрдВред"
    рддреЛ, рдПрдХ рд╕рдВрджреЗрд╢ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЕрдиреЗрдХ рдкреНрд░рд╛рдкреНрддрдХрд░реНрддрд╛. рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рд╕рдВрджреЗрд╢ рдореЗрдВ рдпрд╣ рд╢рд╛рдорд┐рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рд╕рдВрд▓рдЧреНрди рдлрд╛рдЗрд▓.
  • "рд╢рд┐рдореЛрди, рддреБрдо рднреА рджреЗрдЦ рд▓реЛред"
    рдФрд░ рдореМрдЬреВрджрд╛ рдкрддреНрд░рд╛рдЪрд╛рд░ рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рдорд┐рд▓рдирд╛ рдЪрд╛рд╣рд┐рдП рдирдпреЗ рд╕рджрд╕реНрдп рдХреЛ рдЖрдордВрддреНрд░рд┐рдд рдХрд░реЗрдВ.

рдЖрдЗрдП рдлрд┐рд▓рд╣рд╛рд▓ "рд╕реНрдкрд╖реНрдЯ" рдЬрд░реВрд░рддреЛрдВ рдХреА рдЗрд╕ рд╕реВрдЪреА рдкрд░ рдзреНрдпрд╛рди рджреЗрдВред

рд╕рдорд╕реНрдпрд╛ рдХреА рд▓рд╛рдЧреВ рд╡рд┐рд╢рд┐рд╖реНрдЯрддрд╛рдУрдВ рдФрд░ рдЙрд╕реЗ рджреА рдЧрдИ рд╕реАрдорд╛рдУрдВ рдХреЛ рд╕рдордЭреЗ рдмрд┐рдирд╛, рдбрд┐рдЬрд╝рд╛рдЗрди рдкреНрд░рднрд╛рд╡реА рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реНрдХреАрдорд╛ рдХреЛ рд╣рд▓ рдХрд░рдирд╛ рд▓рдЧрднрдЧ рдЕрд╕рдВрднрд╡ рд╣реИред

рдЪрд░рдг 2: рдиреНрдпреВрдирддрдо рддрд░реНрдХ рд╕рд░реНрдХрд┐рдЯ

рдЕрдм рддрдХ, рд╕рдм рдХреБрдЫ рдИрдореЗрд▓ рдкрддреНрд░рд╛рдЪрд╛рд░ рдХреЗ рд╕рдорд╛рди рд╣реА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ - рдПрдХ рдкрд╛рд░рдВрдкрд░рд┐рдХ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рдЙрдкрдХрд░рдгред рд╣рд╛рдВ, "рдПрд▓реНрдЧреЛрд░рд┐рджрдорд┐рдХ рд░реВрдк рд╕реЗ" рдХрдИ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рд╕рдорд╕реНрдпрд╛рдПрдВ рдПрдХ-рджреВрд╕рд░реЗ рдХреЗ рд╕рдорд╛рди рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рдЙрдкрдХрд░рдг рд╕рдВрд░рдЪрдирд╛рддреНрдордХ рд░реВрдк рд╕реЗ рд╕рдорд╛рди рд╣реЛрдВрдЧреЗред

рдЖрдЗрдП рдЗрдХрд╛рдИ рд╕рдВрдмрдВрдзреЛрдВ рдХреЗ рдкрд╣рд▓реЗ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рддрд╛рд░реНрдХрд┐рдХ рдЖрд░реЗрдЦ рдХреЛ рдареАрдХ рдХрд░реЗрдВред рдЕрдкрдиреЗ рдореЙрдбрд▓ рдХреЛ рд╕рдордЭрдиреЗ рдореЗрдВ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рд╕рдмрд╕реЗ рдЖрджрд┐рдо рдбрд┐рд╕реНрдкреНрд▓реЗ рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ рдИрдЖрд░ рдореЙрдбрд▓ рдпреВрдПрдордПрд▓ рдпрд╛ рдЖрдИрдбреАрдИрдПрдл рдиреЛрдЯреЗрд╢рди рдХреА рдЬрдЯрд┐рд▓рддрд╛рдУрдВ рдХреЗ рдмрд┐рдирд╛:

рдореИрд╕реЗрдВрдЬрд░ рдбреЗрдЯрд╛рдмреЗрд╕ (рднрд╛рдЧ 1): рдЖрдзрд╛рд░ рдврд╛рдВрдЪреЗ рдХреЛ рдбрд┐рдЬрд╛рдЗрди рдХрд░рдирд╛

рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдлрд╝рд╛рдЗрд▓ рдХрд╛ рд╡реНрдпрдХреНрддрд┐, рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдФрд░ рдмрд╛рдЗрдирд░реА "рдмреЙрдбреА" "рдмрд╛рд╣рд░реА" рд╕рдВрд╕реНрдерд╛рдПрдВ рд╣реИрдВ рдЬреЛ рд╣рдорд╛рд░реА рд╕реЗрд╡рд╛ рдХреЗ рдмрд┐рдирд╛ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдореМрдЬреВрдж рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рд╣рдо рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдпреВрдпреВрдЖрдИрдбреА рджреНрд╡рд╛рд░рд╛ "рдХрд╣реАрдВ" рдХреБрдЫ рд▓рд┐рдВрдХ рдХреЗ рд░реВрдк рдореЗрдВ рджреЗрдЦреЗрдВрдЧреЗред

рдЦреАрдВрдЪрдирд╛ рдЖрд░реЗрдЦ рдпрдерд╛рд╕рдВрднрд╡ рд╕рд░рд▓ - рдЬрд┐рди рд▓реЛрдЧреЛрдВ рдХреЛ рдЖрдк рдЗрдиреНрд╣реЗрдВ рджрд┐рдЦрд╛рдПрдВрдЧреЗ рдЙрдирдореЗрдВ рд╕реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рдпреВрдПрдордПрд▓/рдЖрдИрдбреАрдИрдПрдл рдкрдврд╝рдиреЗ рдореЗрдВ рд╡рд┐рд╢реЗрд╖рдЬреНрдЮ рдирд╣реАрдВ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЪрд┐рддреНрд░ рдмрдирд╛рдирд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░реЗрдВред

рдЪрд░рдг 3: рддрд╛рд▓рд┐рдХрд╛ рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рд░реЗрдЦрд╛рдЪрд┐рддреНрд░ рдмрдирд╛рдирд╛

рддрд╛рд▓рд┐рдХрд╛ рдФрд░ рдлрд╝реАрд▓реНрдб рдирд╛рдореЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВрдлрд╝реАрд▓реНрдб рдФрд░ рддрд╛рд▓рд┐рдХрд╛рдУрдВ рдХреЗ "рд░реВрд╕реА" рдирд╛рдореЛрдВ рдХреЛ рдЕрд▓рдЧ рддрд░рд╣ рд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕реНрд╡рд╛рдж рдХрд╛ рдорд╛рдорд▓рд╛ рд╣реИред рдХреНрдпреЛрдВрдХрд┐ рдпрд╣рд╛рдБ рдЯреЗрдиреНрд╕рд░ рдкрд░ рдХреЛрдИ рд╡рд┐рджреЗрд╢реА рдбреЗрд╡рд▓рдкрд░ рдирд╣реАрдВ рд╣реИрдВ, рдФрд░ PostgreSQL рд╣рдореЗрдВ рдЪрд┐рддреНрд░рд▓рд┐рдкрд┐ рдореЗрдВ рднреА рдирд╛рдо рджреЗрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдпрджрд┐ рд╡реЗ рдЙрджреНрдзрд░рдгреЛрдВ рдореЗрдВ рд╕рдВрд▓рдЧреНрди, рддреЛ рд╣рдо рд╡рд╕реНрддреБрдУрдВ рдХреЛ рд╕реНрдкрд╖реНрдЯ рдФрд░ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдирд╛рдо рджреЗрдирд╛ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдХреЛрдИ рд╡рд┐рд╕рдВрдЧрддрд┐рдпрд╛рдВ рди рд╣реЛрдВред
рдЪреВрдВрдХрд┐ рдХрдИ рд▓реЛрдЧ рд╣рдореЗрдВ рдПрдХ рд╕рд╛рде рд╕рдВрджреЗрд╢ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рд▓реЛрдЧ рдРрд╕рд╛ рднреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдСрдлрд▓рд╛рдЗрди, рддреЛ рд╕рдмрд╕реЗ рд╕рд░рд▓ рд╡рд┐рдХрд▓реНрдк рд╣реИ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдпреВрдпреВрдЖрдИрдбреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рди рдХреЗрд╡рд▓ рдмрд╛рд╣рд░реА рд╕рдВрд╕реНрдерд╛рдУрдВ рдХреЗ рд▓рд┐рдП, рдмрд▓реНрдХрд┐ рд╣рдорд╛рд░реА рд╕реЗрд╡рд╛ рдХреЗ рдЕрдВрджрд░ рд╕рднреА рд╡рд╕реНрддреБрдУрдВ рдХреЗ рд▓рд┐рдП рднреАред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЙрдиреНрд╣реЗрдВ рдХреНрд▓рд╛рдЗрдВрдЯ рд╕рд╛рдЗрдб рдкрд░ рднреА рдЬреЗрдирд░реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - рдЗрд╕рд╕реЗ рд╣рдореЗрдВ рддрдм рд╕рдВрджреЗрд╢ рднреЗрдЬрдиреЗ рдореЗрдВ рд╕рд╣рд╛рдпрддрд╛ рдорд┐рд▓реЗрдЧреА рдЬрдм рдбреЗрдЯрд╛рдмреЗрд╕ рдЕрд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдЕрдиреБрдкрд▓рдмреНрдз рд╣реЛ рдФрд░ рдЯрдХрд░рд╛рд╡ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдмреЗрд╣рдж рдХрдо рд╣реЛред

рд╣рдорд╛рд░реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдбреНрд░рд╛рдлреНрдЯ рдЯреЗрдмрд▓ рд╕рдВрд░рдЪрдирд╛ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧреА:
рдЯреЗрдмрд▓реНрд╕: рдЖрд░рдпреВ

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
);

рдЯреЗрдмрд▓реНрд╕: рдПрди

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: рд╕реНрдорд╛рд░реНрдЯ рдбреАрдиреЙрд░реНрдорд▓рд╛рдЗрдЬрд╝реЗрд╢рди

рд╣рдорд╛рд░реА рджреЛрдиреЛрдВ рд╕рдорд╕реНрдпрд╛рдПрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рддрд╛рд▓рд┐рдХрд╛рдУрдВ рджреНрд╡рд╛рд░рд╛ рд╣рд▓ рдХреА рдЬрд╛рдПрдВрдЧреА рдЬрд┐рдирдореЗрдВ рд╣рдо рдХрд░реЗрдВрдЧреЗ рдбреЗрдЯрд╛ рдХрд╛ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рднрд╛рдЧ, рдЙрди рдкрд░ рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рд╕реВрдЪрдХрд╛рдВрдХ рдмрдирд╛рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред
рдореИрд╕реЗрдВрдЬрд░ рдбреЗрдЯрд╛рдмреЗрд╕ (рднрд╛рдЧ 1): рдЖрдзрд╛рд░ рдврд╛рдВрдЪреЗ рдХреЛ рдбрд┐рдЬрд╛рдЗрди рдХрд░рдирд╛

рдЯреЗрдмрд▓реНрд╕: рдЖрд░рдпреВ

CREATE TABLE "╨а╨╡╨╡╤Б╤В╤А╨б╨╛╨╛╨▒╤Й╨╡╨╜╨╕╨╣"(
  "╨Т╨╗╨░╨┤╨╡╨╗╨╡╤Ж"
    uuid
, "╨в╨╕╨┐╨а╨╡╨╡╤Б╤В╤А╨░"
    smallint
, "╨Ф╨░╤В╨░╨Т╤А╨╡╨╝╤П"
    timestamp
, "╨б╨╛╨╛╨▒╤Й╨╡╨╜╨╕╨╡"
    uuid
, PRIMARY KEY("╨Т╨╗╨░╨┤╨╡╨╗╨╡╤Ж", "╨в╨╕╨┐╨а╨╡╨╡╤Б╤В╤А╨░", "╨б╨╛╨╛╨▒╤Й╨╡╨╜╨╕╨╡")
);
CREATE INDEX ON "╨а╨╡╨╡╤Б╤В╤А╨б╨╛╨╛╨▒╤Й╨╡╨╜╨╕╨╣"("╨Т╨╗╨░╨┤╨╡╨╗╨╡╤Ж", "╨в╨╕╨┐╨а╨╡╨╡╤Б╤В╤А╨░", "╨Ф╨░╤В╨░╨Т╤А╨╡╨╝╤П" DESC);

CREATE TABLE "╨г╤З╨░╤Б╤В╨╜╨╕╨║╨в╨╡╨╝╤Л"(
  "╨в╨╡╨╝╨░"
    uuid
, "╨Я╨╡╤А╤Б╨╛╨╜╨░"
    uuid
, PRIMARY KEY("╨в╨╡╨╝╨░", "╨Я╨╡╤А╤Б╨╛╨╜╨░")
);

рдЯреЗрдмрд▓реНрд╕: рдПрди

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)
);

рдпрд╣рд╛рдВ рд╣рдордиреЗ рд╕рд╣рд╛рдпрдХ рддрд╛рд▓рд┐рдХрд╛рдПрдБ рдмрдирд╛рддреЗ рд╕рдордп рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рджреЛ рд╡рд┐рд╢рд┐рд╖реНрдЯ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд▓рд╛рдЧреВ рдХрд┐рдП рд╣реИрдВ:

  • рд░рд┐рдХреЙрд░реНрдб рдЧреБрдгрд╛ рдХрд░рдирд╛
    рдПрдХ рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕рдВрджреЗрд╢ рд░рд┐рдХреЙрд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рд╣рдо рд╡рд┐рднрд┐рдиреНрди рдорд╛рд▓рд┐рдХреЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдореЗрдВ рдХрдИ рдЕрдиреБрд╡рд░реНрддреА рд░рд┐рдХреЙрд░реНрдб рдмрдирд╛рддреЗ рд╣реИрдВ - рдкреНрд░реЗрд╖рдХ рдФрд░ рдкреНрд░рд╛рдкреНрддрдХрд░реНрддрд╛ рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдПред рд▓реЗрдХрд┐рди рдкреНрд░рддреНрдпреЗрдХ рд░рдЬрд┐рд╕реНрдЯрд░ рдЕрдм рд╕реВрдЪрдХрд╛рдВрдХ рдкрд░ рдкрдбрд╝рддрд╛ рд╣реИ - рдЖрдЦрд┐рд░рдХрд╛рд░, рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо рдХреЗрд╡рд▓ рдкрд╣рд▓рд╛ рдкреГрд╖реНрда рджреЗрдЦрдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗред
  • рдЕрдиреЛрдЦреЗ рд░рд┐рдХреЙрд░реНрдб
    рд╣рд░ рдмрд╛рд░ рдЬрдм рдЖрдк рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд┐рд╖рдп рдкрд░ рдХреЛрдИ рд╕рдВрджреЗрд╢ рднреЗрдЬрддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдЬрд╛рдВрдЪрдирд╛ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдРрд╕реА рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж рд╣реИред рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдЗрд╕реЗ рд╣рдорд╛рд░реЗ "рд╢рдмреНрджрдХреЛрд╢" рдореЗрдВ рдЬреЛрдбрд╝реЗрдВред

рд▓реЗрдЦ рдХреЗ рдЕрдЧрд▓реЗ рднрд╛рдЧ рдореЗрдВ рд╣рдо рдмрд╛рдд рдХрд░реЗрдВрдЧреЗ рд╡рд┐рднрд╛рдЬрди рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣рдорд╛рд░реЗ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреА рд╕рдВрд░рдЪрдирд╛ рдореЗрдВред

рд╕реНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝реЗрдВ