Π”ΠΈΠΏΠ»ΠΎΠΌΡ‹, курсовыС, Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚Ρ‹, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹Π΅...
Брочная ΠΏΠΎΠΌΠΎΡ‰ΡŒ Π² ΡƒΡ‡Ρ‘Π±Π΅

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ систСмы управлСния Π²Π·Π°ΠΈΠΌΠΎΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡΠΌΠΈ с ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌΠΈ

ΠšΡƒΡ€ΡΠΎΠ²Π°ΡΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈΠ£Π·Π½Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

Nagios — систСма с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ, прСдназначСнная для ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹Ρ… систСм ΠΈ ΡΠ΅Ρ‚Π΅ΠΉ. Она слСдит Π·Π° ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌΠΈ Π² Π½Π°ΡΡ‚Ρ€ΠΎΠΉΠΊΠ°Ρ… ΡƒΠ·Π»Π°ΠΌΠΈ ΠΈ ΡΠ»ΡƒΠΆΠ±Π°ΠΌΠΈ, ΠΈ ΠΎΠΏΠΎΠ²Π΅Ρ‰Π°Π΅Ρ‚ администратора Π² ΡΠ»ΡƒΡ‡Π°Π΅, Ссли ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ ΠΈΠ· ΡΠ»ΡƒΠΆΠ± ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‰Π°ΡŽΡ‚ (ΠΈΠ»ΠΈ Π²ΠΎΠ·ΠΎΠ±Π½ΠΎΠ²Π»ΡΡŽΡ‚) свою Ρ€Π°Π±ΠΎΡ‚Ρƒ. Nagios, ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ созданная ΠΏΠΎΠ΄ ΠΈΠΌΠ΅Π½Π΅ΠΌ Netsaint, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π° Π­Ρ‚Π°Π½ΠΎΠΌ Галстадом (Ethan Galstad). Он ΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΈ Ρ€Π°Π·Π²ΠΈΠ²Π°Π΅Ρ‚ систСму… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ систСмы управлСния Π²Π·Π°ΠΈΠΌΠΎΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡΠΌΠΈ с ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌΠΈ (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

РЕЀЕРАВ

ЦСлью Π΄Π°Π½Π½ΠΎΠ³ΠΎ курсового ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° являСтся ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ систСмы управлСния Π²Π·Π°ΠΈΠΌΠΎΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡΠΌΠΈ с ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌΠΈ для выполнСния поставлСнных Π·Π°Π΄Π°Ρ‡, с ΡƒΡ‡Ρ‘Ρ‚ΠΎΠΌ бизнСс-Π»ΠΎΠ³ΠΈΠΊΠΈ, бизнСс-процСссов ΠΈ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ ΠΊ Π΄Π°Π½Π½ΠΎΠΉ систСмС.

Данная систСма ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° для обСспСчСния общСния с ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌΠΈ, Π° Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΈΠ½Ρ‹Ρ… Π²Π·Π°ΠΈΠΌΠΎΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡΡ… с ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ Π·Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΠ°ΠΌΠΈ ΠΈ ΠΏΠΎΠΊΡƒΠΏΠ°Ρ‚Слями.

Разработанная систСма ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‡Π΅Ρ‚ΠΊΠΎΠ΅ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½Ρ‹Π΅ слои, поэтому Π»Π΅Π³ΠΊΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ, Π½Π΅ ΠΏΡ€ΠΈΠ±Π΅Π³Π°Ρ ΠΊ ΠΏΠΎΠ»Π½ΠΎΠΌΡƒ ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΡ‹Π²Π°Π½ΠΈΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Одной ΠΈΠ· ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚Π΅ΠΉ систСмы являСтся ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ с ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ встроСнного ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠ° сСрвлСт-ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°. Π’ Π΄Π°Π½Π½ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ LDAP-сСрвСр, ΠΊΠ°ΠΊ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Слях, зарСгистрированных Π² ΡΠΈΡΡ‚Π΅ΠΌΠ΅.

БистСма являСтся кроссплатформСнной (Ρ€Π°Π±ΠΎΡ‚Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π° Π½Π° Π»ΡŽΠ±ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмС с ΠΏΡ€ΠΈΡΡƒΡ‚ствиСм Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΠΉ Java-ΠΌΠ°ΡˆΠΈΠ½Ρ‹, нСзависимо ΠΎΡ‚ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹).

Π‘ΠžΠ”Π•Π Π–ΠΠΠ˜Π• Π’Π’Π•Π”Π•ΠΠ˜Π•

  • 1. Анализ Ρ€Π΅ΡˆΠ°Π΅ΠΌΠΎΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ
    • 1.1 БтратСгия систСмы управлСния
    • 1.2 ВрСбования ΠΊ ΡΠΈΡΡ‚Π΅ΠΌΠ΅ управлСния
  • 2. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°
    • 2.1 Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° схСмы Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…
      • 2.2 Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° логичСской структуры Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…
  • 3. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€ΠΎΠ² ΠΈ Π½Π°ΡΡ‚Ρ€ΠΎΠΉΠΊΠ° Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ
    • 3.1 Π₯Ρ€Π°Π½ΠΈΠΌΡ‹Π΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ ΠΈ Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€Ρ‹. ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ использования
    • 3.1.1 Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Π΅ Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€Ρ‹
    • 3.2 РСпликация Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…
    • 3.2.1 Настройка Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π² Π‘Π£Π‘Π” Postgres
  • 4. настройка сСрвСра ldap
    • 4.1 Настройка сСрвСра LDAP
  • Π’Π«Π’ΠžΠ”Π«
  • ΠŸΠ•Π Π•Π§Π•ΠΠ¬ Π˜Π‘ΠŸΠžΠ›Π¬Π—Π£Π•ΠœΠ«Π₯ Π˜Π‘Π’ΠžΠ§ΠΠ˜ΠšΠžΠ’

Π’Π’Π•Π”Π•ΠΠ˜Π•

БистСма управлСния Π²Π·Π°ΠΈΠΌΠΎΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡΠΌΠΈ с ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌΠΈ - ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° для ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ, Π° Ρ‚Π°ΠΊ ΠΆΠ΅ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ стратСгий взаимодСйствия с Π·Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΠ°ΠΌΠΈ (ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌΠΈ), Π² Ρ‡Π°ΡΡ‚ности, для ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ уровня ΠΏΡ€ΠΎΠ΄Π°ΠΆ, ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΌΠ°Ρ€ΠΊΠ΅Ρ‚ΠΈΠ½Π³Π° ΠΈ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ обслуТивания ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ² ΠΏΡƒΡ‚Ρ‘ΠΌ сохранСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°Ρ… ΠΈ ΠΈΡΡ‚ΠΎΡ€ΠΈΠΈ Π²Π·Π°ΠΈΠΌΠΎΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΉ с Π½ΠΈΠΌΠΈ, установлСния ΠΈ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ бизнСс-ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ².

ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ систСма:

1.Доступ ΠΊ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Π·Π°ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… встрСчах.

2.ΠŸΠΎΡΡ‚ΠΎΡΠ½Π½Π°Ρ связь с Π·Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΠ°ΠΌΠΈ ΠΈ ΠΏΠΎΠΊΡƒΠΏΠ°Ρ‚Слями.

3.БистСма Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ Π½Π° Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΏΠ»ΠΎΡ‰Π°Π΄ΡŒ. МоТно Ρ€Π°Π·ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ сколь ΡƒΠ³ΠΎΠ΄Π½ΠΎ сдСлок ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ².

4.БистСма ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΌ интСрфСйсом для отобраТСния Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ….

5.Π Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹Ρ… устройств для доступа Π² Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚ (ΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½, КПК ΠΈ Ρ‚. Π΄.) позволяСт ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ ΠΏΠΎΡ€Ρ‚Π°Π»Ρƒ ΠΈΠ· Π»ΡŽΠ±ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ ΠΌΠΈΡ€Π°, Π²Π½Π΅ зависимости ΠΎΡ‚ ΠΌΠ΅ΡΡ‚ополоТСния ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°.

1. Анализ Ρ€Π΅ΡˆΠ°Π΅ΠΌΠΎΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ ЦСлью создания систСмы управлСния, являСтся Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ для быстрого ΠΈ ΡƒΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ прСдоставлСния возмоТности общСния ΠΈ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡ обслуТивания ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ².

Π’Π°ΠΆΠ½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ CRM являСтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ контроля Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ΠΎΠ² Ρ€ΡƒΠΊΠΎΠ²ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠΌΠ΅Π΅Ρ‚ доступ ΠΊ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Π·Π°ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… встрСчах, ΠΏΠ΅Ρ€Π΅Π³ΠΎΠ²ΠΎΡ€Π°Ρ…, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠ½Ρ‹Ρ… Π²Π·Π°ΠΈΠΌΠΎΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡΡ… с ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ Π·Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΠ°ΠΌΠΈ ΠΈ ΠΏΠΎΠΊΡƒΠΏΠ°Ρ‚Слями.

Π‘ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Π΅ систСмы ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‚ Ρ‚Π°ΠΊΠΈΠΌΠΈ характСристиками ΠΊΠ°ΠΊ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ бизнСс-Π»ΠΎΠ³ΠΈΠΊΠΈ, Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡ‚ΡŒ, Π·Π°Ρ‰ΠΈΡ‰Π΅Π½Π½ΠΎΡΡ‚ΡŒ, ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΡŒ, простота сопровоТдСния.

ΠšΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Π΅ прилоТСния ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ отобраТСния, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΈ ΡΠΎΡ…ранСния Π±ΠΎΠ»ΡŒΡˆΠΈΡ… массивов (слоТных) Π΄Π°Π½Π½Ρ‹Ρ…, Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ бизнСс-процСссов, манипулирования этими Π΄Π°Π½Π½Ρ‹ΠΌΠΈ. ΠŸΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΡΠ»ΡƒΠΆΠΈΡ‚ΡŒ систСмы управлСния расходами, бронирования Π±ΠΈΠ»Π΅Ρ‚ΠΎΠ², финансовыС прилоТСния, сСрвСры опросов ΠΈ Π½ΠΎΠ²ΠΎΡΡ‚Π΅ΠΉ ΠΈ Ρ‚. Π΄.

Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΈΠΌΠ΅Π΅Ρ‚ ряд особСнностСй, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ:

«Ρ€Π°ΡΡΠ»ΠΎΠ΅Π½ΠΈΠ΅» прилоТСния ΠΏΠΎ ΡƒΡ€ΠΎΠ²Π½ΡΠΌ;

структурированиС Π»ΠΎΠ³ΠΈΠΊΠΈ ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π½ΠΎΠΉ области;

связываниС ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ, Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°Π΅ΠΌΡ‹Ρ… Π² ΠΏΠ°ΠΌΡΡ‚ΠΈ с Ρ€Π΅Π»ΡΡ†ΠΈΠΎΠ½Π½ΠΎΠΉ Π±Π°Π·ΠΎΠΉ Π΄Π°Π½Π½Ρ‹Ρ….

Для создания ΠΊΠΎΡ€ΠΏΠΎΡ€Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ нСсколько Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚: .NET, J2EE ΠΈ Π΄Ρ€. Однако, учитывая Π±Π΅ΡΠΏΠ»Π°Ρ‚Π½ΠΎΡΡ‚ΡŒ ΠΈ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΡΡ‚ΡŒ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ, связанных с ΡΠ·Ρ‹ΠΊΠΎΠΌ Java ΠΈ J2EE Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌΠΈ, использованиС ΠΈΠΌΠ΅Π½Π½ΠΎ этих Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ прСдставляСт особый интСрСс.

1.1 БтратСгия систСмы управлСния Π’Ρ‹Π΄Π΅Π»ΠΈΠΌ основныС сущности систСмы ΠΈ ΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π° ΡΠ°ΠΌΠΎΠΌ высоком ΡƒΡ€ΠΎΠ²Π½Π΅ абстракции.

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ разрабатываСмая систСма смоТСт ΡƒΠΌΠ΅Ρ‚ΡŒ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ бизнСс-процСссами. Для этого Π² ΡΠ²ΠΎΠ΅ΠΉ Π΄Π΅ΡΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΎΠ½Π° Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ процСссный ΠΏΠΎΠ΄Ρ…ΠΎΠ΄. Π’ ΡΠΎΠΎΡ‚вСтствии с Π½ΠΈΠΌ вся Π΄Π΅ΡΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ любого прСдприятия прСдставляСтся Π² Π²ΠΈΠ΄Π΅ мноТСства бизнСс-процСссов, исполняСмых Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½ΠΎΠΉ срСдС. Π‘Ρ€Π΅Π΄Π° выполнСния — это пСрвая ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ систСмы.

Вторая ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ — это бизнСс-процСссы. БизнСс-процСсс — это упорядочСнный ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½Π°Π±ΠΎΡ€ Π·Π°Π΄Π°Π½ΠΈΠΉ, выполняСмых ΠΊΠ°ΠΊ людьми, Ρ‚Π°ΠΊ ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΌΠΈ систСмами прСдприятия, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ Π½Π° Π΄ΠΎΡΡ‚ΠΈΠΆΠ΅Π½ΠΈΠ΅ Π·Π°Ρ€Π°Π½Π΅Π΅ извСстной бизнСс-Ρ†Π΅Π»ΠΈ Π·Π° ΠΈΠ·Π²Π΅ΡΡ‚Π½ΠΎΠ΅ врСмя.

Π‘ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ бизнСс-процСссом Ρ‚Π°ΠΊΠΆΠ΅ связан ΠΎΠΏΡ€Π΅Π΄Π΅Π»Ρ‘Π½Π½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ Π΄Π°Π½Π½Ρ‹Ρ…. Π’ Ρ€Π°ΠΌΠΊΠ°Ρ… любого бизнСс-процСсса «Π½Π° Π²Ρ…ΠΎΠ΄Π΅» ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΎΠ΄ΠΈΠ½ ΠΈΠ»ΠΈ нСсколько Π²ΠΈΠ΄ΠΎΠ² рСсурсов, ΠΈ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ этой Π΄Π΅ΡΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π½Π° «Π²Ρ‹Ρ…ΠΎΠ΄Π΅» создаётся ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ (бизнСс-Ρ†Π΅Π»ΡŒ), ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ Ρ†Π΅Π½Π½ΠΎΡΡ‚ΡŒ для ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ³ΠΎ потрСбитСля. РСсурсы ΠΈ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π² Π²ΠΈΠ΄Π΅ Π΄Π°Π½Π½Ρ‹Ρ… процСсса. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, с Π»ΡŽΠ±Ρ‹ΠΌ бизнСс-процСссом связан Π΅Π³ΠΎ Π½Π°Π±ΠΎΡ€ Π΄Π°Π½Π½Ρ‹Ρ… — ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ систСмы.

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ бизнСс-процСсс Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅Ρ‚ΡŒ СдинствСнного Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Π°. Π’Π»Π°Π΄Π΅Π»Π΅Ρ† процСсса Π΅Π΄ΠΈΠ½ΠΎΠ»ΠΈΡ‡Π½ΠΎ ΠΈ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²ΠΎ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π° бизнСс-процСсса, исполнСниС всСх Π΅Π³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ. Π’ΠΎ Π²Ρ€Π΅ΠΌΡ выполнСния бизнСс-процСсса ΠΊ ΡƒΡ‡Π°ΡΡ‚ΠΈΡŽ Π² Π΅Π³ΠΎ опСрациях ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ²Π»Π΅ΠΊΠ°Ρ‚ΡŒΡΡ мноТСство исполнитСлСй, Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‰ΠΈΠ΅ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ€ΠΎΠ»ΠΈ. Π˜ΡΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΠΈ ΠΈ Π²Π»Π°Π΄Π΅Π»Π΅Ρ† бизнСс-процСсса — это Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ€Π°Π±ΠΎΡ‚Π½ΠΈΠΊΠΈ прСдприятия. Π’ ΠΏΠ»Π°Π½Π΅ рассматриваСмой ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π½ΠΎΠΉ области ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌΠΈ систСмы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅, благодаря ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌ систСмы, ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠ»Π΅Π΄ΠΈΡ‚ΡŒ Π·Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ бизнСс-процСсса ΠΈ (ΠΈΠ»ΠΈ) Π±Ρ€Π°Ρ‚ΡŒ Π² Π½Π΅ΠΌ участиС. Π’. Π΅., ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ, Π±Π΅Ρ€ΡƒΡ‰ΠΈΠ΅ участиС Π² Π±ΠΈΠ·Π½Π΅Ρ-процСссС — это внСшняя ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ систСмы.

Π’Π°ΠΊΠΆΠ΅ слСдуСт Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€ΠΈΡ„Π΅Ρ€ΠΈΠΉΠ½Ρ‹Π΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Ρ‹ систСмы ΠΊΠ°ΠΊ ΡΡƒΡ‰Π½ΠΎΡΡ‚ΡŒ, благодаря ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎΠ΅ взаимодСйствиС Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΡ… сущностСй систСмы (срСды выполнСния бизнСс-процСссов) с Π²Π½Π΅ΡˆΠ½ΠΈΠΌΠΈ (ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌΠΈ).

1.2 ВрСбования ΠΊ ΡΠΈΡΡ‚Π΅ΠΌΠ΅ управлСния

ΠΊΠ»ΠΈΠ΅Π½Ρ‚ Π±Π°Π·Π° Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€ рСпликация

БистСма Π΄ΠΎΠ»ΠΆΠ½Π° ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°Ρ‚ΡŒ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡƒΡ‚Π΅ΠΌ ограничСния доступа зарСгистрированных ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΊ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈ рСдактирования ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π², Π»ΠΈΡ‡Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ. Π”ΠΎΠ»ΠΆΠ΅Π½ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Ρ‚ΡŒΡΡ доступ нСзарСгистрированных ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΊ Π»ΡŽΠ±Ρ‹ΠΌ опСрациям ΠΏΠΎ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ Π΄Π°Π½Π½Ρ‹Ρ….

ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π½Π°Π΄Π΅Π»Π΅Π½Ρ‹ ΠΏΡ€Π°Π²Π°ΠΌΠΈ доступа ΠΊ Ρ€Π΅ΡΡƒΡ€ΡΠ°ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΉ систСмы Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΠΈ ΠΎΡ‚ ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΉ: администратор, ΠΌΠΎΠ΄Π΅Ρ€Π°Ρ‚ΠΎΡ€, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΈ Π³ΠΎΡΡ‚ΡŒ.

Π’ ΡΠΎΠΎΡ‚вСтствии с ΠΈΠ·Π»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΌΠΈ ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌΠΈ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Ρ€ΠΎΠ»ΠΈ систСмы Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ:

Администратор — это ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‰ΠΈΠΌΠΈ всСми ΠΏΡ€Π°Π²Π°ΠΌΠΈ Π² ΡΠΈΡΡ‚Π΅ΠΌΠ΅, ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π»ΡŽΠ±ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ. Он ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ систСмы ΠΈ Π½Π°Π·Π½Π°Ρ‡Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²Π° Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ дСйствия.

ΠœΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ — это ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ взаимодСйствуСт с ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌΠΈ, создаСт ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹, сдСлки ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ… ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°.

Π‘ΡƒΡ…Π³Π°Π»Ρ‚Π΅Ρ€ — ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ систСмы ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ ΠΏΠ»Π°Ρ‚Π΅ΠΆΠΈ ΠΏΠΎ ΡΠ΄Π΅Π»ΠΊΠ°ΠΌ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ сроки ΠΎΠΏΠ»Π°Ρ‚Ρ‹ ΠΈ Π²Π΅Π΄Π΅Ρ‚ ΠΎΡ‚Ρ‡Π΅Ρ‚ финансовой Π΄Π΅ΡΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ прСдприятия.

2. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°

2.1 Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° схСмы Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…

Π‘Ρ‹Π»Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π° структура Π‘Π”, описанная Π½Π° Ρ„ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠΌ языкС, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΠΎΠΌ систСмой управлСния Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ… (Π‘Π£Π‘Π”).

2.2 Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° логичСской структуры Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…

ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ ΠΈΠ»ΠΈ порядок ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ записСй Π² Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΡΠ²ΡΠ·Π΅ΠΉ ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ приводится Π² Π²ΠΈΠ΄Π΅ схСмы логичСской структуры Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…, которая ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π½ΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ, ΠΏΠΎΠΊΠ°Π·Π°Π½Π° Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 3.4.

Рисунок 2.1? Π‘Ρ…Π΅ΠΌΠ° Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…

3. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€ΠΎΠ² ΠΈ Π½Π°ΡΡ‚Ρ€ΠΎΠΉΠΊΠ° Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ

3.1 Π₯Ρ€Π°Π½ΠΈΠΌΡ‹Π΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ ΠΈ Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€Ρ‹. ΠžΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ использования

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ…Ρ€Π°Π½ΠΈΠΌΠΎΠΉ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅: хранимая ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° — ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ собой Π½Π°Π±ΠΎΡ€ SQL-инструкций, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ компилируСтся ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· ΠΈ Ρ…ранится Π½Π° ΡΠ΅Ρ€Π²Π΅Ρ€Π΅. ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ‡Π΅Ρ‚ΠΊΠΎΠ΅ ΠΈ Π²ΠΏΠΎΠ»Π½Π΅ Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π΅, всС ясно ΠΈ ΠΏΠΎΠ½ΡΡ‚Π½ΠΎ. Π’ΠΎ Π΅ΡΡ‚ΡŒ Π² Π‘Π£Π‘Π” Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ SQL-ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ сохранится Π² Π±Π°Π·Π΅ ΠΊΠ°ΠΊ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΈ ΠΎΡ‡Π΅Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΡΠΌΠΎΠΆΠ΅ΠΌ Π΅Π³ΠΎ эффСктивно/Ρ€Π°Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ‡ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π±Π°Π·ΠΎΠΉ. ΠŸΡ€ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Ρ…Ρ€Π°Π½ΠΈΠΌΡ‹Ρ… ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ ΠΈ Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€ΠΎΠ² Π½Π°Π΄ΠΎ ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Π²Π΅Ρ‰Π΅ΠΉ:

разбалансированиС бизнСс-Π»ΠΎΠ³ΠΈΠΊΠΈ систСмы;

созданиС Π°Π½Ρ‚ΠΈ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Π° «Π²Π΅Π»ΠΎΡΠΈΠΏΠ΅Π΄» (своС ΠΏΠ»ΠΎΡ…ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, ΠΏΡ€ΠΈ сущСствовании Π»ΡƒΡ‡ΡˆΠ΅Π³ΠΎ).

Π’Ρ€ΠΈΠ³Π³Π΅Ρ€ — это хранимая ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° особого Ρ‚ΠΈΠΏΠ°, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π½Π΅ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ нСпосрСдствСнно, Π° ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ обусловлСно наступлСниСм ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ события (дСйствиСм) — ΠΏΠΎ ΡΡƒΡ‚ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ INSERT ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ΠΌ DELETE строки Π² Π·Π°Π΄Π°Π½Π½ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Π΅, ΠΈΠ»ΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ UPDATE Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΌ столбцС Π·Π°Π΄Π°Π½Π½ΠΎΠΉ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ рСляционной Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ….

3.1.1 Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Π΅ Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€Ρ‹

Π’Ρ€ΠΈΠ³Π³Π΅Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ Π΄Π°Π΅Ρ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Π° Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ΠΎΠ²:

begin

if «old» ." contacts_name" ≠"new" ." contacts_name" then

update «contacts» set «id» = «old» ." id"

where «contacts.id» = «old» ." id" ;

end if;

return old;

end;

Π’Ρ€ΠΈΠ³Π³Π΅Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ добавляСт запись ΠΎ ΠΊΠ°ΠΊΠΎΠΌ Π»ΠΈΠ±ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ Π·Π°Π΄Π°Π½ΠΈΠΉ, Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ событий:

DECLARE

mstr varchar (30);

msstr varchar (30);

mssstr varchar (30);

nstr varchar (100);

ostr varchar (100);

astr varchar (100);

retstr varchar (364);

BEGIN

IF TG_OP = 'INSERT' THEN

nstr = NEW. tasks_name;

ostr = NEW. responsible;

mstr := 'Add new tasks: ';

msstr := ' to contacts: ';

retstr := mstr || nstr || msstr || ostr;

INSERT INTO «events» (id, events_text, tasks_id) values ((select count (*) from «events»)+1,retstr, NEW. id);

RETURN NEW;

ELSIF TG_OP = 'UPDATE' THEN

nstr = NEW. tasks_name;

mstr := 'Update task: ';

retstr := mstr || nstr;

if (OLD.tasks_name ≠ NEW. tasks_name) then

nstr = NEW. tasks_name;

ostr = OLD. tasks_name;

mstr := 'Update task name: ';

msstr := ' to name: ';

retstr := mstr || ostr || msstr || nstr;

end if;

INSERT INTO «events» (id, events_text, tasks_id) values ((select count (*) from «events»)+1,retstr, NEW. id);

RETURN NEW;

ELSIF TG_OP = 'DELETE' THEN

ostr = OLD. tasks_name;

mstr := 'Remove task: ';

retstr := mstr || ostr;

INSERT INTO «events» (id, events_text) values ((select count (*) from «events»)+1,retstr);

RETURN OLD;

END IF;

END;

Π’Ρ€ΠΈΠ³Π³Π΅Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ добавляСт запись ΠΎ ΠΊΠ°ΠΊΠΎΠΌ Π»ΠΈΠ±ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΉ, Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ событий:

DECLARE

mstr varchar (30);

msstr varchar (30);

nstr varchar (100);

ostr varchar (100);

retstr varchar (254);

BEGIN

IF TG_OP = 'INSERT' THEN

nstr = NEW. company_name;

mstr := 'Add new company: ';

retstr := mstr || nstr;

INSERT INTO «events» (id, events_text) values ((select count (*) from «events»)+1,retstr);

RETURN NEW;

ELSIF TG_OP = 'UPDATE' THEN

nstr = NEW. company_name;

ostr = OLD. company_name;

mstr := 'Update company: ';

msstr := ' To company: ';

if (OLD.company_name ≠ NEW. company_name) then

retstr := mstr || ostr || msstr || nstr;

else

retstr := mstr || nstr;

end if;

INSERT INTO «events» (id, events_text) values ((select count (*) from «events»)+1,retstr);

RETURN NEW;

ELSIF TG_OP = 'DELETE' THEN

ostr = OLD. company_name;

mstr := 'Remove company: ';

retstr := mstr || ostr;

INSERT INTO «events» (id, events_text) values ((select count (*) from «events»)+1,retstr);

RETURN OLD;

END IF;

end;

Π’Ρ€ΠΈΠ³Π³Π΅Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ добавляСт запись ΠΎ ΠΊΠ°ΠΊΠΎΠΌ Π»ΠΈΠ±ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ΠΎΠ², Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ событий:

DECLARE

mstr varchar (30);

msstr varchar (30);

nstr varchar (100);

ostr varchar (100);

retstr varchar (254);

BEGIN

IF TG_OP = 'INSERT' THEN

nstr = NEW. contacts_name;

mstr := 'Add new contact: ';

retstr := mstr || nstr;

INSERT INTO «events» (id, events_text, contakts_id) values ((select count (*) from «events»)+1,retstr, NEW. id);

RETURN NEW;

ELSIF TG_OP = 'UPDATE' THEN

nstr = NEW. contacts_name;

ostr = OLD. contacts_name;

msstr := ' To contact name: ';

if (OLD.contacts_name ≠ NEW. contacts_name) then

mstr := 'Update contact name: ';

retstr := mstr || ostr || msstr || nstr;

else

mstr := 'Update contact: ';

retstr := mstr || nstr;

end if;

INSERT INTO «events» (id, events_text, contakts_id) values ((select count (*) from «events»)+1,retstr, NEW. id);

RETURN NEW;

ELSIF TG_OP = 'DELETE' THEN

ostr = OLD. contacts_name;

mstr := 'Remove contact: ';

retstr := mstr || ostr;

INSERT INTO «events» (id, events_text) values ((select count (*) from «events»)+1,retstr);

RETURN OLD;

END IF;

end;

Π’Ρ€ΠΈΠ³Π³Π΅Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ добавляСт запись ΠΎ ΠΊΠ°ΠΊΠΎΠΌ Π»ΠΈΠ±ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ сдСлок, Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ событий:

DECLARE

mstr varchar (30);

msstr varchar (30);

nstr varchar (100);

ostr varchar (100);

retstr varchar (254);

BEGIN

IF TG_OP = 'INSERT' THEN

nstr = NEW. deals_name;

mstr := 'Add new deal: ';

retstr := mstr || nstr;

INSERT INTO «events» (id, events_text, deals_id) values ((select count (*) from «events»)+1,retstr, NEW. id);

RETURN NEW;

ELSIF TG_OP = 'UPDATE' THEN

nstr = NEW. deals_name;

ostr = OLD. deals_name;

msstr := ' To deal name: ';

if (OLD.deals_name ≠ NEW. deals_name) then

mstr := 'Update deal name: ';

retstr := mstr || ostr || msstr || nstr;

else

mstr := 'Update deal: ';

retstr := mstr || nstr;

end if;

INSERT INTO «events» (id, events_text, deals_id) values ((select count (*) from «events»)+1,retstr, NEW. id);

RETURN NEW;

ELSIF TG_OP = 'DELETE' THEN

ostr = OLD. deals_name;

mstr := 'Remove deal: ';

retstr := mstr || ostr;

INSERT INTO «events» (id, events_text) values ((select count (*) from «events»)+1,retstr);

RETURN OLD;

END IF;

end;

Π’Ρ€ΠΈΠ³Π³Π΅Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ ввСсти Π±ΡŽΠ΄ΠΆΠ΅Ρ‚ сдСлки Π½ΠΈΠΆΠ΅ Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹, Π² Ρ‚Π°ΠΊΠΎΠΌ случаС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ автоматичСски устанавливаСтся Π² Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ:

begin

if «new» ." money" <1 then

update «deals» set «money» = 1;

end if;

return new;

end;

Π’Ρ€ΠΈΠ³Π³Π΅Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ ввСсти Π±ΡŽΠ΄ΠΆΠ΅Ρ‚ сдСлки большС ста тысяч, Π² Ρ‚Π°ΠΊΠΎΠΌ случаС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ автоматичСски устанавливаСтся Π² Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ:

begin

if «new» ." money" >100 000 then

update «deals» set «money» = 1;

end if;

return new;

end;

Π’Ρ€ΠΈΠ³Π³Π΅Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ заносит Π΄Π°Π½Π½Ρ‹Π΅ Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ событий ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ адрСса ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Π°:

DECLARE

mstr varchar (30);

nstr varchar (100);

astr varchar (30);

ostr varchar (100);

retstr varchar (254);

begin

if OLD. contacts_address ≠ NEW. contacts_address then

nstr = NEW. contacts_name;

ostr = NEW. contacts_address;

mstr := 'Update address to contacts: ';

astr := ' to address: ';

retstr := mstr || nstr || astr || ostr;

insert into «events» («id» ," contakts_id" ," events_text")

values ((select count (*) from «events»)+1,

NEW.id, retstr);

end if;

return new;

end;

Π’Ρ€ΠΈΠ³Π³Π΅Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ заносит Π΄Π°Π½Π½Ρ‹Π΅ Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ событий ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ e-mail ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Π°:

DECLARE

mstr varchar (30);

nstr varchar (100);

astr varchar (30);

ostr varchar (100);

retstr varchar (254);

begin

if OLD. contacts_email ≠ NEW. contacts_email then

nstr = NEW. contacts_name;

ostr = NEW. contacts_email;

mstr := 'Update mail to contacts: ';

astr := ' to mail: ';

retstr := mstr || nstr || astr || ostr;

insert into «events» («id» ," contakts_id" ," events_text")

values ((select count (*) from «events»)+1,

NEW.id, retstr);

end if;

return new;

end;

Π’Ρ€ΠΈΠ³Π³Π΅Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ заносит Π΄Π°Π½Π½Ρ‹Π΅ Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ событий ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π° ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Π°:

DECLARE

mstr varchar (30);

nstr varchar (100);

astr varchar (30);

ostr varchar (100);

retstr varchar (254);

begin

if OLD. contacts_telephon ≠ NEW. contacts_telephon then

nstr = NEW. contacts_name;

ostr = NEW. contacts_telephon;

mstr := 'Update phone to contacts: ';

astr := ' to phone: ';

retstr := mstr || nstr || astr || ostr;

insert into «events» («id» ," contakts_id" ," events_text")

values ((select count (*) from «events»)+1,

NEW.id, retstr);

end if;

return new;

end;

Π’Ρ€ΠΈΠ³Π³Π΅Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ заносит Π΄Π°Π½Π½Ρ‹Π΅ Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ событий ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ статуса сдСлки:

DECLARE

mstr varchar (30);

nstr varchar (100);

astr varchar (30);

ostr varchar (100);

retstr varchar (254);

begin

if OLD. deals_type ≠ NEW. deals_type then

nstr = NEW. deals_name;

ostr = NEW. deals_type;

mstr := 'Update deals type in dial: ';

astr := ' to type: ';

retstr := mstr || nstr || astr || ostr;

insert into «events» («id» ," deals_id" ," events_text")

values ((select count (*) from «events»)+1,

NEW.id, retstr);

end if;

return new;

end;

Π’Ρ€ΠΈΠ³Π³Π΅Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ заносит Π΄Π°Π½Π½Ρ‹Π΅ Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ событий ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ отвСтствСнного Π·Π° Π·Π°Π΄Π°Ρ‡Ρƒ:

DECLARE

mstr varchar (350);

nstr varchar (100);

astr varchar (50);

ostr varchar (100);

retstr varchar (254);

begin

if OLD. responsible ≠ NEW. responsible then

nstr = NEW. tasks_name;

ostr = NEW. responsible;

mstr := 'Update tasks responsible in task: ';

astr := ' to contacts: ';

retstr := mstr || nstr || astr || ostr;

insert into «events» («id» ," tasks_id" ," events_text")

values ((select count (*) from «events»)+1,

NEW.id, retstr);

end if;

return new;

end;

Π’Ρ€ΠΈΠ³Π³Π΅Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ заносит Π΄Π°Π½Π½Ρ‹Π΅ Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ событий ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ статуса Π·Π°Π΄Π°Ρ‡ΠΈ:

DECLARE

mstr varchar (30);

nstr varchar (100);

astr varchar (30);

ostr varchar (100);

retstr varchar (254);

begin

if OLD. status ≠ NEW. status then

nstr = NEW. tasks_name;

ostr = NEW. status;

mstr := 'Update task status in task: ';

astr := ' to status: ';

retstr := mstr || nstr || astr || ostr;

insert into «events» («id» ," tasks_id" ," events_text")

values ((select count (*) from «events»)+1,

NEW.id, retstr);

end if;

return new;

end;

Π’Ρ€ΠΈΠ³Π³Π΅Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ заносит Π΄Π°Π½Π½Ρ‹Π΅ Π² Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ событий ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ отвСтствСнного Π·Π° ΡΠ΄Π΅Π»ΠΊΡƒ:

DECLARE

mstr varchar (350);

nstr varchar (100);

astr varchar (50);

ostr varchar (100);

retstr varchar (254);

begin

if OLD. responsible ≠ NEW. responsible then

nstr = NEW. deals_name;

ostr = NEW. responsible;

mstr := 'Update deals responsible in dial: ';

astr := ' to contacts: ';

retstr := mstr || nstr || astr || ostr;

insert into «events» («id» ," deals_id" ," events_text")

values ((select count (*) from «events»)+1,

NEW.id, retstr);

end if;

return new;

end;

Π’Ρ€ΠΈΠ³Π³Π΅Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ заполняСт автоматичСски поля, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… хранится Π΄Π°Ρ‚Π° ΠΈ Π²Ρ€Π΅ΠΌΡ, ΠΏΡ€ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ Π½ΠΎΠ²ΠΎΠΉ сдСлки:

begin

update «tasks» set «tasks_date» = ('now':text):date where «tasks» ." id" = NEW. id;

update «tasks» set «tasks_time» = ('now':text):time with time zone where «tasks» ." id" = NEW. id;

return new;

end;

3.2 РСпликация Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…

РСпликация Π‘Π” — это синхронизация Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΊΠΎΠΏΠΈΠΉ содСрТимого Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…. Π’ ΠΏΡ€ΠΎΡΡ‚Π΅ΠΉΡˆΠ΅ΠΌ случаС рСпликация — это просто ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠΉ Π‘Π” Π² Π΄Ρ€ΡƒΠ³ΡƒΡŽ.

Π’Ρ‹Π΄Π΅Π»ΡΡŽΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π²ΠΈΠ΄Ρ‹ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ.

I. По Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡŽ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠ΅ΠΆΠ΄Ρƒ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ…. РСпликация Π±Ρ‹Π²Π°Π΅Ρ‚ ΠΎΠ΄Π½ΠΎΠ½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½ΠΎΠΉ (одностороннСй) ΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠ½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½ΠΎΠΉ (многостороннСй). ΠžΠ΄Π½ΠΎΠ½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½Π°Ρ рСпликация ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΈ синхронизации Ρ€Π΅Π·Π΅Ρ€Π²Π½ΠΎΠΉ ΠΊΠΎΠΏΠΈΠΈ Π‘Π” славной Π‘Π”, многонаправлСнная — ΠΏΡ€ΠΈ синхронизации Π΄Π²ΡƒΡ… ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠΏΠΈΠΉ ΠΎΠ΄Π½ΠΎΠΉ Π‘Π”.

II. Бинхронная ΠΈ Π°ΡΠΈΠ½Ρ…ронная.

ΠŸΡ€ΠΈ синхронной Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½Π° вСрсия Π΄Π°Π½Π½Ρ‹Ρ… — это Π½Π°ΠΊΠ»Π°Π΄Ρ‹Π²Π°Π΅Ρ‚ ограничСния Π½Π° Ρ€Π°Π±ΠΎΡ‚Ρƒ с Π΄Π°Π½Π½Ρ‹ΠΌΠΈ Π²ΠΎ Π²Ρ€Π΅ΠΌΡ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ. Асинхронная рСпликация позволяСт ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, Π½ΠΎ ΠΏΡ€ΠΈ Π½Π΅ΠΉ Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ нСсовмСстимыС, с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ, Π΄Π°Π½Π½Ρ‹Π΅. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΠΈΠΌΠ΅Π½Π½ΠΎ Π°ΡΠΈΠ½Ρ…Ρ€ΠΎΠ½Π½ΡƒΡŽ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡŽ ΠΈΠΌΠ΅ΡŽΡ‚ Π² Π²ΠΈΠ΄Ρƒ, ΠΊΠΎΠ³Π΄Π° говорят ΠΎ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π²ΠΎΠΎΠ±Ρ‰Π΅.

III. По Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ провСдСния.

Если рСпликация проводится Π½Π΅ΠΌΠ΅Π΄Π»Π΅Π½Π½ΠΎ послС внСсСния ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² Π‘Π”, Ρ‚ΠΎ ΡΡ‚ΠΎ рСпликация Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС ΠΌΡ‹ ΠΈΠΌΠ΅Π΅ΠΌ Π΄Π΅Π»ΠΎ с ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΉ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠ΅ΠΉ.

IV. По ΡΠΏΠΎΡΠΎΠ±Ρƒ связи ΠΌΠ΅ΠΆΠ΄Ρƒ Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ…. Π’Ρ‹Π΄Π΅Π»ΡΡŽΡ‚ ΠΏΡ€ΡΠΌΡƒΡŽ ΠΈ Π½Π΅Π΄Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡŽ. ΠŸΡ€ΡΠΌΠ°Ρ — это ΠΊΠΎΠ³Π΄Π° ΠΊΠ°Π½Π°Π» связи ΠΌΠ΅ΠΆΠ΄Ρƒ Π±Π°Π·Π°ΠΌΠΈ достаточно устойчив. Если ΠΆΠ΅ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΡΠ²ΡΠ·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΏΠΎ Π½Π΅ΡƒΡΡ‚ΠΎΠΉΡ‡ΠΈΠ²ΠΎΠΌΡƒ ΠΊΠ°Π½Π°Π»Ρƒ, Ρ‚ΠΎ ΠΏΡ€ΠΈΡ‘ΠΌΠ½ΠΈΠΊ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π² Π»ΡŽΠ±ΠΎΠΉ Π½ΡƒΠΆΠ½Ρ‹ΠΉ Π΅ΠΌΡƒ ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΡΠ²ΡΠ·Π°Ρ‚ΡŒΡΡ с ΠΈΡΡ‚ΠΎΡ‡Π½ΠΈΠΊΠΎΠΌ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, ΠΈΠ·-Π·Π° Ρ‡Π΅Π³ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅ΠΌΡ‹Π΅ ΠΈΠΌ ΠΏΡ€ΠΈ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚Π΅ Π΄Π°Π½Π½Ρ‹Ρ…, носят вСроятностный (Π½Π΅Π΄Π΅Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ) Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€.

К Ρ‡ΠΈΡΠ»Ρƒ прСимущСств, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ обСспСчиваСт рСпликация Π‘Π”, относится ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΠ΅ скорости ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ запросов ΠΈ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡ‚ΠΈ. ΠΠ°Π΄Π΅ΠΆΠ½ΠΎΡΡ‚ΡŒ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с Π³ΠΎΠ»ΠΎΠ²Π½Ρ‹ΠΌ сСрвСром, сущСствуСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π½Π° Ρ€Π΅Π·Π΅Ρ€Π²Π½ΡƒΡŽ копию. Для увСличСния скорости ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π½Π°ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Ρ‚Π΅ Π·Π°ΠΏΡ€ΠΎΡΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡŽΡ‚ Π΄Π°Π½Π½Ρ‹Π΅, Π½Π° ΡΠ΅Ρ€Π²Π΅Ρ€ с ΠΊΠΎΠΏΠΈΡΠΌΠΈ.

3.2.1 Настройка Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π² Π‘Π£Π‘Π” Postgres

Для Π½Π°Ρ‡Π°Π»Π° Π½Π° ΠΎΠ±Π΅ΠΈΡ… сСрвСрах Π² /etc/hosts Π±Ρ‹Π»ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ Π΄Π²Π΅ строчки:

1.1.1.1 db0

1.1.1.2 db1

Π”Π°Π»Π΅Π΅ Π±Ρ‹Π» настроСн Ρ„Π°ΠΉΠ» pg_hba.conf:

# nano /usr/home/pgsql/data/pg_hba.conf

Для мастСра:

#IP мастСра

listen_addresses = `1.1.1.1'

#На слСйв

host replication postgres 1.1.1.2/32 trust

host all postgres 1.1.1.2/32 trust

#Π’ΡƒΡ‚ ΠΌΡ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ, Ρ‡Ρ‚ΠΎ доступ ΠΈΠΌΠ΅ΡŽΡ‚ всС ΠΈ ΡΠΎ Π²ΡΠ΅Ρ… адрСсов, с ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ пароля Π”Π°Π»Π΅Π΅ производится настройка Ρ„Π°ΠΉΠ»Π° postgresql. conf:

# nano /usr/local/pgsql/data/postgresql.conf

Π’ ΡΡ‚ΠΎΠΌ Ρ„Π°ΠΉΠ»Π΅:

#Π’Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΆΡƒΡ€Π½Π°Π»Π° с ΠΏΡ€Π°Π²Π°ΠΌΠΈ чтСния для слСйва

wal_level = hot_standby

#МаксимальноС количСство слСйвов

max_wal_senders = 2

#УстанавливаСм ΠΎΠ±Ρ‰Π΅Π΅ Ρ…Ρ€Π°Π½ΠΈΠΌΠΎΠ΅ количСство кусков Π»ΠΎΠ³Π°

wal_keep_segments = 32

#Π”ΡƒΠ±Π»ΠΈΡ€ΡƒΠ΅ΠΌ ΠΆΡƒΡ€Π½Π°Π» Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ΅ мСсто

archive_mode = on

archive_command = 'cp %p /usr/lib/postgresql/9.1/main/archive/%f'

#МаксимальноС количСство ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ

max_connections = 150

#Π Π°Π·ΠΌΠ΅Ρ€ Π±ΡƒΡ„Π΅Ρ€Π°

shared_buffers = 2400MB

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ мастСр. НСобходимо ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π±Π°Π·Ρƒ Π½Π° ΡΠ»Π΅ΠΉΠ². Для этого ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ rsync:

# psqlc «SELECT pg_start_backup ('label', true)»

# rsynca /usr/lib/postgresql/9.1/main/ [email protected]:/usr/lib/postgresql/9.1/main/ —exclude postmaster. pid

# psqlc «SELECT pg_stop_backup ()»

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ слСйв. Π’ postgresql. conf:

hot_standby = on

archive_mode = off

НСобходимо ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ recovery. conf:

standby_mode = 'on'

primary_conninfo = 'host=1.1.1.1 port=5432 user=postgres'

#Ρ‚Ρ€ΠΈΠ³Π³Π΅Ρ€ Π½ΡƒΠΆΠ΅Π½ для бэкапа, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π² ΡΠ»ΡƒΡ‡Π°Π΅ бэкапа ΠΌΠΎΠ³Π»ΠΈ ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ процСсс Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΈ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ слСйв доступным Π½Π° Π·Π°ΠΏΠΈΡΡŒ

Trigger_file = '/usr/lib/postgresql/9.1/main/trigger'

restore_command = 'cp /usr/lib/postgresql/9.1/main/archive/%f «%p» '

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ процСсс Ρ€Π΅ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ.

ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° Π½Π° ΡΠ»Π΅ΠΉΠ²Π΅:

# ps

postgres 6878 6872 1 10:31? 00:00:01 postgres: wal receiver process streaming 0/2 000 000

Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ рСпликация настроСна ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ.

3.3 ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ систСмы с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ Nagios

Nagios — систСма с ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΌ ΠΊΠΎΠ΄ΠΎΠΌ, прСдназначСнная для ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹Ρ… систСм ΠΈ ΡΠ΅Ρ‚Π΅ΠΉ. Она слСдит Π·Π° ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌΠΈ Π² Π½Π°ΡΡ‚Ρ€ΠΎΠΉΠΊΠ°Ρ… ΡƒΠ·Π»Π°ΠΌΠΈ ΠΈ ΡΠ»ΡƒΠΆΠ±Π°ΠΌΠΈ, ΠΈ ΠΎΠΏΠΎΠ²Π΅Ρ‰Π°Π΅Ρ‚ администратора Π² ΡΠ»ΡƒΡ‡Π°Π΅, Ссли ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ ΠΈΠ· ΡΠ»ΡƒΠΆΠ± ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‰Π°ΡŽΡ‚ (ΠΈΠ»ΠΈ Π²ΠΎΠ·ΠΎΠ±Π½ΠΎΠ²Π»ΡΡŽΡ‚) свою Ρ€Π°Π±ΠΎΡ‚Ρƒ. Nagios, ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ созданная ΠΏΠΎΠ΄ ΠΈΠΌΠ΅Π½Π΅ΠΌ Netsaint, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π° Π­Ρ‚Π°Π½ΠΎΠΌ Галстадом (Ethan Galstad). Он ΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΈ Ρ€Π°Π·Π²ΠΈΠ²Π°Π΅Ρ‚ систСму сСгодня, совмСстно с ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ, Ρ‚Π°ΠΊ ΠΈ Π½Π΅ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΏΠ»Π°Π³ΠΈΠ½Π°ΠΌΠΈ.

ΠŸΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ Nagios Π±Ρ‹Π»Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π° для Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΠΎΠ΄ GNU/Linux, Π½ΠΎ ΠΎΠ½Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ…ΠΎΡ€ΠΎΡˆΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΈ ΠΏΠΎΠ΄ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ UnixΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹ΠΌΠΈ ΠžΠ‘.

3.3.1 Настройка ΠΌΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³Π° Листинг Ρ„Π°ΠΉΠ»Π° localhost. cfg:

# A simple configuration file for monitoring the local host

# This can serve as an example for configuring other servers;

# Custom services specific to this host are added here, but services

# defined in nagios2-common_services.cfg may also apply.

#

define host

{

use generic-host; Name of host template to use

host_name slave

alias 1.1.1.2

address 1.1.1.2

}

#Apache

define command

{

command_name check_apache

command_line /home/sereban/apache2.sh

}

define service

{

use generic-service

host_name localhost

service_description Apache

check_command check_apache

notifications_enabled 1

}

#Postgres

define command

{

command_name check_postgres

command_line /home/sereban/pg.sh

}

define service

{

use generic-service

host_name localhost

service_description Postgres

check_command check_postgres

notifications_enabled 1

}

define service

{

use generic-service

host_name localhost

service_description Postgres

check_command check_postgres

notifications_enabled 1

}

define service

{

use generic-service

host_name slave

service_description Postgres

check_command check_postgres

notifications_enabled 1

}

Рисунок 3.1 — ΠœΠΎΠ½ΠΈΡ‚ΠΎΡ€ΠΈΠ½Π³ сСрвисов систСм

4. настройка сСрвСра ldap

4.1 Настройка сСрвСра LDAP

Π’ ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ сСрвСра ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰Π΅Π΅ ΠΎΠ±Ρ‰ΠΈΠΉ стандарт ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° LDAP. ΠŸΠΎΠΆΠ°Π»ΡƒΠΉ, самым интСрСсным ΠΈ Π΄ΠΎΡΡ‚ΡƒΠΏΠ½Ρ‹ΠΌ Π² Ρ‚Π°ΠΊΠΎΠΌ случаС Π΅ΡΡ‚ΡŒ сСрвСр sldap.

Для Π½Π°Ρ‡Π°Π»Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ нСсколько ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ²:

# apt-get install slapd ldap-utils migrationtools

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ sldap, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ количСство измСняСмых настроСк:

#dpkg-reconfigure slapd

#ΠΏΡ€ΠΎΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ настройку сСрвСра LDAP? … НСт

#Π”ΠΎΠΌΠ΅Π½Π½ΠΎΠ΅ имя DNS: … debuntu. local

#НазваниС ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ: … ВсСчтоугодно debuntu. local

#ΠŸΠ°Ρ€ΠΎΠ»ΡŒ для admin: 1

#ΠŸΠΎΠ΄Ρ‚Π²Π΅Ρ€Π΄ΠΈΡ‚Π΅ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ: 1

#НастраиваСтся ΠΏΠ°ΠΊΠ΅Ρ‚ slapd (информация ΠΎ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ Π±Π°Π·Ρ‹ ldap)

OK

#Π’Ρ‹Π±ΠΎΡ€ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° Π±Π°Π·Ρ‹ ldap

BDB

#Π£Π΄Π°Π»ΡΡ‚ΡŒ Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈ вычисткС slapd? … НСт

#ΠŸΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ ΡΡ‚Π°Ρ€ΡƒΡŽ Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ…? … Π”Π°

#Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» LDAPv2? … НСт Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π² ΡΠΈΡΡ‚Π΅ΠΌΠ΅ установлСн Π΄Π΅ΠΌΠΎΠ½ ΠΈ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡ‚ративная учСтная запись. МоТно ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π΅ΡΡ‚ΡŒ Π»ΠΈ доступ ΠΊ ldap-сСрвСру:

$ ldapsearchx -b dc=debuntu, dc=local

# extended LDIF

#

# LDAPv3

# base with scope subtree

# filter: (objectclass=*)

# requesting: ALL

#

# debuntu. local

dn: dc=debuntu, dc=local

objectClass: top

objectClass: dcObject

objectClass: organization

o: nodomain

dc: debuntu

# admin, debuntu. local

dn: cn=admin, dc=debuntu, dc=local

objectClass: simpleSecurityObject

objectClass: organizationalRole

cn: admin

description: LDAP administrator

# People, debuntu. local

dn: ou=People, dc=debuntu, dc=local

ou: People

objectClass: organizationalUnit

# search result

search: 2

result: 0 Success

# numResponses: 4

# numEntries: 3

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½ΡƒΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ migrationtools ΠΌΠΎΠΆΠ½ΠΎ быстро ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ всСх ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΈ Π³Ρ€ΡƒΠΏΠΏ с Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΠΎΠΉ систСмы Π² LDAP. НуТно ΠΎΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ Ρ„Π°ΠΉΠ» migrate_common.ph ΠΈ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹:

$DEFAULT_MAIL_DOMAIN = «debuntu.local» ;

$DEFAULT_BASE = «dc=debuntu, dc=local» ;

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΊΡΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅:

# ./migrate_group.pl /etc/group ~/group.ldif

# ./migrate_passwd.pl /etc/passwd ~/passwd.ldif

Π’ Π΄ΠΎΠΌΠ°ΡˆΠ½Π΅ΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» people_group.ldif ΠΈ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π΅Π³ΠΎ строками:

dn: ou=People, dc=debuntu, dc=local

ou: People

objectclass: organizationalUnit

dn: ou=Group, dc=debuntu, dc=local

ou: Group

objectclass: organizationalUnit

Π’Π΅ΠΏΠ΅Ρ€ΡŒ списки ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΈ Π³Ρ€ΡƒΠΏΠΏ, сконвСртированныС Π² LDAP Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ ldif, Π½ΡƒΠΆΠ½ΠΎ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² LDAP Π±Π°Π·Ρƒ:

# ldapaddx -WD «cn=admin, dc=debuntu, dc=local» -f ~/people_group.ldif

# ldapaddx -WD «cn=admin, dc=debuntu, dc=local» -f ~/group.ldif

# ldapaddx -WD «cn=admin, dc=debuntu, dc=local» -f ~/passwd.ldif

Π³Π΄Π΅:

— x ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ся sasl;

— W Ρ‡Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΏΡ€ΠΎΡˆΠ΅Π½ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ администратора LDAP;

— D Ρ‡Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ администратора;

— f Ρ‡Ρ‚ΠΎ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ„Π°ΠΉΠ», Π³Π΄Π΅ ldapadd Π±ΡƒΠ΄Π΅Ρ‚ Π±Ρ€Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ для добавлСния.

Π’Π«Π’ΠžΠ”Π« Π’ Ρ€Π°ΠΌΠΊΠ°Ρ… Π΄Π°Π½Π½ΠΎΠ³ΠΎ курсового ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π±Ρ‹Π»Π° создана систСма управлСния Π²Π·Π°ΠΈΠΌΠΎΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ с ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌΠΈ. Данная систСма прСдоставляСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ контроля Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ΠΎΠ² Ρ€ΡƒΠΊΠΎΠ²ΠΎΠ΄ΠΈΡ‚Π΅Π»Π΅ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠΌΠ΅Π΅Ρ‚ доступ ΠΊ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Π·Π°ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… встрСчах, ΠΏΠ΅Ρ€Π΅Π³ΠΎΠ²ΠΎΡ€Π°Ρ…, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΠ½Ρ‹Ρ… Π²Π·Π°ΠΈΠΌΠΎΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡΡ… с ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΌΠΈ Π·Π°ΠΊΠ°Π·Ρ‡ΠΈΠΊΠ°ΠΌΠΈ ΠΈ ΠΏΠΎΠΊΡƒΠΏΠ°Ρ‚Слями.

Авторизация ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Π² ΡΠΈΡΡ‚Π΅ΠΌΠ΅ осущСствляСтся посрСдством LDAP сСрвСра. Роль Π±ΡƒΡ…Π³Π°Π»Ρ‚Π΅Ρ€Π° Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² ΠΏΡ€ΠΈΠ΅ΠΌΠ΅ ΠΏΠ»Π°Ρ‚Π΅ΠΆΠ΅ΠΉ ΠΏΠΎ ΡΠ΄Π΅Π»ΠΊΠ°ΠΌ ΠΈ Π²Π΅Π΄Π΅Π½ΠΈΠΈ ΠΎΡ‚Ρ‡Π΅Ρ‚Π° ΠΎ Ρ„инансовой Π΄Π΅ΡΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ прСдприятия. Роль ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€Π° Π½Π°Π·Π½Π°Ρ‡Π°Π΅Ρ‚ администратор, главная Π·Π°Π΄Π°Ρ‡Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π»Π΅ΠΆΠΈΡ‚ Π² ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ², Π° Ρ‚Π°ΠΊ ΠΆΠ΅ Π² ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ΅ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°.

РазрабатываСмая систСма Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΠΈ катСгориями ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ: администратор, ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€, Π±ΡƒΡ…Π³Π°Π»Ρ‚Π΅Ρ€.

ΠŸΠ•Π Π•Π§Π•ΠΠ¬ Π˜Π‘ΠŸΠžΠ›Π¬Π—Π£Π•ΠœΠ«Π₯ Π˜Π‘Π’ΠžΠ§ΠΠ˜ΠšΠžΠ’

Documentation information [Π•Π»Π΅ΠΊΡ‚Ρ€ΠΎΠ½ΠΈΠΉ рСсурс]: The JavaEE 6 Tuturial. — Π•Π»Π΅ΠΊΡ‚Ρ€ΠΎΠ½ Π΄Π°Π½. — [USA], 2010. ;

LDAP and JNDI [Π•Π»Π΅ΠΊΡ‚Ρ€ΠΎΠ½ΠΈΠΉ рСсурс]: Toglther forever. — Π•Π»Π΅ΠΊΡ‚Ρ€ΠΎΠ½. Π΄Π°Π½. — [USA] 2008;2010. — Π Π΅ΠΆΠΈΠΌ доступу: http://www.javaworld.com /javaworld/jw-03−2000/jw-0324-ldap.html .

Spring Web Service [Π•Π»Π΅ΠΊΡ‚Ρ€ΠΎΠ½ΠΈΠΉ рСсурс]: Spring Source. — Π•Π»Π΅ΠΊΡ‚Ρ€ΠΎΠ½. Π΄Π°Π½. [EU], 2005;2010. — Π Π΅ΠΆΠΈΠΌ доступу: http://static.springsource. org/spring-ws/sites/1.5/

Chapter 8. Testing [Π•Π»Π΅ΠΊΡ‚Ρ€ΠΎΠ½ΠΈΠΉ рСсурс]: Spring Source. — Π•Π»Π΅ΠΊΡ‚Ρ€ΠΎΠ½. Π΄Π°Π½. [EU], 2005;2010. — Π Π΅ΠΆΠΈΠΌ доступу: http://static.springsource.org/ spring/docs/2.5.x/reference/testing.html.

Chapter 3. Beans, BeanFactory and the ApplicationContext [Π•Π»Π΅ΠΊΡ‚Ρ€ΠΎΠ½ΠΈΠΉ рСсурс]: Spring Source. — Π•Π»Π΅ΠΊΡ‚Ρ€ΠΎΠ½. Π΄Π°Π½. [EU], 2005;2010. — Π Π΅ΠΆΠΈΠΌ доступу: http://static.springsource.org/spring/docs/1.2.9/reference/beans .html.

Π§Π°ΡΡ‚ΡŒ 19 — Spring. БизнСс-ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Π² Π΄Π΅ΠΉΡΡ‚Π²ΠΈΠ΅ [Π•Π»Π΅ΠΊΡ‚Ρ€ΠΎΠ½ΠΈΠΉ рСсурс]: БтудСнчиский ΠΎΡ‚Π΄Π΅Π» ΠΊΠ°Π΄Ρ€ΠΎΠ². ПособиС ΠΏΠΎ JAVA-тСхнологиям/Anton Saburov — Π•Π»Π΅ΠΊΡ‚Ρ€ΠΎΠ½. Π΄Π°Π½. [Россия], 2009. — Π Π΅ΠΆΠΈΠΌ доступу: http://www.java-course.ru/students/part19.html.

Π§Π°ΡΡ‚ΡŒ 10 — Spring. БизнСсВСстированиС с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° [Π•Π»Π΅ΠΊΡ‚Ρ€ΠΎΠ½ΠΈΠΉ рСсурс]: БтудСнчиский ΠΎΡ‚Π΄Π΅Π» ΠΊΠ°Π΄Ρ€ΠΎΠ². ПособиС ΠΏΠΎ JAVA-тСхнологиям/Anton Saburov — Π•Π»Π΅ΠΊΡ‚Ρ€ΠΎΠ½. Π΄Π°Π½. [Россия], 2009. — Π Π΅ΠΆΠΈΠΌ доступу: http://www.java-course.ru/ students/ part10.html.

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ вСсь тСкст
Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ