Main ADB Note
Main ADB Note
ﺏ
1
ﺟﺰﻭﻩ ﺩﺭﺳﻲ ﭘﺎﻳﮕﺎﻩ ﺩﺍﺩﻩ ﭘﻴﺸﺮﻓﺘﻪ
2
ﻓﺼﻞ :1
ﻣﺮﻭﺭﻱ ﺑﺮ ﻣﺪﻳﺮﻳﺖ
ﺑﺎﻧﻚ ﺍﻃﻼﻋﺎﺗﻲ
3
1-1ﻣﻘﺪﻣﻪ :ﺳﻴﺴﺘﻢ ﺑﺎﻧﻚ ﺍﻃﻼﻋﺎﺗﻲ ﭼﻴﺴﺖ؟
ﺳﻴﺴﺘﻢ ﺑﺎﻧﻚ ﺍﻃﻼﻋﺎﺗﻲ ﻳﺎ ﭘﺎﻳﮕﺎﻩ ﺩﺍﺩﻩ ) (Data Baseﺑﻪ ﻃﻮﺭ ﻋﻤﻮﻣﻲ ﻳﻚ ﺳﻴﺴﺘﻢ ﻛﺎﻣﭙﻴﻮﺗﺮﻱ
ﻧﮕﻬﺪﺍﺭﻱ ﺭﻛﻮﺭﺩﻫﺎ ﻣﻲ ﺑﺎﺷﺪ .ﺑﺎﻧﻚ ﺍﻃﻼﻋﺎﺗﻲ ﺭﺍ ﻣﻲ ﺗﻮﺍﻥ ﺑﻪ ﻋﻨﻮﺍﻥ ﻗﻔﺴﻪ ﺑﺎﻳﮕﺎﻧﻲ ﺍﻟﻜﺘﺮﻭﻧﻴﻜﻲ ﺩﺭ ﻧﻈﺮ
ﮔﺮﻓﺖ ﻛﻪ ﻣﺨﺰﻧﻲ ﺑﺮﺍﻱ ﻓﺎﻳﻞ ﺩﺍﺩﻩ ﻛﺎﻣﭙﻴﻮﺗﺮﻱ ﺍﺳﺖ .ﻛﺎﺭﺑﺮﺍﻥ ﺳﻴﺴﺘﻢ ﻣﻲ ﺗﻮﺍﻧﻨﺪ ﻋﻤﻠﻴﺎﺕ ﮔﻮﻧﺎﮔﻮﻧﻲ ﺭﺍ
ﺑﺮ ﺭﻭﻱ ﺍﻳﻦ ﻓﺎﻳﻞ ﻫﺎ ﺍﻧﺠﺎﻡ ﺩﻫﻨﺪ ،ﻣﺎﻧﻨﺪ :
• ﺍﻓﺰﻭﺩﻥ ﻓﺎﻳﻞ ﻫﺎﻱ ﺟﺪﻳﺪ ﺑﻪ ﺑﺎﻧﻚ ﺍﻃﻼﻋﺎﺗﻲ
• ﺍﻓﺰﻭﺩﻥ ﺩﺍﺩﻩ ﻫﺎ ﺑﻪ ﻓﺎﻳﻞ ﻫﺎﻱ ﻣﻮﺟﻮﺩ
• ﺑﺎﺯﻳﺎﺑﻲ ﺩﺍﺩﻩ ﻫﺎ ﺍﺯ ﻓﺎﻳﻞ ﻫﺎﻱ ﻣﻮﺟﻮﺩ
• ﺗﻐﻴﻴﺮ ﺩﺍﺩﻩ ﻫﺎﻱ ﻓﺎﻳﻞ ﻣﻮﺟﻮﺩ
• ﺣﺬﻑ ﺩﺍﺩﻩ ﻫﺎ ﺍﺯ ﻓﺎﻳﻞ ﻣﻮﺟﻮﺩ
• ﺣﺬﻑ ﻓﺎﻳﻞ ﻫﺎﻳﻲ ﺍﺯ ﺑﺎﻧﻚ ﺍﻃﻼﻋﺎﺗﻲ
ﻫﻤﺎﻧﻄﻮﺭ ﻛﻪ ﮔﻔﺘﻴﻢ ﺳﻴﺴﺘﻢ ﺑﺎﻧﻚ ﺍﻃﻼﻋﺎﺗﻲ ،ﻳﻚ ﺳﻴﺴﺘﻢ ﻛﺎﻣﭙﻴﻮﺗﺮﻱ ﺑﺮﺍﻱ ﻧﮕﻬﺪﺍﺭﻱ ﺭﻛﻮﺭﺩﻫﺎ ﻣﻲ
ﺑﺎﺷﺪ ﺑﺪﻳﻦ ﻣﻌﻨﻲ ﻛﻪ ﻳﻚ ﺳﻴﺴﺘﻢ ﻛﺎﻣﭙﻴﻮﺗﺮﻱ ﻛﻪ ﻫﺪﻑ ﺁﻥ ﺫﺧﻴﺮﻩ ﺍﻃﻼﻋﺎﺕ ﺍﺳﺖ ﻭ ﻛﺎﺭﺑﺮﺍﻥ ﻣﻲ
ﺗﻮﺍﻧﻨﺪ ﺁﻥ ﺍﻃﻼﻋﺎﺕ ﺭﺍ ﺑﺎﺯﻳﺎﺑﻲ ﻳﺎ ﺑﻪ ﻫﻨﮕﺎﻡ ﻛﻨﻨﺪ .ﻫﺮ ﭼﻴﺰﻱ ﻛﻪ ﺑﺮﺍﻱ ﻳﻚ ﻓﺮﺩ ﺑﺎ ﻳﻚ ﺳﺎﺯﻣﺎﻥ ﺑﺎ ﺍﺭﺯﺵ
ﺑﺎﺷﺪ ،ﺍﻃﻼﻋﺎﺕ ﻧﺎﻡ ﺩﺍﺭﺩ .ﻳﻚ ﺳﻴﺴﺘﻢ ﺑﺎﻧﻚ ﺍﻃﻼﻋﺎﺗﻲ ﺍﺯ ﭼﻬﺎﺭ ﻗﻄﻌﻪ ﺗﺸﻜﻴﻞ ﺷﺪﻩ ﺍﺳﺖ :ﺩﺍﺩﻩ ﻫﺎ ،
ﺳﺨﺖ ﺍﻓﺰﺍﺭ ،ﻧﺮﻡ ﺍﻓﺰﺍﺭ ﻭ ﻛﺎﺭﺑﺮﺍﻥ.
4
ﺩﺍﺩﻩ ﻫﺎ )(Data
ﻫﺮﭼﻴﺰﻱ ﻛﻪ ﺑﺮﺍﻱ ﻳﻚ ﻓﺮﺩ ﻳﺎ ﺳﺎﺯﻣﺎﻥ ﺑﺎ ﺍﺭﺯﺵ ﺑﺎﺷﺪ ،ﺩﺍﺩﻩ ﺩﺭ ﻧﻈﺮ ﮔﺮﻓﺘﻪ ﻣﻲ ﺷﻮﺩ.
ﻗﺎﺑﻠﻴﺖ ﻫﺎﻳﻲ ﻛﻪ ﻳﻚ ﺳﻴﺴﺘﻢ ﺑﺎﻧﻚ ﺍﻃﻼﻋﺎﺗﻲ ﺍﺭﺍﺋﻪ ﻣﻲ ﻛﻨﺪ ،ﺗﺎ ﺣﺪ ﺯﻳﺎﺩﻱ ﺑﻪ ﻛﺎﻣﭙﻴﻮﺗﺮﻱ ﺑﺴﺘﮕﻲ ﺩﺍﺭﺩ
.ﺳﻴﺴﺘﻢ ﻫﺎ ﺑﺮ ﺭﻭﻱ ﻛﺎﻣﭙﻴﻮﺗﺮﻫﺎﻱ ﺑﺰﺭگ ،ﻣﻌﻤﻮﻻ ﻛﻪ ﺍﻳﻦ ﺳﻴﺴﺘﻢ ﺑﺮ ﺭﻭﻱ ﺁﻥ ﻛﺎﺭ ﻣﻲ ﻛﻨﺪ
ﭼﻨﺪﻛﺎﺭﺑﺮﻩ ﻫﺴﺘﻨﺪ ،ﺩﺭ ﺣﺎﻟﻴﻜﻪ ﺳﻴﺴﺘﻢ ﻫﺎ ﺩﺭ ﻛﺎﻣﭙﻴﻮﺗﺮﻫﺎﻱ ﻛﻮﭼﻚ ،ﺗﻚ ﻛﺎﺭﺑﺮﻩ ﻫﺴﺘﻨﺪ .ﺳﻴﺴﺘﻢ
ﺗﻚ ﻛﺎﺭﺑﺮﻩ ﺳﻴﺴﺘﻤﻲ ﺍﺳﺖ ﻛﻪ ﺩﺭ ﺁﻥ ،ﺩﺭ ﺁﻥِ ﻭﺍﺣﺪ ﻓﻘﻂ ﻳﻚ ﻧﻔﺮ ﻣﻲ ﺗﻮﺍﻧﺪ ﺍﺯ ﺑﺎﻧﻚ ﺍﻃﻼﻋﺎﺗﻲ
ﺍﺳﺘﻔﺎﺩﻩ ﻛﻨﺪ ﻭ ﺳﻴﺴﺘﻢ ﭼﻨﺪﻛﺎﺭﺑﺮﻩ ﺳﻴﺴﺘﻤﻲ ﺍﺳﺖ ﻛﻪ ﺩﺭ ﺁﻥِ ﻭﺍﺣﺪ ﭼﻨﺪ ﻧﻔﺮ ﻣﻲ ﺗﻮﺍﻧﻨﺪ ﺍﺯ ﻳﻚ
ﺑﺎﻧﻚ ﺍﻃﻼﻋﺎﺗﻲ ﺍﺳﺘﻔﺎﺩﻩ ﻛﻨﻦﺩ .
*ﻫﺪﻑ ﺍﺻﻠﻲ ﺳﻴﺴﺘﻢ ﻫﺎﻱ ﭼﻨﺪﻛﺎﺭﺑﺮﻩ ﺍﻳﻦ ﺍﺳﺖ ﻛﻪ ﺑﻪ ﻛﺎﺭﺑﺮ ﺍﺟﺎﺯﻩ ﺩﻫﻨﺪ ،ﺍﺯ ﺁﻥ ﺑﻪ ﻋﻨﻮﺍﻥ ﻳﻚ
ﺳﻴﺴﺘﻢ ﺗﻚ ﻛﺎﺭﺑﺮﻩ ﺍﺳﺘﻔﺎﺩﻩ ﻧﻤﺎﻳﺪ.
ﺑﻪ ﻃﻮﺭ ﻛﻞ ﺩﺍﺩﻩ ﻫﺎ ﺩﺭ ﺑﺎﻧﻚ ﺍﻃﻼﻋﺎﺗﻲ ،ﺑﺨﺼﻮﺹ ﺩﺭ ﺳﻴﺴﺘﻢ ﻫﺎﻱ ﺑﺰﺭگ ،ﻫﻢ ﺑﻪ ﺻﻮﺭﺕ ﻣﺠﺘﻤﻊ ﻭ
ﻫﻢ ﺑﻪ ﺻﻮﺭﺕ ﺍﺷﺘﺮﺍﻛﻲ ﻫﺴﺘﻨﺪ ) (Integration & Sharingﻛﻪ ﺩﺭ ﺍﺩﺍﻣﻪ ﺗﻮﺿﻴﺢ ﺩﺍﺩﻩ ﻣﻲ ﺷﻮﻧﺪ:
ﺟﺎﻣﻌﻴﺖ ) :(Integrationﻣﻔﻬﻮﻡ ﺟﺎﻣﻌﻴﺖ ﻳﺎ ﻣﺠﺘﻤﻊ ﺑﻮﺩﻥ ﺍﻳﻦ ﺍﺳﺖ ﻛﻪ ﺑﺎﻧﻚ ﺍﻃﻼﻋﺎﺗﻲ ﻣﺠﻤﻮﻋﻪ
ﺍﻱ ﺍﺯ ﻓﺎﻳﻞ ﻫﺎﺳﺖ ﻛﻪ ﺑﺨﺸﻲ ﺍﺯ ﺍﻃﻼﻋﺎﺕ ﺍﺿﺎﻓﻲ ﺍﺯ ﺑﻴﻦ ﺁﻥ ﻫﺎ ﺣﺬﻑ ﺷﺪﻩ ﺍﺳﺖ .ﺍﺯﺩﻳﺪﮔﺎﻩ ﻫﺎﻱ ﺩﻳﮕﺮ،
ﺟﺎﻣﻌﻴﺖ ﺑﻪ ﻣﻌﻨﺎﻱ ﺻﺤﺖ ﺩﺍﺩﻩ ﻫﺎ ،ﭘﺮﺩﺍﺯﺵ ﻫﺎ ﻭ ﭘﻴﺮﻭﻱ ﺍﺯ ﻣﻘﺮﺭﺍﺕ ﺳﻴﺴﺘﻢ ﻣﻲ ﺑﺎﺷﺪ .ﻩﺏ ﻋﻨﻮﺍﻥ
ﻣﺜﺎﻝ ،ﻣﻮﺟﻮﺩﻱ ﻭﺍﻗﻌﻲ ﺣﺴﺎﺏ ﻫﺎﻱ ﺑﺎﻧﻜﻲ ﻧﺒﺎﻳﺪ ﻣﻨﻔﻲ ﺑﺎﺷﺪ.
ﺍﺷﺘﺮﺍﻙ ) :(Sharingﻣﻔﻬﻮﻡ ﻣﺸﺘﺮﻙ ﺑﻮﺩﻥ ﺍﻳﻦ ﺍﺳﺖ ﻛﻪ ﺩﺍﺩﻩ ﻫﺎﻱ ﻣﻮﺟﻮﺩ ﺩﺭ ﺑﺎﻧﻚ ﺍﻃﻼﻋﺎﺗﻲ ﻣﻲ
ﺗﻮﺍﻧﺪ ﺑﻴﻦ ﻛﺎﺭﺑﺮﺍﻥ ﻡ ﺧﺘﻠﻒ ﺑﻪ ﺍﺷﺘﺮﺍﻙ ﮔﺬﺍﺷﺘﻪ ﺷﻮﻧﺪ ،ﻳﻌﻨﻲ ﻫﺮ ﻳﻚ ﺍﺯ ﻛﺎﺭﺑﺮﺍﻥ ﻣﻲ ﺗﻮﺍﻧﻨﺪ ﺍﺯ ﻳﻚ
ﺑﺨﺶ ﺍﺯ ﺩﺍﺩﻩ ﻫﺎ ﺑﺮﺍﻱ ﺍﻫﺪﺍﻑ ﺧﺎﺻﻲ ﺍﺳﺘﻔﺎﺩﻩ ﻛﻨﻨﺪ .ﻫﻤﻴﻨﻄﻮﺭ ﻣﻴﺘﻮﺍﻥ ﮔﻔﺖ ﻛﺎﺭﺑﺮﺍﻥ ﺑﻪ ﻃﻮﺭ ﻫﻤﺰﻣﺎﻥ
ﻣﻲ ﺗﻮﺍﻧﻨﺪ ﺑﻪ ﻳﻚ ﺑﺨﺶ ﺍﺯ ﺩﺍﺩﻩ ﻫﺎ ﺩﺳﺘﻴﺎﺑﻲ ﺩﺍﺷﺘﻪ ﺑﺎﺷﻨﺪ .ﻫﺮ ﻛﺎﺭﺑﺮ ﻓﻘﻂ ﺑﺨﺸﻲ ﺍﺯ ﺩﺍﺩﻩ ﻫﺎﻱ ﺑﺎﻧﻚ
ﺍﻃﻼﻋﺎﺗﻲ ﺭﺍ ﻣﻮﺭﺩ ﺍﺳﺘﻔﺎﺩﻩ ﻗﺮﺍﺭ ﻣﻲ ﺩﻫﺪ ﻭ ﺗﻮﺳﻂ ﺩﻳﺪﮔﺎﻩ ﻫﺎﻱ ﻣﺨﺘﻠﻔﻲ ﺑﺎ ﺑﺎﻧﻚ ﺍﻃﻼﻋﺎﺗﻲ ﺩﺭ ﺗﻌﺎﻣﻞ
ﺍﺳﺖ .ﺍﮔﺮ ﺑﺎﻧﻚ ﺍﻃﻼﻋﺎﺗﻲ ﻣﺸﺘﺮﻙ ﻧﺒﺎﺷﺪ ،ﺑﺎﻧﻚ ﺍﻃﻼﻋﺎﺗﻲ ﺷﺨﺼﻲ ﻳﺎ ﻛﺎﺭﺑﺮ ﻭﻳﮋﻩ ﻧﺎﻣﻴﺪﻩ ﻣﻲ ﺷﻮﺩ.
5
ﺳﺨﺖ ﺍﻓﺰﺍﺭ )(Hardware
ﻗﻄﻌﺎﺕ ﺳﺨﺖ ﺍﻓﺰﺍﺭﻱ ﺳﻴﺴﺘﻢ ﺷﺎﻣﻞ ﻣﻮﺍﺭﺩ ﺯﻳﺮ ﺍﺳﺖ:
ﺣﺎﻓﻈﻪ ﻫﺎﻱ ﺟﺎﻧﺒﻲ :ﻛﻪ ﻣﻌﻤﻮﻻ ﺩﻳﺴﻚ ﻫﺎ ﻫﺴﺘﻨﺪ ،ﺑﺮﺍﻱ ﺫﺧﻴﺮﻩ ﺩﺍﺩﻩ ﻫﺎ ﺑﻪ ﻛﺎﺭ ﻣﻲ ﺭﻭﻧﺪ ﻭ
ﺩﺳﺘﮕﺎﻩ ﻫﺎﻱ ﻭﺭﻭﺩﻱ/ﺧﺮﻭﺟﻲ ﻣﺎﻧﻨﺪ ﮔﺮﺩﺍﻧﻨﺪﻩ ﻫﺎ ،ﻛﻨﺘﺮﻟﮕﺮﻫﺎﻱ ﺩﺳﺘﮕﺎﻩ ﻫﺎ ﻭ ...
ﭘﺮﺩﺍﺯﻧﺪﻩ ﻫﺎﻱ ﺳﺨﺖ ﺍﻓﺰﺍﺭﻱ ﻭ ﺣﺎﻓﻈﻪ ﻫﺎﻱ ﺍﺻﻠﻲ ﻛﻪ ﺑﺮﺍﻱ ﭘﺸﺘﻴﺒﺎﻧﻲ ﺍﺯ ﺍﺟﺮﺍﻱ ﻧﺮﻡ ﺍﻓﺰﺍﺭ
ﺑﺎﻧﻚ ﺍﻃﻼﻋﺎﺗﻲ ﺑﻪ ﻛﺎﺭ ﻣﻲ ﺭﻭﻧﺪ.
ﻧﺮﻡ ﺍﻓﺰﺍﺭ)(Software
ﺳﻪ ﻧﻮﻉ ﻧﺮﻡ ﺍﻓﺰﺍﺭ ﺭﺍﻳﺞ ﺩﺭ ﺑﺎﻧﻚ ﺍﻃﻼﻋﺎﺗﻲ ﻭﺟﻮﺩ ﺩﺍﺭﺩ :ﺳﻴﺴﺘﻢ ﻣﺪﻳﺮﻳﺖ ﺑﺎﻧﻚ ﺍﻃﻼﻋﺎﺗﻲ )،(DBMS
ﺳﻴﺴﺘﻢ ﻋﺎﻣﻞ ﻭ ﺑﺮﻧﺎﻣﻪ ﻫﺎﻱ ﻛﺎﺭﺑﺮﺩﻱ .ﺳﻴﺴﺘﻢ ﻣﺪﻳﺮﻳﺖ ﺑﺎﻧﻚ ﺍﻃﻼﻋﺎﺗﻲ ﻻﻳﻪ ﺍﻱ ﺍﺯ ﻧﺮﻡ ﺍﻓﺰﺍﺭ ﺑﻴﻦ ﺩﺍﺩﻩ
ﻫﺎﻱ ﻓﻴﺰﻳﻜﻲ ﺫﺧﻴﺮﻩ ﺷﺪﻩ ﻭﻛﺎﺭﺑﺮﺍﻥ ﺳﻴﺴﺘﻢ ﻣﻲ ﺑﺎﺷﺪ ﻛﻪ ﺑﻪ ﺁﻥ ﻛﺎﺭﮔﺰﺍﺭ ﺑﺎﻧﻚ ﺍﻃﻼﻋﺎﺗﻲ
)(Database Serverﮔﻔﺘﻪ ﻣﻲ ﺷﻮﺩ.
ﻛﺎﺭﺑﺮﺍﻥ)(Users
ﻛﺎﺭﺑﺮﺍﻥ ﺑﺎﻧﻚ ﺍﻃﻼﻋﺎﺗﻲ ﺭﺍ ﻣﻲ ﺗﻮﺍﻥ ﺳﻪ ﺩﺳﺘﻪ ﺩﺭ ﻧﻈﺮ ﮔﺮﻓﺖ :
ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﺎﻥ ﻛﺎﺭﺑﺮﺩﻱ ﻛﻪ ﻣﺴﺌﻮﻝ ﻧﻮﺷﺘﻦ ﺑﺮﻧﺎﻣﻪ ﻫﺎﻱ ﻛﺎﺭﺑﺮﺩﻱ ﺑﺎﻧﻚ ﺍﻃﻼﻋﺎﺗﻲ ﺍﻧﺪ .
ﻛﺎﺭﺑﺮﺍﻥ ﻧﻬﺎﻳﻲ ﻛﻪ ﺍﺯ ﻃﺮﻳﻖ ﺍﻳﺴﺘﮕﺎﻩ ﻫﺎﻱ ﻛﺎﺭﻱ ﻳﺎ ﭘﺎﻳﺎﻧﻪ ﻫﺎ ﺑﻪ ﺳﻴﺴﺘﻢ ﺩﺳﺘﺮﺳﻲ ﺩﺍﺭﻧﺪ.
ﺍﻳﻦ ﺩﺳﺘﻪ ﺍﺯ ﻛﺎﺭﺑﺮﺍﻥ ﻛﻪ ﺩﻳﺪﻩ ﻧﻤﻴﺸﻮﺩ ،ﻣﺪﻳﺮ ﻳﺎ ﺳﺮﭘﺮﺳﺖ ﺑﺎﻧﻚ ﺍﻃﻼﻋﺎﺗﻲ ) (DBAﺍﺳﺖ ﻛﻪ
ﻭﻇﻴﻔﻪ ﺳﺮﭘﺮﺳﺖ ﺑﺎﻧﻚ ﺍﻃﻼﻋﺎﺗﻲ ﻭ ﺳﺮﭘﺮﺳﺖ ﺩﺍﺩﻩ ﻫﺎﺳﺖ .
6
ﺍﺟﺰﺍﻱ ﺳﻴﺴﺘﻢ ﻣﺪﻳﺮﻳﺖ ﭘﺎﻳﮕﺎﻩ ﺩﺍﺩﻩ:
ﻭﻇﺎﻳﻒ DBMSﺗﻮﺳﻂ ﺗﻌﺪﺍﺩﻱ ﻣﻮﻟﻔﻪ ﻧﺮﻡ ﺍﻓﺰﺍﺭﻱ ﺍﻧﺠﺎﻡ ﻣﻲ ﺷﻮﺩ .ﻫﺮ ﻛﺪﺍﻡ ﺍﺯ ﺍﻳﻦ ﻣﻮﻟﻔﻪ ﻫﺎ ﻣﻤﻜﻦ
ﺍﺳﺖ ﻣﺮﻛﺐ ﺍﺯ ﭼﻨﺪ ﻭﺍﺣﺪ ﻛﻮﭼﻜﺘﺮ ﺑﺎﺷﻨﺪ .ﺗﻌﺪﺍﺩﻱ ﺍﺯ ﺳﺮﻭﻳﺲ ﻫﺎﻱ ﻛﻪ ﺗﻮﺳﻂ ﻣﻮﻟﻔﻪ ﻫﺎﻱ DBMS
ﺩﺍﺩﻩ ﻣﻲ ﺷﻮﻧﺪ ﺩﺭ ﺯﻳﺮ ﻟﻴﺴﺖ ﺷﺪﻩ ﺍﺳﺖ:
ﭘﺮﺩﺍﺯﺵ ﺗﺮﺍﻛﻨﺶ ﻋﻤﻠﻴﺎﺗﻲ ﻛﻪ ﺍﺯ ﻣﻨﺎﺑﻊ ﻣﺨﺘﻠﻒ ﻣﻲ ﺭﺳﺪ ﺭﺍ ﺭﻭﻱ ﭘﺎﻳﮕﺎﻩ ﺩﺍﺩﻩ ﺍﺟﺮﺍ ﻣﻲ ﻛﻨﺪ ﺑﻪ ﻧﺤﻮﻱ
ﻛﻪ ﺧﻮﺍﺹ ﻣﻄﻠﻮﺏ ﺗﺮﺍﻛﻨﺶ ﺧﺪﺷﻪ ﺩﺍﺭ ﻧﺸﻮﺩ .ﺳﺮﻭﻳﺲ ﻫﺎﻱ ﻛﻨﺘﺮﻝ ﻫﻤﺮﻭﻧﺪﻱ ﻭ ﺗﺮﻣﻴﻢ ﺑﻪ ﺍﻳﻦ ﻣﻮﻟﻔﻪ
ﺑﺮﺍﻱ ﺑﺮﻗﺮﺍﺭﻱ ﺧﻮﺍﺹ ACIDﻛﻤﻚ ﻣﻲ ﻛﻨﻨﺪ .ﺑﻪ ﺍﻳﻦ ﺗﺮﺗﻴﺐ ﺍﺟﺮﺍﻱ ﻫﻤﺮﻭﻧﺪ ﺗﺮﺍﻛﻨﺶ ﻫﺎ ﻭ
ﺳﺎﺯﮔﺎﺭﻱ ﭘﺎﻳﮕﺎﻩ ﺩﺍﺩﻩ ﺣﺘﻲ ﺩﺭ ﺻﻮﺭﺕ ﻭﻗﻮﻉ ﺷﻜﺴﺘﻲ ﺩﺭ ﺳﻴﺴﺘﻢ ﺗﻀﻤﻴﻦ ﻣﻲ ﺷﻮﺩ .
ﻣﺪﻳﺮﻳﺖ ﺍﺟﺮﺍﻱ ﻫﻤﺮﻭﻧﺪ ﺗﺮﺍﻛﻨﺶ ﻫﺎ ﺭﻭﻱ ﭘﺎﻳﮕﺎﻩ ﺩﺍﺩﻩ ﺩﺭ ﺣﻴﻦ ﺑﺮﻗﺮﺍﺭﻱ ﺳﺎﺯﮔﺎﺭﻱ ﺭﺍ ﺑﻪ ﻋﻬﺪﻩ ﺩﺍﺭﺩ .
.3ﺗﺮﻣﻴﻢ )(Recovery
ﺗﺮﻣﻴﻢ ﺗﻀﻤﻴﻦ ﻣﻲ ﻛﻨﺪ ﻛﻪ ﺍﮔﺮ ﺍﺟﺮﺍﻱ ﺗﺮﺍﻛﻨﺶ ﺑﺎ ﻋﺪﻡ ﻣﻮﻓﻘﻴﺖ ﻳﺎ ﺳﻖ ﻁ ﺭﻭﺑﺮﻭ ﺷﺪ ،ﺗﺎﺛﻴﺮ ﻧﺎﻣﻄﻠﻮﺑﻲ
ﺭﻭﻱ ﭘﺎﻳﮕﺎﻩ ﺩﺍﺩﻩ ﻳﺎ ﺗﺮﺍﻛﻨﺶ ﻫﺎﻱ ﺩﻳﮕﺮ ﻧﮕﺬﺍﺭﺩ ﻭ ﺣﺎﻟﺖ ﭘﺎﻳﮕﺎﻩ ﺩﺍﺩﻩ ﺭﺍ ﻫﻤﻴﺸﻪ ﺳﺎﺯﮔﺎﺭ ﻧﮕﻪ ﺩﺍﺭﺩ .
ﻫﺮ ﺍﺗﻔﺎﻗﻲ ﺩﺭ ﺳﻴﺴﺘﻢ ﺩﺭ ﻳﻚ ﻓﺎﻳﻞ ﺫﺧﻴﺮﻩ ﻣﻲ ﺷﻮﺩ ﻭ ﺗﻮﺳﻂ ﻣﺪﻳﺮﻳﺖ ﺗﺮﻣﻴﻢ ﺑﺮﺍﻱ ﺣﻔﻆ ﺻﺤﺖ ﻭ
ﺍﻋﺘﺒﺎﺭ ﭘﺎﻳﮕﺎﻩ ﺩﺍﺩﻩ ﻫﻨﮕﺎﻡ ﺧﺮﺍﺑﻲ ﻳﺎ ﺳﻘﻂ ﺳﻴﺴﺘﻢ ﺍﺳﺘﻔﺎﺩﻩ ﻣﻲ ﺷﻮﺩ.
7
.5ﻭﺍﺳﻄﻪ ﺯﺑﺎﻧﻲ )(Language Interface
ﺩﺳﺘﻮﺭﺍﺗﻲ ﺭﺍ ﺑﺮﺍﻱ ﺗﻌﺮﻳﻒ ﺩﺍﺩﻩ ،ﻛﺎﺭ ﻛﺮﺩﻥ ﺑﺎ ﺁﻥ ﺩﺭﺍﺧﺘﻴﺎﺭ ﻛﺎﺭﺑﺮﺍﻥ ﻭ ﺑﺮﻧﺎﻣﻪ ﻫﺎﻱ ﻛﺎﺭﺑﺮﺩﻱ ﻗﺮﺍﺭ ﻣﻲ
ﺩﻫﺪ.
ﺗﻮﺍﻧﺎﺋﻲ ﺍﺭﺍﺋﻪ ﺳﺮﻭﻳﺲ ﻫﺎﻱ ﻗﺎﺑﻞ ﺍﻃﻤﻴﻨﺎﻥ ﺗﻮﺳﻂ DBMSﺣﺘﻲ ﺩﺭ ﺻﻮﺭﺕ ﺑﺮﻭﺯ ﻧﻘﺺ ﺭﺍ ﺗﺤﻤﻞ
ﭘﺬﻳﺮﻱ ﺧﻄﺎ ﻣﻲ ﮔﻮﻳﻨﺪ .ﺍﻧﻮﺍﻉ ﺧﻄﺎﻫﺎﺋﻲ ﻛﻪ ﻣﻤﻜﻦ ﺍﺳﺖ ﭘﻴﺶ ﺑﻴﺎﻳﺪ ﻋﺒﺎﺭﺗﻨﺪ ﺍﺯ :
• ﺧﻄﺎﻱ ﻣﻨﻄﻘﻲ :ﺗﺮﺍﻛﻨﺶ ﻣﻮﻓﻖ ﻧﻤﻲ ﺷﻮﺩ ﻣﺜﻼ ﺑﻪ ﺩﻟﻴﻞ ﻭﺭﻭﺩﻱ ﺑﺪ ،ﺳﺮﺭﻳﺰﻱ
• ﺧﻄﺎﻱ ﺳﻴﺴﺘﻤﻲ :ﺗﺮﺍﻛﻨﺶ ﻣﻮﻓﻖ ﻧﻤﻲ ﺷﻮﺩ ﻣﺜﻼ ﺑﻪ ﺩﻟﻴﻞ ﺑﻦ ﺑﺴﺖ
• ﺳﻘﻂ ﺳﻴﺴﺘﻢ :ﻗﻄﻊ ﺑﺮﻕ ،ﭘﺎﻙ ﺷﺪﻥ ﺣﺎﻓﻈﻪ ﺍﺻﻞﻱ ،ﭘﺮ ﺷﺪﻥ ﺩﻳﺴﻚ
• ﻧﺎﺗﻮﺍﻧﻲ ﺩﻳﺴﻚ :ﺧﺮﺍﺑﻲ ﻫﺪ ،ﺧﺮﺍﺑﻜﺎﺭﻱ ﻋﻤﺪﻱ ،ﺁﺗﺶ ﺳﻮﺯﻱ،
ﻳﺎ ﺩﻳﻜﺸﻨﺮﻱ ﺩﺍﺩﻩ ﻳﻚ ﭘﺎﻳﮕﺎﻩ ﺩﺍﺩﻩ ﺳﻴﺴﺘﻤﻲ ﺷﺎﻣﻞ ﺍﻃﻼﻋﺎﺗﻲ ﺩﺭﺑﺎﺭﻩ ﺩﺍﺩﻩ ،ﺍﺭﺗﺒﺎﻃﺎﺕ ﻭ ﻗﻴﺪﻫﺎ ﺩﺭ
ﭘﺎﻳﮕﺎﻩ ﺍﺻﻠﻲ ﺍﺳﺖ .ﮔﺎﻫﻲ ﺑﻪ ﺁﻥ ﻣﺘﺎﺩﺍﺩﻩ ﻫﻢ ﮔﻔﺘﻪ ﻣﻲ ﺷﻮﺩ .
.8ﺍﻣﻨﻴﺖ )(Security
ﺍﻣﻨﻴﺖ ﺑﻪ ﻣﺤﺎﻓﻈﺖ ﺩﺍﺩﻩ ﺩﺭ ﻣﻘﺎﺑﻞ ﺍﻓﺸﺎﺷﺪﻥ ،ﺗﻐﻴﻴﺮ ﻭ ﺧﺮﺍﺑﻲ ﺍﺷﺎﺭﻩ ﺩﺍﺭﺩ .ﻫﺮ ﻛﺎﺑﺮ ﻭ ﺑﺮﻧﺎﻣﻪ ﻛﺎﺭﺑﺮﺩﻱ
ﺍﻣﺘﻴﺎﺯ ﻭﻳﮋﻩ ﺍﻱ ﺑﺮﺍﻱ ﺩﺳﺘﺮﺳﻲ ﺑﻪ ﺩﺍﺩﻩ ﺩﺍﺭﺩ .ﻛﺎﺭﺑﺮﺍﻥ ﻣﻤﻜﻦ ﺍﺳﺖ ﺩﻳﺪﮔﺎﻩ ﻫﺎﻱ ﻣﺨﺘﻠﻔﻲ ﻧﺴﺒﺖ ﺑﻪ
ﺩﺍﺩﻩ ﻫﺎﻱ ﭘﺎﻳﮕﺎﻩ ﺩﺍﺩﻩ ﺑﺎ ﺗﻮﺟﻪ ﺍﻣﺘﻴﺎﺯﺍﺕ ﻭﻳﮋﻩ ﺧﻮﺩ ﺩﺍﺷﺘﻪ ﺑﺎﺷﻨﺪ .ﺳﻴﺴﺘﻢ ﺍﻣﻨﻴﺘﻲ ﻫﻤﭽﻨﻴﻦ ،ﺗﻮﺳﻂ
ﺭﻭﻳﻪ ﻫﺎﻱ ﺷﻨﺎﺳﺎﺋﻲ ﻭ ﻣﺠﻮﺯ ،ﺩﺳﺘﺮﺳﻲ ﺑﻪ ﭘﺎﻳﮕﺎﻩ ﺩﺍﺩﻩ ﺭﺍ ﻣﺤﺪﻭﺩ ﻣﻲ ﻛﻨﺪ .
8
.9ﻣﺪﻳﺮﻳﺖ ﺫﺧﻴﺮﻩ ﺳﺎﺯﻱ )(Storage Management
DBMSﻣﻜﺎﻧﻴﺴﻢ ﻫﺎﻱ ﺧﺎﺻﻲ ﺑﺮﺍﻱ ﺫﺧﻴﺮﻩ ﺩﺍﺋﻤﻲ ﺩﺍﺩﻩ ﻭ ﺩﺳﺘﺮﺳﻲ ﺑﻪ ﻣﻨﺒﻊ ﻓﻴﺰﻳﻜﻲ ﻭ ﺑﺎﺯﻳﺎﺑﻲ ﺩﺍﺩﻩ
ﺩﺍﺭﺩ .ﻣﺪﻳﺮ ﺫﺧﻴﺮﻩ ﺳﺎﺯﻱ ﺑﻴﻦ ﺩﺍﺩﻩ ﺫﺧﻴﺮﻩ ﺷﺪﻩ ﺩﺭ ﭘﺎﻳﮕﺎﻩ ﺩﺍﺩﻩ ﻭ ﺑﺮﻥ ﺍﻣﻪ ﻛﺎﺭﺑﺮﺩﻱ ﻭ ﭘﺮﺱ ﻭ ﺟﻮﻫﺎﻱ
ﺍﺭﺳﺎﻝ ﺷﺪﻩ ﺑﻪ ﺳﻴﺴﺘﻢ ﻭﺍﺳﻄﻪ ﻣﻲ ﺷﻮﺩ.
)ﻣﺜﻞ Read ﻫﻨﮕﺎﻡ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺷﺘﺮﺍﻛﻲ ﺍﺯ ﺩﺍﺩﻩ ﺍﻧﻮﺍﻉ ﻣﺨﺘﻠﻔﻲ ﺍﺯ ﻗﻔﻞ ﺭﻭﻱ ﺩﺍﺩﻩ ﮔﺬﺍﺷﺘﻪ ﻣﻲ ﺷﻮﺩ
Lockﻭ .(Write Lock
ﺑﻦ ﺑﺴﺖ ﻭﻗﺘﻲ ﺍﺗﻔﺎﻕ ﻣﻲ ﺍﻓﺘﺪ ﻛﻪ ﺗﺮﺍﻛﻨﺶ ﻫﺎ ﺑﺮﺍﻱ ﺑﺪﺳﺖ ﺁﻭﺭﺩﻥ ﻣﻨﺎﺑﻊ ﺩﺭ ﻳﻚ ﺩﺍﻳﺮﻩ ﺑﺴﺘﻪ ﻗﺮﺍﺭ
ﮔﻴﺮﻧﺪ ﻳﻌﻨﻲ ﻫﺮ ﻳﻚ ﻣﻨﺒﻌﻲ ﺩﺭ ﺍﺧﺘﻴﺎﺭ ﺩﺍﺭﺩ ﻛﻪ ﻣﻮﺭﺩ ﺗﻘﺎﺿﺎﻱ ﺩﻳﮕﺮﻱ ﺍﺳﺖ ﻭ ﺩﺭﺧﻮﺍﺳﺖ ﻣﻨﺒﻌﻲ ﺭﺍ
ﻣﻲ ﻛﻨﺪ ﻛﻪ ﺩﺭ ﺍﺧﺘﻴﺎﺭ ﺗﺮﺍﻛﻨﺶ ﻣﻨﺘﻈﺮ ﻣﻨﺒﻊ ﺍﺳﺖ .ﺩﺭ ﭘﺎﻳﮕﺎﻩ ﺩﺍﺩﻩ ﻣﻨﺎﺑﻊ ﺭﻛﻮﺭﺩﻫﺎ ﻫﺴﺘﻨﺪ .ﻣﺪﻳﺮﻳﺖ
ﻣﻨﺒﻊ ﻣﺴﺌﻮﻝ ﺭﻓﻊ ﺍﻳﻦ ﻣﺸﻜﻞ ﻫﺴﺘﻨﺪ.
ﻣﻌﻤﺎﺭﻱ :ANSI-SPARC
ﻫﺮ ﺑﺎﻧﻚ ﺍﻃﻼﻋﺎﺗﻲ ﺑﺎ ﺗﺒﻌﻴﺖ ﺍﺯ ﻳﻚ ﻧﻮﻉ ﻣﻌﻤﺎﺭﻱ ﻃﺮﺍﺣﻲ ﻣﻲ ﮔﺮﺩﺩ .ﻃﺒﻖ ﺍﻳﻦ ﻧﻮﻉ ﻣﻌﻤﺎﺭﻱ ﺑﺎﻧﻚ
ﺍﻃﻼﻋﺎﺗﻲ ﺩﺍﺭﺍﻱ ﺳﻪ ﺳﻄﺢ ﺍﺳﺖ.
ﺳﻪ ﺳﻄﺢ ﻣﻌﻤﺎﺭﻱ ﺑﺎﻧﻚ ﺍﻃﻼﻋﺎﺗﻲ:
ﺳﻄﺢ ﺩﺍﺧﻠﻲ :ﻛﻪ ﺳﻄﺢ ﻓﻴﺰﻳﻜﻲ ﻧﺎﻣﻴﺪﻩ ﻣﻲ ﺷﻮﺩ ﻭ ﺑﻪ ﺣﺎﻓﻈﻪ ﻓﻴﺰﻳﻜﻲ ﻧﺰﺩﻳﻚ ﺍﺳﺖ
ﻳﻌﻨﻲ ﻣﺮﺑﻮﻁ ﺑﻪ ﺫﺧﻴﺮﻩ ﻓﻴﺰﻳﻜﻲ ﻣﻴﺸﻮﺩ.
ﺳﻄﺢ ﺧﺎﺭﺟﻲ :ﻛﻪ ﺳﻄﺢ ﻣﻨﻄﻘﻲ ﻛﺎﺭﺑﺮ ﻧﻴﺰ ﻧﺎﻣﻴﺪﻩ ﻣﻲ ﺷﻮﺩ ﻭ ﺑﻪ ﻛﺎﺭﺑﺮ ﻧﺰﺩﻳﻚ ﺍﺳﺖ ﻭ
ﺑﺎ ﻣﺸﺎﻫﺪﻩ ﺩﺍﺩﻩ ﻫﺎ ﺗﻮﺳﻂ ﻛﺎﺭﺑﺮﺍﻥ ﺳﺮﻭﻛﺎﺭ ﺩﺍﺭﺩ.
9
ﺳﻄﺢ ﺍﺩﺭﺍﻛﻲ :ﻛﻪ ﺳﻄﺢ ﻣﻨﻄﻘﻲ ﺍﺟﺘﻤﺎﻉ ﺍﺳﺖ ﻳﻌﻨﻲ ﺳﻄﺢ ﻏﻴﺮﻣﺴﺘﻘﻴﻢ ﺑﻴﻦ ﺩﻭ ﺳﻄﺢ
ﺩﻳﮕﺮ ﺍﺳﺖ.
10
ﺑﺨﺶ DDLﺣﺎﻭﻱ ﺳﺎﺧﺘﺎﺭﻫﺎﻱ ﺍﻋﻼﻧﻲ PL/Iﺍﺳﺖ ﻛﻪ ﺑﺮﺍﻱ ﺗﻌﺮﻳﻒ ﺍﺷﻴﺎﻱ ﺑﺎﻧﻚ ﺍﻃﻼﻋﺎﺗﻲ ﺿﺮﻭﺭﻱ
ﺍﺳﺖ – ﺩﺳﺘﻮﺭ ) DECLAREﻳﺎ ،( DCLﺑﻌﻀﻲ ﺍﺯ ﺍﻧﻮﺍﻉ ﺩﺍﺩﻩ PL/Iﻳﺎ ﺗﻮﺳﻌﻪ ﺍﻱ ﺍﺯ PL/Iﻛﻪ
ﺩﺭ PL/Iﻓﻌﻠﻲ ﻣﻮﺟﻮﺩ ﻧﻴﺴﺖ.
ﺑﺨﺶ DMLﺷﺎﻣﻞ ﺩﺳﺘﻮﺭﺍﺕ ﺍﺟﺮﺍﻳﻲ PL/Iﺍﺳﺖ ﻛﻪ ﺍﻃﻼﻋﺎﺕ ﺭﺍ ﺑﻪ ﺑﺎﻧﻚ ﺍﻃﻼﻋﺎﺗﻲ ﺍﻥﺗﻘﺎﻝ ﺩﺍﺩﻩ ،ﺍﺯ
ﺁﻥ ﺑﺎﺯﻳﺎﺑﻲ ﻣﻲ ﻛﻨﺪ .ﻣﻤﻜﻦ ﺍﺳﺖ ﺩﺳﺘﻮﺭﺍﺕ ﺧﺎﺻﻲ ﮔﻨﺠﺎﻧﺪﻩ ﺷﻮﻧﺪ .
PL/Iﺩﺭﺣﺎﻝ ﺣﺎﺿﺮ ﻓﺎﻗﺪ ﻭﻳﮋﮔﻲ ﻫﺎﻱ ﺑﺎﻧﻚ ﺍﻃﻼﻋﺎﺗﻲ ﺍﺳﺖ .ﺩﺳﺘﻮﺭﺍﺕ DMLﻫﻤﺎﻥ ﺩﺳﺘﻮﺭ
CALLﺍﺳﺖ ﻛﻪ ﺳﻴﺴﺘﻢ ﻣﺪﻳﺮﻳﺖ ﺑﺎﻧﻚ ﺍﻃﻼﻋﺎﺗﻲ ﺭﺍ ﻓﺮﺍﺧﻮﺍﻧﻲ ﻣﻲ ﻛﻨﺪ )ﮔﺮﭼﻪ ﻣﻤﻜﻦ ﺍﺳﺖ ﺍﻳﻦ
ﺩﺳﺘﻮﺭ ﻓﺮﺍﺧﻮﺍﻧﻲ ﻃﻮﺭﻱ ﺗﻐﻴﻴﺮ ﻛﻨﺪ ﻛﻪ ﺍﺯ ﻧﻈﺮ ﻛﺎﺭﺑﺮ ﻗﺎﺑﻞ ﻗﺒﻮﻝ ﻭ ﺭﺍﺣﺖ ﺑﺎﺷﺪ (.
ﺗﺎ ﻛﻨﻮﻥ ﻣﺘﻮﺟﻪ ﺷﺪﻳﻢ ﻛﻪ ﻫﺮ ﻛﺎﺭﺑﺮ ﻓﻘﻂ ﺑﻪ ﺑﺨﺸﻲ ﺍﺯ ﻛﻞ ﺑﺎﻧﻚ ﺍﻃﻼﻋﺎﺗﻲ ﻋﻼﻗﻤﻨﺪ ﺍﺳﺖ .ﺩﻳﺪﮔﺎﻩ
ﻛﺎﺭﺑﺮ ﺑﻪ ﺁﻥ ﺑﺨﺶ ،ﺩﺭ ﻣﻘﺎﻳﺴﻪ ﺑﺎ ﺭﻭﺵ ﺫﺧﻴﺮﻩ ﻓﻴﺰﻳﻜﻲ ﺩﺍﺩﻩ ﻫﺎ ،ﺗﺎ ﺣﺪﻱ ﺍﻧﺘﺰﺍﻋﻲ ﺍﺳﺖ .ﺩﺭ ﺍﺻﻄﻼﺡ
،ANSI/SPARCﺩﻱﺩﮔﺎﻩ ﻛﺎﺭﺑﺮ ،ﺩﻳﺪﮔﺎﻩ ﺧﺎﺭﺟﻲ ﻧﺎﻡ ﺩﺍﺭﺩ .ﻟﺬﺍ ﺩﻳﺪﮔﺎﻩ ﺧﺎﺭﺟﻲ ﻫﻤﺎﻥ ﻣﺤﺘﻮﻳﺎﺕ
) ﻳﻌﻨﻲ ،ﺍﺯ ﻧﻈﺮ ﺁﻥ ﻛﺎﺭﺑﺮ ،ﺩﻳﺪﮔﺎﻩ ﺑﺎﻧﻚ ﺍﻃﻼﻋﺎﺗﻲ ﺍﺳﺖ ﻛﻪ ﺗﻮﺳﻂ ﻛﺎﺭﺑﺮﺍﻥ ﻗﺎﺑﻞ ﻣﺸﺎﻫﺪﻩ ﺍﺳﺖ
ﺧﺎﺭﺟﻲ ،ﺑﺎﻧﻚ ﺍﻃﻼﻋﺎﺗﻲ ﺍﺳﺖ ( .ﺑﻪ ﻋﻨﻮﺍﻥ ﻣﺜﺎﻝ ،ﻛﺎﺭﺑﺮﻱ ﺍﺯ ﺑﺨﺶ ﭘﺮﺳﻨﻠﻲ ﻣﻤﻜﻦ ﺍﺳﺖ ﺑﺎﻧﻚ
ﺍﻃﻼﻋﺎﺗﻲ ﺭﺍ ﻣﺠﻤﻮﻋﻪ ﺍﻱ ﺍﺯ ﺭﻭﻱﺩﺍﺩﻫﺎﻱ ﺭﻛﻮﺭﺩ ﻛﺎﺭﻛﻨﺎﻥ ﻭ ﻣﺤﻞ ﻛﺎﺭ ﺁﻧﺎﻥ ﺑﺪﺍﻧﺪ ﻭ ﺍﺯ ﺭﻭﻳﺪﺍﺩﻫﺎﻱ ﺭﻛﻮﺭﺩ
ﻗﻄﻌﺎﺕ ﻭ ﻋﺮﺿﻪ ﻛﻨﻨﺪﻩ ﻫﺎ ﻛﻪ ﺗﻮﺳﻂ ﻛﺎﺭﺑﺮﺍﻥ ﻓﺮﻭﺵ ﺩﺳﺘﻴﺎﺑﻲ ﻣﻲ ﺷﻮﺩ ،ﺑﻲ ﺧﺒﺮ ﺑﺎﺷﺪ .
ﺑﻪ ﻃﻮﺭ ﻛﻠﻲ ،ﺩﻳﺪﮔﺎﻩ ﺧﺎﺭﺟﻲ ﺷﺎﻣﻞ ﺭﻭﻳﺪﺍﺩﻫﺎﻱ ﻣﺘﻌﺪﺩﻱ ﺍﺯ ﻫﺮﻳﻚ ﺍﺯ ﺍﻧﻮﺍﻉ ﺭﻛﻮﺭﺩ ﺧﺎﺭﺟﻲ ﺍﺳﺖ )ﻛﻪ
ﺍﻟﺰﺍﻣﺎ ﻫﻤﺎﻥ ﺭﻛﻮﺭﺩ ﺫﺧﻴﺮﻩ ﺷﺪﻩ ﻧﻴﺴﺖ ( .ﻓﺮﺽ ﻣﻴﻜﻨﻴﻢ ﺗﻤﺎﻡ ﺍﻃﻼﻋﺎﺗﻲ ﻛﻪ ﺩﺭ ﺳﻄﺢ ﺧﺎﺭﺟﻲ ﻧﻤﺎﻳﺶ
ﺩﺍﺩﻩ ﻣﻲ ﺷﻮﻧﺪ ﺑﻪ ﺷﻜﻞ ﺭﻛﻮﺭﺩﻫﺎﺳﺖ .ﺩﺭ ﺣﺎﻟﻴﻜﻪ ﺩﺭ ﺑﻌﻀﻲ ﺍﺯ ﺳﻴﺴﺘﻢ ﻫﺎ ﻣﻤﻜﻦ ﺍﺳﺖ ﺍﻃﻼﻋﺎﺕ ﺑﻪ
ﺷﻜﻞ ﺭﻛﻮﺭﺩ ﺫﺧﻴﺮﻩ ﻧﺸﻮﺩ DSL .ﻛﺎﺭﺑﺮ ،ﺑﺮﺍﺳﺎﺱ ﺭﻛﻮﺭﺩﻫﺎﻱ ﺧﺎﺭﺟﻲ ﺗﻌﺮﻳﻒ ﺷﺪﻩ ﺍﺳﺖ :ﺑﻪ ﻋﻨﻮﺍﻥ
ﻣﺜﺎﻝ ،ﻋﻤﻞ ﺑﺎﺯﻳﺎﺑﻲ ﻣﺮﺑﻮﻁ ﺑﻪ DMLﺭﻭﻳﺪﺍﺩﻫﺎﻱ ﺭﻛﻮﺭﺩ ﺧﺎﺭﺟﻲ ﺭﺍ ﺑﺎﺯﻳﺎﺑﻲ ﻣﻲ ﻛﻨﺪ ،ﻧﻪ ﺭﻭﻳﺪﺍﺩ
ﺭﻛﻮﺭﺩ ﺫﺧﻴﺮﻩ ﺷﺪﻩ ﺭﺍ.
.ﺍﺯ ﺍﻳﻨﺠﺎ ﺑﻪ ﺑﻌﺪ ﺍﺯ ﺗﻮﺟﻪ :ﻣﻲ ﺑﻴﻨﻴﻢ ﻛﻪ ﺍﺻﻄﻼﺡ ﺭﻛﻮﺭﺩ ﻣﻨﻄﻘﻲ ﺑﻪ ﺭﻛﻮﺭﺩ ﺧﺎﺭﺟﻲ ﺍﺷﺎﺭﻩ ﺩﺍﺭﺩ
ﺍﺻﻄﻼﺡ ﺭﻛﻮﺭﺩ ﻣﻨﻄﻘﻲ ﺍﺳﺘﻔﺎﺩﻩ ﻧﻤﻲ ﻛﻨﻴﻢ.
ﻫﺮ ﺩﻳﺪﮔﺎﻩ ﺧﺎﺭﺟﻲ ﺑﻪ ﻭﺳﻴﻠﻪ ﺷﻤﺎﻱ ﺧﺎﺭﺟﻲ ﺗﻌﺮﻳﻒ ﻣﻲ ﺷﻮﺩ ﻛﻪ ﺣﺎﻭﻱ ﺗﻌﺎﺭ ﻳﻒ ﺍﻧﻮﺍﻉ ﻫﺮ ﻳﻚ ﺍﺯ
ﺭﻛﻮﺭﺩﻫﺎﻱ ﺧﺎﺭﺟﻲ ﺩﺭ ﺁﻥ ﺩﻳﺪﮔﺎﻩ ﺧﺎﺭﺟﻲ ﺍﺳﺖ .ﺷﻤﺎﻱ ﺧﺎﺭﺟﻲ ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺑﺨﺶ DDLﻣﺮﺑﻮﻁ
ﺑﻪ DSLﻧﻮﺷﺘﻪ ﻣﻲ ﺷﻮﺩ .ﻟﺬﺍ DDLﺭﺍ ﮔﺎﻫﻲ DDLﺧﺎﺭﺟﻲ ﻧﻴﺰ ﻣﻲ ﮔﻮﻳﻨﺪ .ﺑﻪ ﻋﻨﻮﺍﻥ ﻣﺜﺎﻝ ،ﻧﻮﻉ
11
ﺭﻛﻮﺭﺩ ﺧﺎﺭﺟﻲ ﻛﺎﺭﻣﻨﺪ ﻣﻤﻜﻦ ﺍﺳﺖ ﺷﺎﻣﻞ ﺍﻳﻦ ﻓﻴﻠﺪﻫﺎ ﺑﺎﺷﺪ :ﺷﻤﺎﺭﻩ ﻛﺎﺭﻣﻨﺪﻱ 6ﻛﺎﺭﺍﻛﺘﺮﻱ ،ﻓﻴﻞﺩ
ﺣﻘﻮﻕ 5ﺭﻗﻤﻲ ﻭ ﻏﻴﺮﻩ.
12
ﻳﺎﺩﺁﻭﺭﻱ ﻣﻲ ﺷﻮﺩ ﻛﻪ ﻫﻴﭽﻜﺪﺍﻡ ﺍﺯ ﺳﻴﺴﺘﻢ ﻫﺎﻱ ﺍﻣﺮﻭﺯﻱ ﺍﺯ ﺷﻤﺎﻱ ﺍﺩﺭﺍﻛﻲ ﻛﻪ ﺍﻳﻦ ﺩﺭﺟﻪ ﺍﺯ ﺗﻤﺎﻣﻴﺖ ﺭﺍ
ﺷﺎﻣﻞ ﺷﻮﺩ ،ﭘﺸﺘﻴﺒﺎﻧﻲ ﻧﻤﻲ ﻛﻨﻨﺪ .ﺩﺭ ﺍﻏﻠﺐ ﺳﻴﺴﺘﻢ ﻫﺎﻱ ﻣﻮﺟﻮﺩ ،ﺷﻤﺎﻱ ﺍﺩﺭﺍﻛﻲ ﻛﻤﻲ ﺑﻴﺸﺘﺮ ﺍﺯ
ﺍﺟﺘﻤﺎﻉ ﺗﻤﺎﻡ ﺷﻤﺎﻫﺎﻱ ﺧﺎﺭﺟﻲ ،ﺑﻪ ﺍﺿﺎﻓﻪ ﻗﻴﺪﻫﺎﻱ ﺍﻣﻨﻴﺘﻲ ﻭ ﺟﺎﻣﻌﻴﺖ ﺍﺳﺖ .ﺍﻣﺎ ﺳﻴﺴﺘﻢ ﻫﺎﻱ ﺁﻱﻧﺪﻩ
ﻣﻤﻜﻦ ﺍﺳﺖ ﺩﺭ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺷﻤﺎﻱ ﺍﺩﺭﺍﻛﻲ ﺗﺨﺼﺺ ﺩﺍﺷﺘﻪ ﺑﺎﺷﻨﺪ .
13
ﺩﺳﺘﻴﺎﺑﻲ ﺑﻪ ﻋﻤﻠﻜﺮﺩ ﻛﺎﺭﺍﻳﻲ ﻣﻄﻠﻮﺏ ﺍﺳﺖ .ﻣﺜﻞ ﺣﺎﻟﺘﻲ ﻛﻪ ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﺎﻥ ﺩﺭ ﺯﺑﺎﻥ ﻫﺎﻱ ﺳﻄﺢ ﺑﺎﻻ
ﻣﺠﺒﻮﺭ ﻣﻲ ﺷﻮﻧﺪ ﺍﺯ ﺯﺑﺎﻥ ﺍﺳﻤﺒﻠﻲ ﺍﺳﺘﻔﺎﺩﻩ ﻛﻨﻨﺪ ﺗﺎ ﻛﺎﺭﺍﻳﻲ ﻣﻄﻠﻮﺏ ﺭﺍ ﺑﻪ ﺩﺳﺖ ﺁﻭﺭﻧﺪ .
ﻧﺮﻣﺎﻝﺳﺎﺯﻱ
ﻫﺪﻑ ﺍﺯ ﻧﺮﻣﺎﻝ ﺳﺎﺯﻱ ﻛﺎﻫﺶ ﺟﺪﺍﻭﻝ ﭘﻴﭽﻴﺪﻩ ﺑﻪ ﻣﺠﻤﻮﻋﻪ ﺍﻱ ﻛﻮﭼﻚ ﻭ ﭘﺎﻳﺪﺍﺭ ﺍﺯ ﺳﺎﺧﺘﺎﺭ ﺩﺍﺩﻩ ﻫﺎ ﻣﻲ -
ﺑﺎﺷﺪ .ﺳﺎﺧﺘﺎﺭ ﻧﺮﻣﺎﻝ ﺷﺪﻩ ﺍﻧﻌﻄﺎﻑ ﭘﺬﻳﺮﺗﺮ ،ﭘﺎﻳﺪﺍﺭﺗﺮ ﻭ ﺍﺯ ﻟﺤﺎﻅ ﻧﮕﻬﺪﺍﺭﻱ ﺭﺍﺣﺖ ﺗﺮ ﺍﺯ ﺳﺎﺧﺘﺎﺭ ﻏﻴﺮﻧﺮﻣﺎﻝ
ﺍﺳﺖ.
ﺳﻄﻮﺡ ﻧﺮﻣﺎﻝﺳﺎﺯﻱ:
• :1NFﺣﺬﻑ ﮔﺮﻭﻩﻫﺎﻱ ﺗﻜﺮﺍﺭﺷﻮﻧﺪﻩ
• :2NFﺣﺬﻑ ﻭﺍﺑﺴﺘﮕﻲﻫﺎﻱ ﺟﺰﺋﻲ
• :3NFﺣﺬﻑ ﻭﺍﺑﺴﺘﮕﻲﻫﺎﻱ ﺗﺎﺑﻌﻲ ﺑﺎ ﻭﺍﺳﻄﻪ
)ﺗﺎ 3NFﺿﺮﻭﺭﺕ ﺩﺍﺭﺩ(.
ﺿﺮﻭﺭﺕ ﻧﺮﻣﺎﻝﺳﺎﺯﻱ:
• ﻛﺎﻫﺶ ﺍﻓﺰﻭﻧﮕﻲ ﺩﺍﺩﻩ
• ﻛﺎﻫﺶ ﺑﻲﻧﻈﻤﻲ
• ﻛﺎﻫﺶ ﻣﻘﺎﺩﻳﺮ ﺗﻬﻲ
14
ﻋﻤﻞ ﻓﻮﺕ ﻧﻤﻮﺩﻩ ﺍﻧﺪ .ﺍﻳﻦ ﺩﺍﻧﺶ ﺑﻪ ﻣﺎ ﻧﺸﺎﻥ ﻣﻲ ﺩﻫﺪ ﻛﻪ ﺍﮔﺮ ﭼﻨﻴﻦ ﺑﻴﻤﺎﺭﻱ ﻣﺠﺪﺩﺍ ﺁﻣﺪ ﻛﺎﺩﺭ ﭘﺰﺷﻜﻲ
ﺑﺪﺍﻧﻨﺪ ﻛﻪ ﭼﮕﻮﻧﻪ ﺑﺎﻳﺪ ﻋﻤﻞ ﻛﻨﻨﺪ.
ﺑﻨﺎﺑﺮﺍﻳﻦ ﺩﺍﺩﻩﻛﺎﻭﻱ ﻳﻚ ﺍﺳﺘﻨﺘﺎﺝ ﺍﺯ ﺩﺍﺩﻩﻫﺎ ﻭ ﺑﻪ ﻋﺒﺎﺭﺕ ﺩﻳﮕﺮ ﭘﻴﺪﺍﻛﺮﺩﻥ ﺍﻟﮕﻮ ﺍﺯ ﺩﺍﺩﻩ ﻫﺎ ﻣﻲﺑﺎﺷﺪ.
) (taskﺍﺻﻠﻲ ﺩﺭ ﺩﺍﺩﻩ ﻛﺎﻭﻱ ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﻣﺪﻟﻬﺎﻱ ﻫﻮﺵ ﻣﺼﻨﻮﻋﻲ ﻣﺎﻧﻨﺪ ﺗﺌﻮﺭﻱ ﻓﺎﺯﻱ ،ﺳﻪ ﻛﺎﺭ
ﺻﻮﺭﺕ ﻣﻲﮔﻴﺮﺩ:
• :Associationﻳﻚ ﺳﺮﻱ ﻗﻮﺍﻧﻴﻦ ﺍﻧﺠﻤﻨﻲ )ﺍﻟﮕﻮ ﻳﺎ (Patternﺍﻳﺠﺎﺩ ﻣﻲﻛﻨﺪ ﻭ ﻳﻚ ﺩﺍﻧﺶ ﻭ
ﺍﻟﮕﻮﻱ ﺧﺎﺹ ﺑﻪ ﻣﺎ ﻣﻲ ﺩﻫﺪ .ﻳﻌﻨﻲ ﺍﺯ ﺭﻭﻱ ﺩﺍﺩﻩ ﻫﺎ ﻳﻚ ﻣﺪﻝ ﻫﻮﺷﻤﻨﺪ ﭘﻴﺶ ﺑﻴﻨﻲ ﺍﻳﺠﺎﺩ ﻣﻲ -
ﺷﻮﺩ.
• :Clusteringﺑﻪ ﻣﻌﻨﻲ ﺧﻮﺷﻪ ﺑﻨﺪﻱ ﻣﻲ ﺑﺎﺷﺪ .ﺑﻪ ﻋﻨﻮﺍﻥ ﻧﻤﻮﻧﻪ ﺍﮔﺮ ﺑﻴﻤﺎﺭﺍﻥ ﺭﺍ ﺑﺮﺍﺳﺎﺱ ﺻﻔﺘﻬﺎ
ﻳﺎ ﻭﻳﮋﮔﻴﻬﺎ 1ﺑﺪﻭﻥ ﻫﻴﭻ ﮔﻮﻧﻪ ﺑﺮﭼﺴﺒﻲ 2ﮔﺮﻭﻩﺑﻨﺪﻱ ﻛﻨﻴﻢ ،ﻋﻤﻞ ﺧﻮﺷﻪﺑﻨﺪﻱ ﺍﻧﺞﺍﻡ ﺩﺍﺩﻩ ﺍﻳﻢ.
F1 F0
• :Classificationﺑﻪ ﻣﻌﻨﻲ ﺩﺳﺘﻪ ﺑﻨﺪﻱ ﻳﺎ ﻛﻼﺱ ﺑﻨﺪﻱ ﺍﺳﺖ .ﻣﺜﻼ ﺍﮔﺮ ﻫﻤﺎﻥ ﺑﻴﻤﺎﺭﺍﻥ ﺭﺍ ﺍﻳﻦ
ﺑﻨﺪﻱ ﻛﻨﻴﻢ ،ﺩﺳﺘﻪ ﺑﻨﺪﻱ ﺑﺎﺭ ﺑﺮﺍﺳﺎﺱ ﻳﻚ ﺳﺮﻱ ﺑﺮﭼﺴﺒﻬﺎﻱ ﺍﺯﭘﻴﺶ ﻣﺸﺨﺺ ﺷﺪﻩ ﮔﺮﻭﻩ
ﻣﺤﺴﻮﺏ ﻣﻲﺷﻮﺩ .ﻳﻜﻲ ﺍﺯ ﺭﻭﺷﻬﺎﻱ ﺩﺳﺘﻪﺑﻨﺪﻱ ﺩﺭﺧﺖ ﺗﺼﻤﻴﻢ 3ﺍﺳﺖ.
F2
ﺩﺭ ﺣﻘﻴﻘﺖ ﻛﺎﺭ ﭘﻴﺸﮕﻮﻳﻲ 4ﺩﺭ ﻛﻼﺱﺑﻨﺪﻱ ﺍﻧﺠﺎﻡ ﻣﻲﺷﻮﺩ ﻳﻌﻨﻲ ﻓﺮﺁﻳﻨﺪ classificationﺍﻓﺮﺍﺩ ﺟﺪﻳﺪ
F3
ﺭﺍ ﭘﻴﺸﮕﻮﻳﻲ ﻣﻲ ﻛﻨﺪ ﻭ ﻣﺸﺨﺺ ﻣﻲ ﻛﻨﺪ ﻛﻪ ﺁﻳﺎ ﺑﻴﻤﺎﺭ ﺍﺳﺖ ﻳﺎ ﺳﺎﻟﻢ .ﺑﻪ ﻋﺒﺎﺭﺕ ﺩﻳﮕﺮ ﻣﺸﺨﺺ ﻣﻲ ﺷﻮﺩ
ﻛﻪ ﻓﺮﺩﻱ ﻛﻪ ﺟﺪﻳﺪﺍً ﻭﺍﺭﺩ ﻣﺪﻝ ﺷﺪﻩ ﺍﺳﺖ ﺩﺭ ﻛﺪﺍﻡ ﺩﺳﺘﻪ ﻗﺮﺍﺭ ﻣﻲ ﮔﻴﺮﺩ .ﺍﻣﺎ ﺩﺭ ﺧﻮﺷﻪﺑﻨﺪﻱ ﻧﻤﻮﻧﻪﻫﺎﻱ
ﻗﺪﻳﻤﻲ ﮔﺮﻭﻩﺑﻨﺪﻱ ﻣﻲ ﺷﻮﺩ ﻭ ﺁﻧﻬﺎﻳﻲ ﻛﻪ ﺩﺭ ﻳﻚ ﻛﻼﺳﺘﺮ ﻫﺴﺘﻨﺪ ﺑﻪ ﺍﻳﻦ ﻣﻌﻨﻲ ﺍﺳﺖ ﻛﻪ ﻭﻳﮋﮔﻴﻬﺎﻳﺸﺎﻥ
ﻧﺰﺩﻳﻚ ﺑﻪ ﻫﻢ ﻣﻲﺑﺎﺷﺪ.
ﺩﺍﺩﻩﻛﺎﻭﻱ ﻛﺎﺭﺑﺮﺩﻫﺎﻱ ﺯﻳﺎﺩﻱ ﺩﺍﺭﺩ ﻣﺎﻧﻨﺪ ﭘﺰﺷﻜﻲ ،ﻣﺎﻟﻲ ﻭ ....
ﻳﺎﺩﮔﻴﺮﻱ ﻣﺎﺷﻴﻦ :5ﺳﻴﺴﺘﻢﻫﺎﻱ ﺧﻮﺩﻳﺎﺩﮔﻴﺮﻧﺪﻩ ﻛﻪ ﺑﻪ ﻃﻮﺭ ﺧﻮﺩﻛﺎﺭ ﻳﺎﺩ ﻣﻲ ﮔﻴﺮﻧﺪ )ﻣﺜﻼ ﻳﻚ ﻣﺎﺷﻴﻦ
F4
ﺭﺍ ﺣﺪﺱ ﻣﻲ ﺯﻧﺪ ﻭ ﺑﻪ ﺍﻭ ﭘﻴﺸﻨﻬﺎﺩ ﻣﻲ ﺩﻫﺪ .ﺑﻪ ﻋﺒﺎﺭﺕ ﺩﻳﮕﺮﻱ ﺍﻓﺮﺍﺩ ﺷﺒﻴﻪ ﺑﻪ ﻫﻢ ﺭﺍ ﺷﻨﺎﺳﺎﻳﻲ ﻣﻲ ﻛﻨﺪ ﻭ
1
Features
2
label
3
Decision Tree
4
prediction
5
Machine Learning
6
Recommender System
15
ﺑﻪ ﻳﻚ ﻛﺎﺭﺑﺮ ﺁﻳﺘﻤﻬﺎﻳﻲ ﺭﺍ ﭘﻴﺸﻨﻬﺎﺩ ﻣﻲ ﻛﻨﺪ ﻛﻪ ﻛﺎﺭﺑﺮﺍﻥ ﻣﺸﺎﺑﻪ ﺑﺎ ﻭﻱ ﺁﻧﻬﺎ ﺑﻪ ﺁﻧﻬﺎ ﺍﻣﺘﻴﺎ ﺯ ﺑﺎﻻﻳﻲ ﺩﺍﺩﻩﺍﻧﺪ.
ﺑﻪ ﻋﺒﺎﺭﺕ ﺩﻳﮕﺮ ﺳﻴﺴﺘﻢ ﻫﺎﻱ ﭘﻴﺸﻨﻬﺎﺩﺩﻫﻨﺪﻩ ﺍﺯ ﻧﻈﺮﻛﺎﻭﻱ ﺑﺮﺍﻱ ﭘﻴﺸﻨﻬﺎﺩ ﺁﻳﺘﻤﻬﺎﻱ ﻣﻨﺎﺳﺐ ﺑﻪ ﻛﺎﺭﺑﺮ
ﺍﺳﺘﻔﺎﺩﻩ ﻣﻲﻛﻨﻨﺪ.
16
- ﻳﻚ ﺳﻴﺴﺘﻢ ﻛﺎﻣﭙﻴﻮﺗﺮﻱ ﺑﺮﺍﻱ ﻧﮕﻬﺪﺍﺭﻱ ﺭﻛﻮﺭﺩﻫﺎﺳﺖ ﻭ ﻫﺪﻑ ﺍﺻﻠﻲ ﺁﻥ ﺫﺧﻴﺮﻩ ﺍﻃﻼﻋﺎﺕ ﻭ ﻓﺮﺍﻫﻢ
ﻧﻤﻮﺩﻥ ﺍﻣﻜﺎﻧﺎﺗﻲ ﺑﺮﺍﻱ ﺑﺎﺯﻳﺎﺑﻲ ﻭ ﺑﻬﻨﮕﺎﻡ ﺳﺎﺯﻱ ﺍﻃﻼﻋﺎﺕ ﻛﺎﺭﺑﺮﺍﻥ ﺍﺳﺖ .ﺳﻴﺴﺘﻢ ﭘﺎﻳﮕﺎﻩ ﺩﺍﺩﻩ ﺍﺯ ﭼﻬﺎﺭ
ﻋﻨﺼﺮ ﺍﺻﻠﻲ ﺗﺸﻜﻴﻞ ﺷﺪﻩ ﺍﺳﺖ:
ﺩﺍﺩﻩﻫﺎ •
ﻧﺮﻡﺍﻓﺰﺍﺭ •
ﺳﺨﺖﺍﻓﺰﺍﺭ •
ﻛﺎﺭﺑﺮﺍﻥ •
17
• :Durabiltyﻣﺎﻧﺪﮔﺎﺭﻱ ﻳﺎ ﭘﺎﻳﺪﺍﺭﻱ .ﺩﺭﺻﻮﺭﺗﻲ ﻛﻪ ﺗﺮﺍﻛﻨﺶ ﺑﺎ ﻣﻮﻓﻘﻴﺖ ﭘﺎﻳﺎﻥ ﻳﺎﺑﺪ ،ﺍﺛﺮﺍﺕ ﺁﻥ
ﺭﻭﻱ ﭘﺎﻳﮕﺎﻩ ﺩﺍﺩﻩ ﺑﺎﻳﺪ ﺑﻪ ﺻﻮﺭﺕ ﺩﺍﺋﻤﻲ ﻣﺎﻧﺪﮔﺎﺭ ﺑﻤﺎﻧﺪ.
18
ﺑﺮﻗﺮﺍﺭﻱ ﺟﺎﻣﻌﻴﺖ ﻭﻇﻴﻔﻪ DBMSﻣﻴﺒﺎﺷﺪ ﻛﻪ ﻣﻲ ﺗﻮﺍﻥ ﺁﻧﺮﺍ ﺑﻪ ﻣﻮﺍﺭﺩ ﺯﻳﺮ ﺩﺳﺘﻪ ﺑﻨﺪﻱ ﻛﺮﺩ:
.1ﺩﺍﻣﻨﻪ ﺍﻱ( ﺩﺭ ﺍﻳﻨﺠﺎ ﻛﻠﻴﻪ ﺻﻔﺎﺕ ﺩﺭ ﺗﻤﺎﻣﻲ ﺭﺍﺑﻄﻪ ﻫﺎ ﻫﻤﻨﻮﻉ ﺩﺍﻣﻨﻪ ﻣﻴﺒﺎﺷﺪ .
.2ﺍﺭﺟﺎﻋﻲ( ﺍﻳﻨﺠﺎ ﻛﻠﻴﺪ ﺧﺎﺭﺟﻲ ﺑﺎﻳﺪ ﺩﺭﺳﺖ ﺑﺎﺷﺪ ﻭ ﺗﻬﻲ ﻧﺒﺎﺷﺪ .
.3ﺩﺭﻭﻥ ﺭﺍﺑﻄﻪ ﺍﻱ ( ﺍﻳﻨﺠﺎ ﻧﺒﺎﻳﺪ ﻋﻀﻮ ﺗﻜﺮﺍﺭﻱ ﻣﻮﺟﻮﺩ ﺑﺎﺷﺪ ،ﻫﻤﭽﻨﻴﻦ ﻛﻠﻴﺪﻫﺎ Null
ﻧﺒﺎﺷﺪ.
ﭘﺎﻳﮕﺎﻩ ﺩﺍﺩﻩ ﺍﺯ ﺩﻳﺪ ﻛﺎﺭﺑﺮﺍﻥ:
- 1ﻫﺪﻑ ﭘﺎﻳﮕﺎﻩ ﺩﺍﺩﻩ ﺍﻳﻦ ﺍﺳﺖ ﻛﻪ ﺍﺯ ﺗﻚ ﻛﺎﺭﺑﺮﻩ ﺑﻪ ﭼﻨﺪﻛﺎﺭﺑﺮﻩ ﺑﺮﺳﺪ .ﺑﺪﻳﻦ ﻣﻌﻨﻲ ﻛﻪ
ﻫﺮ ﻛﺎﺭﺑﺮ ﺣﺲ ﻛﻨﺪ ﻓﻘﻂ ﺧﻮﺩﺵ ﺩﺭ ﺣﺎﻝ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺑﺎﻧﻚ ﺍﻃﻼﻋﺎﺗﻲ ﺍﺳﺖ ﻭ ﻭﺟﻮﺩ
ﺳﺎﻳﺮ ﻛﺎﺭﺑﺮﺍﻥ ﺭﺍ ﺣﺲ ﻧﻜﻨﺪ.
- 2ﻫﻴﭻ ﻛﺪﺍﻡ ﺍﺯ ﻛﺎﺭﺑﺮﺍﻥ ﺣﻴﻦ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺑﺎﻧﻚ ﺍﻃﻼﻋﺎﺗﻲ ﺑﺎ ﻳﻜﺪﻳﮕﺮ ﺗﻀّﺎﺩ )(Conflict
ﻧﺪﺍﺷﺘﻪ ﺑﺎﺷﻨﺪ.
19
ﻓﺼﻞ :2
ﺗﺮﺍﻛﻨﺶ ﻫﺎ
20
ﻣﻔﻬﻮﻡ ﺗﺮﺍﻛﻨﺶ:
ﺗﺮﺍﻛﻨﺶ ) (Transactionﻳﻚ ﺑﺮﻧﺎﻣﻪ ﻓﻌﺎﻝ ﺍﺳﺖ ﻛﻪ ﺩﻧﺒﺎﻟﻪ ﺍﻱ ﺍﺯ ﺩﺳﺘﻮﺭﺍﺕ ﺭﺍ ﺷﺎﻣﻞ ﻣﻲ ﺷﻮﺩ ﻭ ﺑﻪ
ﻃﻮﺭ ﺧﺎﺹ ﺑﻌﻀﻲ ﻋﻤﻠﻴﺎﺕ ﺁﻥ ﺭﻭﻱ ﭘﺎﻳﮕﺎﻩ ﺩﺍﺩﻩ ﺍﺳﺖ .
ﺗﺮﺍﻛﻨﺶ ﻭﺍﺣﺪﻱ ﺍﺯ ﺑﺮﻧﺎﻣﻪ ﺍﺟﺮﺍﻳﻲ ﺍﺳﺖ ﻛﻪ ﺁﻳﺘﻢ ﻫﺎﻱ ﻣﺨﺘﻠﻒ ﺩﺍﺩﻩ ﺭﺍ ﺑﺎﺯﻳﺎﺑﻲ ﻳﺎ ﺑﺮﻭﺯ ﺭﺳﺎﻧﻲ ﻣﻲ ﻛﻨﺪ.
ﺑﺮﻧﺎﻣﻪ ﻫﺎﻱ ﻛﺎﺭﺑﺮﺍﻥ ﺑﻪ ﻋﻨﻮﺍﻥ ﺗﺮﺍﻛﻨﺶ ﺑﻪ ﺳﻴﺴﺘﻢ ﻣﺪﻳﺮﻳﺖ ﺑﺎﻧﻚ ﺍﻃﻼﻋﺎﺕ ﺗﺤﻮﻳﻞ ﻣﻲ ﺷﻮﺩ ،ﺍﻳﻦ
ﺳﻴﺴﺘﻢ ﭼﻬﺎﺭ ﻛﻨﺘﺮﻝ ﻣﻮﺳﻮﻡ ﺑﻪ ASIDﺭﺍ ﺭﻭﻱ ﺁﻧﻬﺎ ﺍﻋﻤﺎﻝ ﻭ ﺩﺭ ﻧﻬﺎﻳﺖ ﺍﻳﻦ ﺑﺮﻧﺎﻣﻪ ﻫﺎ ﻳﺎ ﺑﻪ
ﺧﻮﺑﻲ ﺍﺟﺮﺍ ﺷﺪﻩ ﻭﭘﺎﻳﺎﻥ ﻣﻲ ﻳﺎﺑﻨﺪ ﻛﻪ ﺑﻪ ﺍﻳﻦ ﺣﺎﻟﺖ ﻣﻲ ﺷﻮﻧﺪ ﺍﻧﺠﺎﻡ ﻳﺎ ﺗﺜﺒﻴﺖ ) (commitﻣﻲ
ﮔﻮﻳﻨﺪ ﻭ ﻳﺎ ﺍﻳﻨﻜﻪ ﺳﺎﻗﻂ ) (abortﻣﻲ ﺷﻮﻧﺪ.
ﭘﺲ ﻣﺠﻤﻮﻋﻪ ﺍﻱ ﺍﺯ ﻋﻤﻠﮕﺮﻫﺎﻱ ﺑﺎﻧﻚ ﺍﻃﻼﻋﺎﺕ ﻛﻪ ﺍﺯ ﺩﻳﺪ ﻛﺎﺭﺑﺮ ﻳﻚ ﻭﺍﺣﺪ ﻣﻨﻄﻘﻲ ﻛﺎﺭ ﺭﺍ ﺗﺸﻜﻴﻞ
ﻣﻲ ﺩﻫﻨﺪ ،ﺗﺮﺍﻛﻨﺶ ﻧﺎﻡ ﺩﺍﺭﺩ.
ﻣﺜﻼ ﻭﻗﺘﻲ ﺍﺯ ﻳﻚ ﺣﺴﺎﺏ Aﻣﺒﻠﻐﻲ ﺭﺍ ﺑﻪ ﺣﺴﺎﺏ Bﻣﻨﺘﻘﻞ ﻣﻲﻛﻨﺪ ،ﻳﻚ ﺗﺮﺍﻛﻨﺶ ﺍﺳﺖ ﻛﻪ ﺷﺎﻣﻞ
ﺩﻭ ﻛﺎﺭ ﺍﺳﺖ:
- 1ﻣﺒﻠﻎ ﻣﻮﺭﺩ ﻧﻈﺮ ﺍﺯ ﺣﺴﺎﺏ Aﻛﻢ ﺷﻮﺩ
- 2ﻫﻤﺎﻥ ﻣﺒﻠﻎ ﺑﻪ ﺣﺴﺎﺏ Bﺍﺿﺎﻓﻪ ﺷﻮﺩ.
21
ﺑﺮﺭﺳﻲ ﺧﻮﺍﺹ :ACID
. ﺍﮔﺮ ﺍﻳﻦ ﺧﻮﺍﺹ ﺭﺍ ﺭﻭﻱ ﺗﻤﺎﻡ ﺗﺮﺍﻛﻨﺶ ﻫﺎ ﺍﻋﻤﺎﻝ ﻛﻨﻴﻢ ،ﺟﺎﻣﻌﻴﺖ ﺑﺎﻧﻚ ﺍﻃﻼﻋﺎﺗﻲ ﺣﻔﻆ ﻣﻲ ﺷﻮﺩ
ﺑﻨﺎﺑﺮﺍﻳﻦ ﻫﺪﻑ ﺍﺻﻠﻲ ﺩﺭ ﺑﺎﻧﻚ ﺍﻃﻼﻋﺎﺗﻲ ،ﺣﻔﻆ ﺟﺎﻣﻌﻴﺖ ﺍﺳﺖ .ﺍﻳﻦ ﺧﻮﺍﺹ ﻋﺒﺎﺭﺗﻨﺪ ﺍﺯ:
Atomicity .1ﻳﻜﭙﺎﺭﭼﮕﻲ
Consistency .2ﻫﻤﺨﻮﺍﻧﻲ ﻳﺎ ﺳﺎﺯﮔﺎﺭﻱ
Isolation .3ﺍﻳﺰﻭﻟﮕﻲ
Durability .4ﭘﺎﻳﺪﺍﺭﻱ ﻳﺎ ﭘﺎﻳﺎﻳﻲ
:Atomicityﺗﺮﺍﻛﻨﺶ ﻫﺎ ﺍﺗﻤﻴﻚ ﻫﺴﺘﻨﺪ ﻳﺎ ﺍﺻﻼ ﺷﺮﻭﻉ ﻧﻤﻲ ﺷﻮﻧﺪ ﻳﺎ ﻭﻗﺘﻲ ﺁﻏﺎﺯ ﺷﺪﻧﺪ ﺣﺘﻤﺎ ﺑﻪ
ﭘﺎﻳﺎﻥ ﻣﻲ ﺭﺳﻨﺪ .ﻳﺎ ﻫﻤﻪ ﺩﺳﺘﻮﺭﺍﺕ ﺑﻪ ﻃﻮﺭ ﻛﺎﻣﻞ ﺍﻧﺠﺎﻡ ﻣﻲ ﺷﻮﺩ ﻳﺎ ﻫﻴﭽﻜﺪﺍﻡ .ﻧﮕﻬﺪﺍﺷﺘﻦ ﺧﺎﺻﻴﺖ
ﺍﺗﻮﻣﻴﻚ ﺑﻮﺩﻥ ﺑﻪ ﻋﻬﺪﻩ ﻛﻨﺘﺮﻝ ﻫﻤﺮﻭﻧﺪﻱ ﻭ ﺗﺮﻣﻴﻢ ﺍﺳﺖ .ﭘﺲ ﺍﺗﻮﻣﻴﻚ ﺑﻮﺩﻥ ﺗﺮﺍﻛﻨﺶ ﻳﻌﻨﻲ ﺍﻳﻨﻜﻪ ﻳﻚ
ﺗﺮﺍﻛﻨﺶ ﻳﺎ ﺑﻄﻮﺭ ﻛﺎﻣﻞ ﺍﺟﺮﺍ ﺷﻮﺩ ﻳﺎ ﺍﺻﻼ ﺍﻧﺠﺎﻡ ﻧﺸﻮﺩ .
:Consistencyﻳﻚ ﺗﺮﺍﻛﻨﺶ ﻳﺎ ﭘﺎﻳﮕﺎﻩ ﺩﺍﺩﻩ ﺭﺍ ﺑﻪ ﺣﺎﻟﺖ ﺳﺎﺯﮔﺎﺭ ﺟﺪﻳﺪﻱ ﻣﻲ ﺑﺮﺩ ﻳﺎ ﺍﮔﺮ ﺷﻜﺴﺘﻲ ﺭﺥ
ﺩﺍﺩ ﻛﻠﻴﻪ ﺩﺍﺩﻩ ﻫﺎ ﺑﻪ ﺣﺎﻟﺖ ﻗﺒﻞ ﺍﺯ ﺷﺮﻭﻉ ﺗﺮﺍﻛﻨﺶ ﺑﺮﻣﻲ ﮔﺮﺩﻧﺪ .ﺍﮔﺮ ﺗﺮﺍﻛﻨﺸﻲ ﺗﺜﺒﻴﺖ ﺷﺪ ،ﻧﺒﺎﻳﺪ ﺑﺎﻧﻚ
ﺍﻃﻼﻋﺎﺕ ﺭﺍ ﺧﺮﺍﺏ ﻛﻨﺪ .ﻣﺜﻼً ﺍﮔﺮ ﺗﺮﺍﻛﻨﺸﻲ ﻧﻤﺮﻩ ﺍﻱ ﺭﺍ ﺗﻐﻴﻴﺮ ﺩﺍﺩ ،ﺑﺎﻳﺪ ﺁﻧﺮﺍ ﺑﻪ ﻳﻚ ﻣﻘﺪﺍﺭ ﻣﺠﺎﺯ ﺗﺒﺪﻳﻞ
ﻛﻨﺪ.
:Isolationﺗﺮﺍﻛﻨﺶ ﻫﺎﻱ ﻫﻤﺮﻭﻧﺪ ﻳﺎ ﺗﺮﺍﻛﻨﺶ ﻫﺎﻳﻲ ﻛﻪ ﻃﻮﻝ ﻋﻤﺮﺷﺎﻥ ﻫﻤﭙﻮﺷﺎﻧﻲ ﺩﺍﺭﺩ ،ﻧﺒﺎﻳﺪ ﺗﺄﺛﻴﺮ
ﻣﺨﺮﺏ ﺭﻭﻱ ﻫﻢ ﺩﺍﺷﺘﻪ ﺑﺎﺷﻨﺪ .ﺗﻮﺟﻪ ﻛﻨﻴﺪ ﻛﻪ ﺗﺮﺍﻛﻨﺶ ﻫﺎﻱ ﻣﺨﺘﻠﻒ ﺍﺯ ﻭﺟﻮﺩ ﻫﻤﺪﻳﮕﺮ ﺑﻲ ﺧﺒﺮ
ﻫﺴﺘﻨﺪ.
:Durabilityﺍﮔﺮ ﺗﺮﺍﻛﻨﺸﻲ ﺗﺜﺒﻴﺖ ﺷﺪ ،ﺗﺄﺛﻴﺮ ﺁﻥ ﺑﻪ ﻃﻮﺭ ﺍﺗﻔﺎﻗﻲ ﺍﺯ ﺑﻴﻦ ﻧﺨﻮﺍﻫﺪ ﺭﻓﺖ .ﻳﻌﻨﻲ
ﺗﺮﺍﻛﻨﺶ ﺗﺜﺒﻴﺖ ﺷﺪﻩ ﺗﺎﺛﻴﺮﺵ ﺩﺍﺋﻤﻲ ﺍﺳﺖ ،ﺣﺘﻲ ﺍﮔﺮ ﺳﻴﺴﺘﻢ ﺧﺮﺍﺏ ﺷﻮﺩ ﺩﺍﺩﻩ ﺩﺭ ﺣﺎﻟﺖ ﺩﺭﺳﺖ ﺑﺎﻗﻲ
ﻣﻲ ﻣﺎﻧﺪ.
22
ﻭﺿﻌﻴﺖ ﺗﺮﺍﻛﻨﺶ:
ﻓﺮﺽ ﻛﻨﻴﻢ ﻣﻲ ﺧﻮﺍﻫﻴﻢ 50ﺩﻻﺭ ﺍﺯ ﺣﺴﺎﺏ Aﻛﺎﺳﺘﻪ ﻭ ﺑﻪ ﺣﺴﺎﺏ Bﺍﺿﺎﻓﻪ ﻛﻨﻴﻢ(A=200,B=100) .
:Atomicity .1ﺍﮔﺮ ﺧﻄﺎﻳﻲ ﺑﻌﺪ ﺍﺯ ﺧﻂ 3ﻳﺎ ﻗﺒﻞ ﺍﺯ ﺧﻂ 6ﺍﻧﺠﺎﻡ ﺷﻮﺩ ،ﭘﺎﻳﮕﺎﻩ ﺩﺍﺩﻩ ﺍﺯ ﺣﺎﻟﺖ
ﺳﺎﺯﮔﺎﺭ ﺧﺎﺭﺝ ﻣﻲ ﺷﻮﺩ ،ﺯﻳﺮﺍ ﺑﺎﻳﺪ ﺣﺎﺻﻞ A+Bﺩﺭ ﻗﺒﻞ ﻭ ﺑﻌﺪ ﺍﺯ ﺗﺮﺍﻛﻨﺶ ﻣﻘﺪﺍﺭﻱ ﻳﻜﺴﺎﻥ
ﺧﻂ 3ﺧﻄﺎ ﺭﺥ ﺩﻫﺪ )ﻳﻌﻨﻲ A+B=150+100ﺣﺎﺻﻞ ﺷﻮﺩ ( ﺩﺍﺷﺘﻪ ﺑﺎﺷﺪ ،ﺍﮔﺮ ﺑﻌﺪ ﺍﺯ
23
ﺩﺳﺘﻮﺭﺍﺕ ﺧﻂ ،4ﺧﻂ 5ﻭ ﺧﻂ 6ﺍﺟﺮﺍ ﻧﺨﻮﺍﻫﻨﺪ ﺷﺪ ﻭ ﻧﺎﺳﺎﺯﮔﺎﺭﻱ ﭘﺪﻳﺪ ﻣﻲ ﺁﻳﺪ ) .ﺩﺭ ﻭﺍﻗﻊ ﺩﺭ
ﺧﺎﺻﻴﺖ ﺍﺗﻮﻣﻴﻚ ﺑﻮﺩﻥ ﺑﻴﺎﻥ ﻣﻲ ﺷﻮﺩ ﻛﻪ ﻳﺎ ﻫﻤﻪ ﻱ ﺩﺳﺘﻮﺭﺍﺕ ﺑﺎﻳﺪ ﺍﺟﺮﺍ ﺷﻮﻧﺪ ﻳﺎ ﻫﻴﭻﻛﺪﺍﻡ (.
:Consistency .2ﭼﻮﻥ ﻣﻘﺪﺍﺭ A+Bﻗﺒﻞ ﺍﺯ ﺗﺮﺍﻛﻨﺶ 200+100=300ﻣﻲ ﺷﻮﺩ ﻭ ﺑﻌﺪ ﺍﺯ
ﺁﻥ ﻫﻢ 150+150=300ﻣﻲ ﺷﻮﺩ ،ﭘﺲ ﺳﺎﺯﮔﺎﺭﻱ ﻭﺟﻮﺩ ﺩﺍﺭﺩ.
:Isolation .3ﺍﮔﺮ ﺑﻴﻦ ﺧﻂ 3ﻭ ﺧﻂ ،6ﻳﻚ ﺗﺮﺍﻛﻨﺶ ﺩﻳﮕﺮ ﺑﻴﺎﻳﺪ ﻭ ﺍﺯ ﺩﺍﺩﻩ ﻫﺎﻱ ﺑﻴﻦ ﺍﻳﻦ ﺩﻭ
ﺧﻂ ﺍﺳﺘﻔﺎﺩﻩ ﻛﻨﺪ ،ﺩﺭ ﺍﻳﻦ ﺻﻮﺭﺕ ﻧﺎﺳﺎﺯﮔﺎﺭﻱ ﺩﺭ ﭘﺎﻳﮕﺎﻩ ﺩﺍﺩﻩ ﻣﺸﺎﻫﺪﻩ ﻣﻲ ﺷﻮﺩ .ﺩﺭ ﺣﻘﻴﻘﺖ
ﺧﺎﺻﻴﺖ ﺍﻳﺰﻭﻟﮕﻲ ﺍﻳﻦ ﺍﻃﻤﻴﻨﺎﻥ ﺭﺍ ﺣﺎﺻﻞ ﻣﻲ ﻛﻨﺪ ﻛﻪ ﺗﺮﺍﻛﻨﺶ ﻫﺎ ﺑﻪ ﺻﻮﺭﺕ ﺳﺮﻱ ﺍﺟﺮﺍ ﺷﻮﻧﺪ .
:Durability .4ﺑﻌﺪ ﺍﺯ ﺍﻳﻨﻜﻪ ﻫﻤﻪ ﻱ ﺩﺱﺗﻮﺭﺍﺕ ﺗﺮﺍﻛﻨﺶ ﺍﺟﺮﺍ ﺷﺪﻧﺪ ،ﺗﻤﺎﻡ ﺗﻐﻴﻴﺮﺍﺕ ﺩﺭ ﭘﺎﻳﮕﺎﻩ
ﺩﺍﺩﻩ ﺍﻋﻤﺎﻝ ﻣﻲ ﺷﻮﻧﺪ) ،ﺑﻌﺪ ﺍﺯ ﺍﻳﻨﻜﻪ ﭼﻚ ﺷﺪ ﻛﻪ ﺩﺭ ﺗﺮﺍﻛﻨﺶ ﺧﻄﺎﻳﻲ ﻭﺟﻮﺩ ﻧﺪﺍﺭﺩ ،ﺁﻥ
ﺗﺮﺍﻛﻨﺶ ﺑﺎ ﻣﻮﻓﻘﻴﺖ ﺗﻤﺎﻡ ﺷﺪﻩ ﻭ ﺑﻌﺪ ﺍﺯ ﺁ ﻥ ﺑﺮ ﺭﻭﻱ ﺩﻳﺴﻚ ﺫﺧﻴﺮﻩ ﻣﻲ ﺷﻮﺩ(.
:Roll backﺑﺎﺯﻳﺎﺑﻲ ﺗﻐﻴﻴﺮﺍﺕ ﺑﻪ ﻋﻠّﺖ ﻋﺪﻡ ﺩﺭﺳﺘﻲ ﻭ ﻧﻘﺺ .ﺍﻳﻦ ﺩﺳﺖﻭﺭ ﺍﻧﺘﻬﺎﻱ ﻧﺎﻣﻮﻓﻖ ﻳﻚ ﺗﺮﺍﻛﻨﺶ
ﺭﺍ ﺑﻪ ﻣﺪﻳﺮ ﺗﺮﺍﻛﻨﺶ ﺍﻋﻼﻡ ﻣﻲ ﻛﻨﺪ ﻟﺬﺍ ﭘﺎﻳﮕﺎﻩ ﺩﺍﺩﻩ ﺩﺭ ﺣﺎﻟﺘﻲ ﻧﺎﭘﺎﻳﺪﺍﺭ ﻗﺮﺍﺭ ﺩﺍﺭﺩ ﻭ ﺗﻤﺎﻣﻲ ﺍﻋﻤﺎﻝ ﺍﻧﺠﺎﻡ
ﺷﺪﻩ ﺗﻮﺳﻂ ﺍﻳﻦ ﺗﺮﺍﻛﻨﺶ ﺑﺎﻳﺴﺘﻲ ﻟﻐﻮ ﮔﺮﺩﺩ.
*ﺗﻮﺟﻪ ﺩﺍﺷﺘﻪ ﺑﺎﺷﻴﺪ ﻛﻪ ﺍﮔﺮ ﺗﺮﺍﻛﻨﺸﻲ ﺳﺎﻗﻂ ﺷﻮﺩ ،ﻣﻲ ﺗﻮﺍﻥ ﺁﻥ ﺭﺍ ﻣﺠﺪﺩﺍً ﺁﻏﺎﺯ ﻛﺮﺩ ﻭ ﺍﮔﺮ ﺗﺮﺍﻛﻨﺸﻲ ﺁﻣﺎﺩﻩ
ﺍﻧﺠﺎﻡ ﺷﻮﺩ ،ﻣﻤﻜﻦ ﺍﺳﺖ ﺑﺎﺯ ﻫﻢ ﺳﻘﻮﻁ ﻛﻨﺪ.
ﺩﻭ ﺭﻭﺵ ﺑﺮﺍﻱ Abortﻛﺮﺩﻥ ﻭﺟﻮﺩ ﺩﺍﺭﺩ :
Restart .1ﻛﺮﺩﻥ :ﺯﻣﺎﻧﻲ ﺍﺯ ﺍﻳﻦ ﺭﻭﺵ ﺍﺳﺘﻔﺎﺩﻩ ﻣﻲ ﺷﻮﺩ ﻛﻪ ﺧﻄﺎﻱ ﻣﻨﻄﻘﻲ ﻭﺟﻮﺩ ﺩﺍﺷﺘﻪ ﺑﺎﺷﺪ .
24
Kill .2ﻛﺮﺩﻥ :ﺯﻣﺎﻧﻲ ﺍﺯ ﺍﻳﻦ ﺭﻭﺵ ﺍﺳﺘﻔﺎﺩﻩ ﻣﻲ ﺷﻮﺩ ﻛﻪ ﺧﻄﺎﻱ ﺳﻴﺴﺘﻤﻲ ﻭﺟﻮﺩ ﺩﺍﺷﺘﻪ ﺑﺎﺷﺪ .
ﻓﺮﺽ ﺍﻭﻝ :ﻛﻪ ﺩﺭ ﻫﺮ ﻟﺤﻈﻪ ﻓﻘﻂ ﻳﻚ ﺗﺮﺍﻛﻨﺶ ﺩﺭ ﺣﺎﻟﺖ ﺍﺟﺮﺍ ﺍﺳﺖ .
ﻓﺮﺽ ﺩﻭﻡ :ﻳﻚ ﺍﺷﺎﺭﻩ ﮔﺮ ﺑﻪ ﻧﺎﻡ db-pointerﻭﺟﻮﺩ ﺩﺍﺭﺩ ﻛﻪ ﺑﻪ ﺁﺧﺮﻳﻦ ﻛﭙﻲ ﺩﺭﺳﺖ ﺍﺯ ﭘﺎﻳﮕﺎﻩ
ﺩﺍﺩﻩ ﻛﻪ ﺩﺭ ﺣﺎﻟﺖ ﺳﺎﺯﮔﺎﺭﻱ ﺍﺳﺖ ،ﺍﺷﺎﺭﻩ ﻣﻲ ﻛﻨﺪ .
ﻗﺒﻞ ﺍﺯ ﺍﻳﻨﻜﻪ ﺑﺮﻭﺯ ﺭﺳﺎﻧﻲ ﺍﻧﺠﺎﻡ ﺷﻮﺩ ﻳﻚ ﻛﭙﻲ ﺍﺯ ﺍﻃﻼﻋﺎﺕ ﻣﻮﺟﻮﺩ ﺩﺭ ﭘﺎﻳﮕﺎﻩ ﺩﺍﺩﻩ ﮔﺮﻓﺘﻪ ﻣﻲ ﺷﻮﺩ
ﻭ db-pointerﺑﻪ ﺍﻳﻦ ﻛﭙﻲ ﺍﺷﺎﺭﻩ ﻣﻲ ﻛﻨﺪ .ﺁﻧﺮﺍ shadowﻣﻲ ﻧﺎﻣﻴﻢ .ﺑﻌﺪ ﺍﺯ ﺍﺗﻤﺎﻡ ﺗﺮﺍﻛﻨﺶ
ﺗﻐﻴﻴﺮﺍﺕ ﺭﺍ ﺩﺭ ﭘﺎﻳﮕﺎﻩ ﺩﺍﺩﻩ ﺍﻋﻤﺎﻝ ﻣﻲ ﺷﻮﺩ ﻭ ﺍﮔﺮ ﺗﺮﺍﻛﻨﺶ ﺩﻳﮕﺮﻱ ﺑﻌﺪ ﺍﺯ ﺁﻥ ﺍﻧﺠﺎﻡ ﺷﻮﺩ ،ﻣﺠﺪﺩﺍ ﺍﺯ
ﺁﺧﺮﻳﻦ ﺣﺎﻟﺖ ﺳﺎﺯﮔﺎﺭ ﭘﺎﻳﮕﺎﻩ ﺩﺍﺩﻩ ﻳﻚ ﻛﭙﻲ ﺟﺪﻳﺪ ﮔﺮﻓﺘﻪ ﻭ ﺩﺭ shadowﻗﺮﺍﺭ ﻣﻲ ﮔﻴﺮﺩ .ﻫﻤﻪ ﻱ
ﺑﺮﻭﺯ ﺭﺳﺎﻧﻲ ﻫﺎ ﺑﺮﻭﻱ shadow copyﺍﻧﺠﺎﻡ ﻣﻲ ﺷﻮﻧﺪ ﻭ ﺍﺷﺎﺭﻩ ﮔﺮ db-pointerﺑﻪ
shadow copyﺍﻱ ﻛﻪ ﺑﻪ ﻣﺮﺣﻠﻪ partially committedﺭﺳﻴﺪﻩ ﺍﺳﺖ ﺍﺷﺎﺭﻩ ﻣﻲ ﻛﻨﺪ .
ﻫﻤﻪ ﻱ ﺍﻳﻦ ﺗﻐﻴﻴﺮﺍﺕ ﺩﺭ ﻧﻬﺎﻳﺖ ﭘﺲ ﺍﺯ ﺍﺗﻤﺎﻡ ﺗﺮﺍﻛﻨﺶ ﺭﻭﻱ ﺩﻳﺴﻚ ﺫﺧﻴﺮﻩ ﻣﻲ ﺷﻮﻧﺪ.
ﻧﻜﺘﻪ :ﺍﻳﻦ ﺭﻭﺵ ﺑﺪﻟﻴﻞ ﺍﻳﻨﻜﻪ ﺗﻌﺪﺍﺩ ﺯﻱﺍﺩﻱ ﻛﭙﻲ ﮔﺮﻓﺘﻪ ﻣﻲ ﺷﻮﺩ ،ﺭﻭﺵ ﻛﺎﺭﺁﻣﺪ ﻭ ﻣﻔﻴﺪﻱ ﻧﻴﺴﺖ .
ﺍﺟﺮﺍﻫﺎﻱ ﻫﻤﺮﻭﻧﺪ )ﻫﻤﺰﻣﺎﻥ( :ﺩﺭ ﺍﻳﻦ ﻣﺪﻝ ،ﭼﻨﺪ ﺗﺮﺍﻛﻨﺶ ﺩﺭ ﻳﻚ ﺳﻴﺴﺘﻢ ﺍﺟﺎﺯﻩ ﺩﺍﺭﻧﺪ ﺑﻪ
ﻃﻮﺭ ﻫﻤﺰﻣﺎﻥ )ﺩﺭ ﻳﻚ ﻟﺤﻈﻪ( ﺍﺟﺮﺍ ﺷﻮﻧﺪ.
25
.1ﺍﻓﺰﺍﻳﺶ ﭘﺮﺩﺍﺯﺷﮕﺮ ﻭ ﺑﻬﺮﻩ ﻭﺭﻱ ﺍﺯ ﺩﻳﺴﻚ :ﺍﻳﻦ ﺑﻬﺮﻩ ﻭﺭﻱ ﺑﻪ ﻣﻌﻨﺎﻱ ﺑﺎﻻ ﺑﺮﺩﻥ ﺗﻮﺍﻥ
ﻋﻤﻠﻴﺎﺗﻲ ﺗﺮﺍﻛﻨﺶ ﺍﺳﺖ .ﻳﻌﻨﻲ ﺗﺮﺍﻛﻨﺶ ﻣﻲ ﺗﻮﺍﻧﺪ ﺍﺯ ﻭﺍﺣﺪ ﭘﺮﺩﺍﺯﺷﮕﺮ ﻣﺮﻛﺰﻱ ﺩﺭ
ﺩﻳﺴﻚ ﻭ ﻳﺎ ﻧﻮﺷﺘﻦ ﺑﺮﻭﻱ ﻟﺤﻈﻪ ﺍﻱ ﻛﻪ ﺳﺎﻳﺮ ﺗﺮﺍﻛﻨﺶ ﻫﺎ ﺩﺭ ﺣﺎﻝ ﺧﻮﺍﻧﺪﻥ ﺍﺯ
ﺩﻳﺴﻚ ﻣﻲ ﺑﺎﺷﻨﺪ ،ﺍﺳﺘﻔﺎﺩﻩ ﻛﻨﺪ.
.2ﻛﺎﻫﺶ ﺯﻣﺎﻥ ﭘﺎﺳﺦ :ﺑﻪ ﺍﻳﻦ ﻣﻌﻨﺎ ﺳﺖ ﻛﻪ ﻧﻴﺎﺯﻱ ﻧﻴﺴﺖ ﺗﺮﺍﻛﻨﺶ ﻫﺎﻱ ﻛﻮﭼﻚ ﺑﺮﺍﻱ
ﺍﺟﺮﺍ ﺷﺪﻥ ﺯﻣﺎﻥ ﻃﻮﻻﻧﻲ ﺭﺍ ﻣﻨﺘﻈﺮ ﺑﻤﺎﻧﻨﺪ.
ﻋﻴﺐ ﺍﻳﻦ ﺭﻭﺵ :ﻭﺟﻮﺩ ﺑﺮﺧﻮﺭﺩ ﻫﺎﻱ ﺯﻳﺎﺩ ﺍﻳﺮﺍﺩ ﺍﻳﻦ ﻣﺪﻝ ﺍﺳﺖ ﻛﻪ ﺑﺎﻳﺪ ﻛﻨﺘﺮﻝ ﺷﻮﻧﺪ.
ﺯﻣﺎﻧﺒﻨﺪﻫﺎ ):(Schedules
ﺯﻣﺎﻧﺒﻨﺪ ﻳﻚ ﺗﻮﺍﻟﻲ ﺍﺯ ﺩﺳﺘﻮﺭﺍﻟﻌﻤﻞ ﻫﺎﺳﺖ ﻛﻪ ﺗﺮﺗﻴﺐ ﻭﻗﻮﻉ )ﺍﺯ ﻧﻈﺮ ﺯﻣﺎﻧﻲ ( ﺩﺳﺘﻮﺭﺍﻟﻌﻤﻞ ﻫﺎﻱ ﺗﺮﺍﻛﻨﺶ
ﻫﺎﻱ ﻫﻤﺮﻭﻧﺪ ﺍﺟﺮﺍ ﺷﺪﻩ ﺭﺍ ﺗﻌﺮﻳﻒ ﻭ ﻣﺸﺨﺺ ﻣﻲ ﻧﻤﺎﻳﺪ .ﻳﻚ ﺯﻣﺎﻧﺒﻨﺪ ﺑﺮﺍﻱ ﻳﻚ ﻣﺠﻤﻮﻋﻪ ﺍﺯ ﺗﺮﺍﻛﻨﺶ
ﻫﺎ ﺑﺎﻳﺪ ﺷﺎﻣﻞ ﻫﻤﻪ ﻱ ﺩﺳﺘﻮﺭﺍﻟﻌﻤﻞ ﻫﺎﻱ ﺁﻥ ﺗﺮﺍﻛﻨﺶ ﻫﺎ ﺑﺎﺷﺪ .ﻫﻤﭽﻨﻴﻦ ﻳﻚ ﺯﻣﺎﻧﺒﻨﺪ ﺑﺎﻳﺪ ﺗﺮﺗﻴﺐ
ﺯﻣﺎﻧﻲ ﺩﺳﺘﻮﺍﻟﻌﻤﻞ ﻫﺎﻳﻲ ﺭﺍ ﻛﻪ ﺩﺭ ﻫﺮ ﺗﺮﺍﻛﻨﺶ ﻇﺎﻫﺮ ﺷﺪﻩ ﺭﺍ ﺣﻔﻆ ﻭ ﻧﮕﻬﺪﺍﺭﻱ ﻛﻨﺪ .
ﺍﺟﺮﺍﻱ ﻫﻤﺮﻭﻧﺪ ﺗﺮﺍﻛﻨﺶ ﻫﺎ ﺭﺍ ﺩﺭ ﻗﺎﻟﺐ ﺳﺎﺧﺘﺎﺭﻱ ﺑﻪ ﻧﺎﻡ ﺯﻣﺎﻧﺒﻨﺪ ) (Scheduleﺑﺮﺭﺳﻲ ﻣﻲ ﻛﻨﻴﻢ.
ﺩﺭ ﻳﻚ ﺯﻣﺎﻧﺒﻨﺪ ﻣﻲ ﺗﻮﺍﻥ ﺗﺮﺍﻛﻨﺸﻲ ﺭﺍ ﻣﻨﺘﻈﺮ ﺗﺮﺍﻛﻨﺶ ﺩﻳﮕﺮﻱ ﮔﺬﺍﺷﺖ ﻳﺎ ﻣﻲ ﺗﻮﺍﻥ ﺍﺟﺮﺍﻱ ﻳﻚ
ﺗﺮﺍﻛﻨﺶ ﺭﺍ ﺑﻪ ﺗﻌﻮﻳﻖ ﺍﻧﺪﺍﺧﺖ .ﺍﻣﺎ ﺩﺭﻭﻥ ﻳﻚ ﺗﺮﺍﻛﻨﺶ ﻧﻤﻲ ﺗﻮﺍﻥ ﺩﺳﺘﻮﺭﻫﺎ ﺭﺍ ﺟﺎﺑﻪ ﺟﺎ ﻛﺮﺩ ﺑﻪ ﺩﻟﻴﻞ
ﺍﻳﻨﻜﻪ ﻣﻨﻄﻖ ﺁﻥ ﺗﺮﺍﻛﻨﺶ ﺑﻪ ﻫﻢ ﻣﻲ ﺭﻳﺰﺩ.
ﻣﻲ ﺩﺍﻧﻴﻢ ﻳﻚ ﺗﺮﺍﻛﻨﺶ ﺍﮔﺮ ﺧﺎﺻﻴﺖ ACIDﺩﺍﺷﺘﻪ ﺑﺎﺷﺪ ﻧﺘﻴﺠﻪ ﺍﺵ ﺩﺭﺳﺖ ﺍﺳﺖ ﻭ ﻧﻴﺰ ﺍﮔﺮ ﭼﻨﺪ
ﺗﺮﺍﻛﻨﺶ ﺩﺍﺷﺘﻪ ﺑﺎﺷﻴﻢ ﻛﻪ ﺳﺮﻳﺎﻟﻲ ﺑﺎﺷﻨﺪ ،ﺍﻳﻦ ﺯﻣﺎﻧﺒﻨﺪ ﻛﻪ ﺑﻪ ﺁﻥ ﺯﻣﺎﻧﺒﻨﺪ ﺳﺮﻳﺎﻟﻲ ﻣﻲ ﮔﻮﻳﻴﻢ ﻧﻴﺰ
ﻧﺘﻴﺠﻪ ﺍﺵ ﺩﺭﺳﺖ ﺍﺳﺖ.
ﺳﺮﻳﺎﻟﻲ ﭘﺬﻳﺮ ﻳﻌﻨﻲ ﻣﻌﺎﺩﻝ ﺳﺮﻳﺎﻟﻲ ،ﻳﻌﻨﻲ ﺍﮔﺮ ﺯﻣﺎﻧﺒﻨﺪﻱ ﻫﺎﻱ ﻫﻤﺮﻭﻧﺪﻱ ﺩﺍﺷﺘﻪ ﺑﺎﺷﻴﻢ ﻛﻪ ﺳﺮﻳﺎﻝ
ﻧﻴﺴﺘﻨﺪ ﺍﻣﺎ ﻣﻌﺎﺩﻝ ﺳﺮﻳﺎﻟﻲ ﻩ ﺳﺘﻨﺪ ،ﺩﺭ ﺍﻳﻦ ﺻﻮﺭﺕ ﻧﺘﻴﺠﻪ ﻛﺎﺭ ﺩﺭﺳﺖ ﺧﻮﺍﻫﺪ ﺑﻮﺩ .
:Schedule 1
ﻓﺮﺽ ﻣﻲ ﻛﻨﻴﻢ ﻛﻪ ﻭﻇﻴﻔﻪ ﻱ ﺗﺮﺍﻛﻨﺶ T1ﺍﻳﻦ ﺍﺳﺖ ﻛﻪ 50ﺩﻻﺭ ﺍﺯ ﺣﺴﺎﺏ Aﺑﻪ ﺣﺴﺎﺏ Bﺍﻧﺘﻘﺎﻝ
ﺩﻫﺪ ،ﻭ ﻭﻇﻴﻔﻪ ﻱ ﺗﺮﺍﻛﻨﺶ T2ﺍﻳﻦ ﺍﺳﺖ ﻛﻪ ﺍﺯ 10ﺩﺭﺻﺪ ﺍﺯ ﺣﺴﺎﺏ Aﺭﺍ ﺑﻪ ﺣﺴﺎﺏ Bﺍﻧﺘﻘﺎﻝ ﺩﻫﺪ .
ﺍﻳﻦ ﺯﻣﺎﻧﺒﻨﺪ ﺳﺮﻳﺎﻝ ﺍﺳﺖ ﺯﻳﺮﺍ T2ﺑﻌﺪ ﺍﺯ ﺍﺗﻤﺎﻡ ﻛﺎﻣﻞ T1ﺍﺟﺮﺍ ﻣﻲ ﺷﻮﺩ.
26
:Schedule 2
ﺍﻳﻦ ﺯﻣﺎﻧﺒﻨﺪ ﻧﻴﺰ ﺳﺮﻳﺎﻝ ﺍﺳﺖ ﻭ ﺗﻔﺎﻭﺗﺶ ﺑﺎ schedule1ﺩﺭ ﺗﻮﺍﻟﻲ ﺍﺟﺮﺍ ﺍﺳﺖ .ﻳﻌﻨﻲ ﺍﺑﺘﺪﺍ T2ﻛﺎﻣﻼ
ﺍﺟﺮﺍ ﻭ ﺑﺎ ﻣﻮﻓﻘﻴﺖ ﻳﻪ ﺍﺗﻤﺎﻡ ﺭﺳﻴﺪﻩ ﺳﭙﺲ T1ﺍﺟﺮﺍ ﻣﻲ ﺷﻮﺩ.
:Schedule 3
ﺍﻳﻦ ﺯﻣﺎﻧﺒﻨﺪ ﺳﺮﻳﺎﻝ ﻧﻴﺴﺖ ﻭﻟﻲ ﻧﺘﻴﺠﻪ ﺁﻥ ﻫﻴﭻ ﺗﻔﺎﻭﺗﻲ ﺑﺎ ﻧﺘﻴﺠﻪ Schedule1ﻧﺪﺍﺭﺩ .ﺍﮔﺮ A+Bﺩﺭ
ﺍﺑﺘﺪﺍ ﻭ ﺍﻧﺘﻬﺎ ﺗﻔﺎﻭﺕ ﻛﻨﺪ ﺳﺎﺯﮔﺎﺭﻱ ﺍﺯ ﺑﻴﻦ ﻣﻲ ﺭﻭﺩ )ﺩﺭ ﻭﺍﻗﻊ ﺑﺎ ﺍﻳﻨﻜﻪ ﺯﻣﺎﻧﺒﻨﺪ ﺳﺮﻳﺎﻝ ﻧﻴﺴﺖ ﺍﻣﺎ ﻣﻌﺎﺩﻝ
ﻳﻚ ﺯﻣﺎﻧﺒﻨﺪ ﺳﺮﻳﺎﻝ ﻋﻤﻞ ﻣﻲ ﻛﻨﺪ(.
27
:Schedule 4
ﺩﺭ ﺍﻳﻦ ﺯﻣﺎﻧﺒﻨﺪ ﻣﻘﺪﺍﺭ A+Bﺭﺍ ﺣﻔﻆ ﻧﻤﻲ ﺷﻮﺩ ﻳﻌﻨﻲ ﺍﺑﺘﺪﺍ ﻭ ﺍﻧﺘﻬﺎﻱ ﺯﻣﺎﻧﺒﻨﺪﻫﺎﻱ T1ﻭ ،T2ﻣﻘﺪﺍﺭ
Aﺩﺭ A+Bﻳﻜﺴﺎﻥ ﻧﻴﺴﺖ .ﭼﻮﻥ ﺩﺳﺘﻮﺭ ) write(Aﺩﺭ ﺑﺎﻻ ﺯﻣﺎﻧﺒﻨﺪ T1ﻧﻴﺎﻣﺪﻩ ﻭ ﻣﻘﺪﺍﺭ
Shadowﺛﺒﺖ ﻧﻤﻲ ﺷﻮﺩ ﻳﻌﻨﻲ ﻣﻘﺪﺍﺭ Aﻫﻤﺎﻥ ﻣﻘﺪﺍﺭ ﺍﻭﻟﻴﻪ ﺩﺭ ﻧﻈﺮ ﮔﺮﻓﺘﻪ ﻣﻲ ﺷﻮﺩ .
ﻧﻜﺘﻪ:
28
ﺩﻭ ﺭﻭﺵ ﺍﺻﻠﻲ ﺳﺮﻳﺎﻟﻲ ﭘﺬﻳﺮﻱ ﻋﺒﺎﺭﺗﻨﺪ ﺍﺯ:
- 1ﺳﺮﻳﺎﻟﻲ ﭘﺬﻳﺮ ﺩﺭ ﺑﺮﺧﻮﺭﺩ ﻳﺎ (Conflict Serializability) CSR
- 2ﺳﺮﻳﺎﻟﻲ ﭘﺬﻳﺮ ﺩﺭ ﺩﻳﺪ ﻳﺎ (View Serializability) VSR
ﺑﺮﺧﻮﺭﺩ )(Conflict
ﭼﻨﺎﻧﭽﻪ qj ,piﺑﻪ ﺗﺮﺗﻴﺐ ﺩﺳﺘﻮﺭﺍﺕ ﺗﺮﺍﻛﻨﺸﻬﺎﻱ tj ,tiﺑﺎﺷﻨﺪ ،ﮔﻮﻳﻴﻢ qj ,piﺑﺎ ﻫﻢ ﺑﺮﺧﻮﺭﺩ ﺩﺍﺭﻧﺪ
ﺍﮔﺮ ﻭ ﺗﻨﻬﺎ ﺍﮔﺮ:
.1ﺍﻳﻦ ﺩﻭ ﻋﻤﻠﮕﺮ ﻣﺮﺑﻮﻁ ﺑﻪ ﺗﺮﺍﻛﻨﺶ ﻫﺎﻱ ﻣﺘﻤﺎﻳﺰ ﺑﺎﺷﻨﺪ ) tiﻧﺎﻣﺴﺎﻭﻱ ( tj
.2ﻫﺮ ﺩﻭ ﻋﻤﻠﮕﺮ ﺑﻪ ﻳﻚ ﺩﺍﺩﻩ ﺩﺳﺘﺮﺳﻲ ﺩﺍﺷﺘﻪ ﺑﺎﺷﻨﺪ.
.3ﺣﺪﺍﻗﻞ ﻳﻜﻲ ﺍﺯ ﺍﻳﻦ ﺩﻭ ﻋﻤﻠﮕﺮ ،ﻋﻤﻠﮕﺮ ﻧﻮﺷﺘﻦ ))((writeﺑﺎﺷﺪ.
29
ﺯﻣﺎﻧﺒﻨﺪﻫﺎﻱ ' sﻭ sﻣﻌﺎﺩﻝ ﺩﺭ ﺑﺮﺧﻮﺭﺩ ﻫﺴﺘﻨﺪ ،ﺍﮔﺮ ﻫﺮ ﺩﻭ ﺭﻭﻱ ﻳﻚ ﻣﺠﻤﻮﻋﻪ ﺍﺯ ﺩﺳﺘﻮﺭﺍﺕ ﻭ ﺗﺮﺍﻛﻨﺶ
ﻫﺎ ﻛﺎﺭ ﻛﻨﻨﺪ ﻭ ﺑﺎ ﺟﺎﺑﺠﺎ ﻛﺮﺩﻥ ﺩﺳﺘﻮﺭﺍﺕ ﺑﺪﻭﻥ ﺑﺮﺧﻮﺭﺩ ﺩﺭ ﺯﻣﺎﻧﺒﻨﺪ ،sﺑﺘﻮﺍﻧﻴﻢ ﺯﻣﺎﻧﺒﻨﺪ' sﺭﺍ ﺗﻮﻟﻴﺪ ﻛﻨﻴﻢ
.
ﻧﻜﺘﻪ ﻣﻬﻢ :ﺑﻪ ﻫﻴﭻ ﻋﻨﻮﺍﻥ ﻧﻤﻲ ﺗﻮﺍﻧﻴﻢ ﺗﺮﺗﻴﺐ ﺩﺳﺘﻮﺭﺍﺕ ﻳﻚ ﺗﺮﺍﻛﻨﺶ ﺭﺍ ﻋﻮﺽ ﻛﻨﻴﻢ ﭼﻮﻥ ﻣﻨﻄﻖ ﺁﻥ
ﺗﺮﺍﻛﻨﺶ ﻋﻮﺽ ﻣﻲ ﺷﻮﺩ.
ﺩﺭ ﻣﻔﻬﻮﻡ ﺳﺮﻳﺎﻟﻲ ﭘﺬﻳﺮﻱ ﺩﺭ ﺑﺮﺧﻮﺭﺩ ﺍﮔﺮ ﺯﻣﺎﻧﺒﻨﺪﻱ ﺑﺎ nﺗﺮﺍﻛﻨﺶ ﺩﺍﺷﺘﻪ ﺑﺎﺷﻴﻢ ،ﺩﺳﺘﻮﺭﻫﺎﻱ ﺑﺪﻭﻥ
ﺑﺮﺧﻮﺭﺩ ﺭﺍ ﺁﻥ ﻗﺪﺭ ﺟﺎﺑﺠﺎ ﻣﻴﻜﻨﻴﻢ ﺗﺎ ﺑﺒﻴﻨﻴﻢ ﺑﻪ ﻳﻚ ﺗﺮﻛﻴﺐ ﺳﺮﻳﺎﻟﻲ ﻣﻲ ﺭﺳﻴﻢ ﻳﺎ ﻧﻪ .ﺍﻳﻦ ﻛﺎﺭ ﺑﺴﻴﺎﺭ
ﺯﻣﺎﻧﺒﺮ ﺍﺳﺖ ﺯﻳﺮﺍ ﺯﻣﺎﻧﺒﻨﺪﻫﺎ ﻧﻮﻋﺎ ﺍﺯ ﺗﻌﺪﺍﺩ ﺯﻳﺎﺩﻱ ﺗﺮﺍﻛﻨﺶ ﺗﺸﻜﻴﻞ ﺷﺪﻩ ﺍﻧﺪ ﻛﻪ ﺩﺳﺘﻮﺭﺍﺕ ﮔﻮﻧﺎﮔﻮﻥ
ﺧﻮﺩ ﺭﺍ ﻓﺮﺍﺧﻮﺍﻧﻲ ﻣﻲ ﻛﻨﻨﺪ .ﺧﻮﺷﺒﺨﺘﺎﻧﻪ ﺭﺍﻩ ﺣﻞ ﺑﺴﻴﺎﺭ ﺳﺎﺩﻩ ﺍﻱ ﺑﺮﺍﻱ ﺍﻳﻦ ﻣﺴﺌﻠﻪ ﭘﻴﺪﺍ ﺷﺪﻩ ﻛﻪ ﺁﻥ ﺭﺍ
ﺑﺮﺭﺳﻲ ﻣﻲ ﻛﻨﻴﻢ.
ﺭﺍﺱ ﻫﺎﻱ ﺍﻳﻦ ﮔﺮﺍﻑ ﻫﻤﺎﻥ ﺗﺮﺍﻛﻨﺶ ﻫﺎﻱ ﻓﻌﺎﻝ ﺩﺭ ﺳﻴﺴﺘﻢ ﻫﺴﺘﻨﺪ ﻭ ﻳﺎﻟﻬﺎﻱ ﺁﻥ ﺟﻬﺖ ﺩﺍﺭ ﻣﻲ ﺑﺎﺷﻨﺪ .
ﭘﺲ ﺍﻳﻦ ﮔﺮﺍﻑ ،ﻳﻚ ﮔﺮﺍﻑ ﺟﻬﺖ ﺩﺍﺭ ﺍﺳﺖ ﻛﻪ ﺭﺍﺱ ﻫﺎﻱ ﺁﻥ ﻣﺠﻤﻮﻋﻪ ﺍﻱ ﺍﺯ ﺗﺮﺍﻛﻨﺶ ﻫﺎﺳﺖ ﻭ ﻛﻤﺎﻥ
ﻫﺎﻱ ﺁﻥ ﺑﺮﺧﻮﺭﺩﻫﺎﻱ ﺑﻴﻦ ﺗﺮﺍﻛﻨﺸﻬﺎﺳﺖ ﻭ ﻟﻴﺒﻞ ) (Labelﻛﻤﺎﻥ ﻫﺎﻱ ﺟﻬﺖ ﺩﺍﺭ ،ﺩﻳﺘﺎﺁﻳﺘﻢ ﺍﻱ ﺍﺳﺖ
ﻛﻪ ﺭﻭﻱ ﺁﻥ ﺑﺮﺧﻮﺭﺩ ﺍﻳﺠﺎﺩ ﺷﺪﻩ ﺍﺳﺖ.
30
ﮔﺮﺍﻑ ﻫﺎ ﺑﻪ ﻃﻮﺭ ﻣﺮﺗﺐ ﺗﻐﻴﻴﺮ ﻣﻲ ﻛﻨﻨﺪ؛ ﻳﻌﻨﻲ ﺑﻪ ﻣﺤﺾ ﺍﻳﻨﻜﻪ ﻳﻚ ﺩﺳﺘﻮﺭ ﺧﻮﺍﻧﺪﻥ ﻭ ﻳﺎ ﻧﻮﺷﺘﻦ
ﻭﺍﺭﺩﺳﻴﺴﺘﻢ ﻣﻲ ﺷﻮﺩ ،ﻣﻤﻜﻦ ﺍﺳﺖ ﻳﻚ ﻳﺎﻝ ﺭﺍ ﺑﻪ ﮔﺮﺍﻑ ﺍﺿﺎﻓﻪ ﻛﻨﺪ ﻭ ﺯﻣﺎﻧﻲ ﻛﻪ ﺗﺮﺍﻛﻨﺸﻲ ﺳﺎﻗﻂ ﻭ ﻳﺎ
ﺗﺜﺒﻴﺖ ﺷﺪﻩ ﻭ ﺍﺯ ﺳﻴﺴﺘﻢ ﺧﺎﺭﺝ ﻣﻲ ﺷﻮﺩ ،ﻳﺎﻝ ﻫﺎﻳﻲ ﻭ ﻧﻴﺰ ﮔﺮﻩ ﺍﻱ ﺍﺯ ﮔﺮﺍﻑ ﺣﺬﻑ ﺧﻮﺍﻫﺪ ﺷﺪ.
x
y
ﻫﺮﮔﺎﻩ ﺩﺭ ﮔﺮﺍﻑ ﺳﺮﻳﺎﻟﻲ ﭘﺬﻳﺮ ،ﺣﻠﻘﻪ ) (Cycleﻭﺟﻮﺩ ﺩﺍﺷﺘﻪ ﺑﺎﺷﺪ ،ﺁﻧﮕﺎﻩ ﺯﻣﺎﻧﺒﻨﺪﻱ ﺁﻥ ﺳﺮﻳﺎﻟﻲ ﭘﺬﻳﺮ
ﻧﻴﺴﺖ ﻭ ﺑﺎﻟﻌﻜﺲ.
ﻣﺜﺎﻝ :ﻛﻤﺎﻧﻲ ﺍﺯ T1ﺑﻪ T2ﺭﺳﻢ ﺷﺪﻩ ﺍﺳﺖ ﻳﻌﻨﻲ ﺍﻳﻦ ﺩﻭ ﺗﺮﺍﻛﻨﺶ ﺑﺎ ﻫﻢ ﺑﺮﺧﻮﺭﺩ ﺩﺍﺭﻧﺪ ﻣﺜﻼً T1ﻃﺒﻖ
ﺍﻳﻦ ﺷﻜﻞ ﺭﻭﻱ ﺩﻳﺘﺎﺁﻳﺘﻢ Yﺑﺎ ، T2ﺑﺮﺧﻮﺭﺩ ﺩﺍﺭﻧﺪ.
31
ﺑﺮﺍﺳﺎﺱ ﮔﺮﺍﻑ ﻓﻮﻕ ،ﺑﻪ ﺩﻭ ﺷﻜﻞ ﻣﻲ ﺗﻮﺍﻥ ﺗﺮﺗﻴﺐ ﺍﺟﺮﺍﻱ ﺗﺮﺍﻛﻨﺶ ﻫﺎ ﺭﺍ ﺑﻪ ﺻﻮﺭﺕ ﺳﺮﻳﺎﻝ )ﻣﺘﻮﺍﻟﻲ(
ﻧﻮﺷﺖ:
)1 T1 , T 2 , T 3 , T 4
)2 T1 , T3 , T2 , T4
ﺯﻣﺎﻧﺒﻨﺪﻫﺎﻱ sﻭ` sﻣﻌﺎﺩﻝ ﺩﺭ ﺩﻳﺪ ﻫﺴﺘﻨﺪ ﺍﮔﺮ ﺗﺮﺍﻛﻨﺶ ﻫﺎ ﻭ ﻣﺠﻤﻮﻋﻪ ﻋﻤﻠﮕﺮﻫﺎﻱ sﻭ ` sﻳﻜﺴﺎﻥ ﺑﺎﺷﺪ
ﻭ ﺳﻪ ﺷﺮﻁ ﺯﻳﺮ ﺑﺮﻗﺮﺍﺭ ﺑﺎﺷﺪ:
(1ﺑﺮﺍﻱ ﻫﺮ ﺩﺍﺩﻩ ،Qﺍﮔﺮ ﺗﺮﺍﻛﻨﺶ Tiﻣﻘﺪﺍﺭ ﺍﻭﻟﻴﻪ Qﺭﺍ ﺩﺭ sﻣﻲ ﺧﻮﺍﻧﺪ ،ﺁﻧﮕﺎﻩ Tjﻣﻘﺪﺍﺭ ﺍﻭﻟﻴﻪ Q
ﺭﺍ ﺩﺭ ` sﻧﻴﺰ ﺑﺨﻮﺍﻧﺪ.
(2ﺑﺮﺍﻱ ﻫﺮ ﺩﺍﺩﻩ Qﺍﮔﺮ Tiﺩﺭ sﺩﺍﺩﻩ Qﺭﺍ ﺍﺯ Tjﻣﻲ ﺧﻮﺍﻧﺪ ،ﺩﺭ` sﻧﻴﺰ ﺩﺍﺩﻩ Qﺭﺍ ﺍﺯ Tjﺑﺨﻮﺍﻧﺪ.
(3ﺑﺮﺍﻱ ﻫﺮ ﺩﺍﺩﻩ ،Qﺁﺧﺮﻳﻦ ﺗﺮ ﺍﻛﻨﺸﻲ ﺍﺯ ﺯﻣﺎﻧﺒﻨﺪ sﻛﻪ ﺭﻭﻱ Qﻣﻲ ﻧﻮﻳﺴﺪ ،ﻫﻤﺎﻥ ﺗﺮﺍﻛﻨﺸﻲ
ﺑﺎﺷﺪ ﻛﻪ ﺩﺭ ﺯﻣﺎﻧﺒﻨﺪ ` sﺁﺧﺮﻳﻦ ﺑﺎﺭ ﺭﻭﻱ Qﻣﻲ ﻧﻮﻳﺴﺪ.
ﻭﻗﺘﻲ ﺍﺯ ﺩﻳﺪﮔﺎﻩ ﻳﻜﺴﺎﻧﻲ ﺑﻪ ﺍﻳﻦ ﺩﻭ ﺯﻣﺎﻧﺒﻨﺪ ﻧﮕﺎﻩ ﻛﻨﻴﻢ ﻭ ﺍﮔﺮ ﻳﻜﺴﺎﻥ ﺑﻮﺩﻧﺪ ﻣﻲ ﮔﻮﻳﻴﻢ ﻣﻌﺎﺩﻝ ﺩﺭ ﺩﻳﺪ
ﻫﺴﺘﻨﺪ.
ﺣﻞ :ﺳﺮﻳﺎﻟﻲ ﭘﺬﻳﺮ ﺩﺭ ﺑﺮﺧﻮﺭﺩ ﻧﻴﺴﺖ ﻭﻟﻲ ﺳﺮﻳﺎﻟﻲ ﭘﺬﻳﺮ ﺩﺭ ﺩﻳﺪ ﻣﻲ ﺑﺎﺷﺪ .ﺑﺮﺍﻱ ﺗﺸﺨﻴﺺ ﺳﺮﻳﺎﻟﻲ
ﭘﺬﻳﺮ ﺑﻮﺩﻥ ﺩﺭ ﺩﻳﺪ ،ﻓﻘﻂ ﻳﻚ ﺩﺍﺩﻩ ﺑﻪ ﻧﺎﻡ Qﺩﺍﺭﻳﻢ ﻛﻪ:
32
.1ﺩﺭ ﻫﺮ ﺩﻭ ﺯﻣﺎﻧﺒﻨﺪ T3 ،ﻣﻘﺪﺍﺭ ﺍﻭﻟﻴﻪ Qﺭﺍ ﻣﻲ ﺧﻮﺍﻧﺪ.
.2ﻫﻴﭻ ﺗﺮﺍﻛﻨﺸﻲ ﻣﻘﺪﺍﺭﻱ ﺑﺮﺍﻱ Qﺍﺯ ﺗﺮﺍﻛﻨﺸﻲ ﺩﻳﮕﺮ ﻧﻤﻲ ﺧﻮﺍﻧﺪ.
.3ﺩﺭ ﻫﺮ ﺩﻭ ﺯﻣﺎﻧﺒﻨﺪ ،ﺗﺮﺍﻛﻨﺶ T5ﺁﺧﺮﻳﻦ ﻋﻤﻞ ﻧﻮﺷﺘﻦ ﺭﻭﻱ Qﺭﺍ ﺍﻧﺠﺎﻡ ﻣﻲ ﺩﻫﺪ.
** ﭘﺲ ﺍﻳﻦ ﺯﻣﺎﻧﺒﻨﺪ CSRﻧﻴﺴﺖ ﺍﻣﺎ VSRﻫﺴﺖ **
.ﺳﻄﻮﺡ ﺿﻌﻴﻒ ﺑﻌﻀﻲ ﻛﺎﺭﺑﺮﺩﻫﺎ ﺗﻤﺎﻳﻞ ﺑﺮ ﺍﻳﻦ ﺩﺍﺭﻧﺪ ﻛﻪ ﺩﺭ ﺳﻄﺢ ﺳﺎﺯﮔﺎﺭﻱ ﺿﻌﻴﻔﻲ ﻗﺮﺍﺭ ﺑﮕﻴﺮﻧﺪ
ﻧﺎﺳﺎﺯﮔﺎﺭﻱ ﺍﺯ ﺯﻣﺎﻥ ﺑﻨﺪ ﻫﺎﻳﻲ ﻛﻪ ﺳﺮﻳﺎﻝ ﻧﻴﺴﺘﻨﺪ ﺑﻪ ﻭﺟﻮﺩ ﻣﻲ ﺁﻳﺪ.
ﻣﺎﻧﻨﺪ ﺗﺮﺍﻛﻨﺸﻲ ﻛﻪ ﻓﻘﻂ ﺩﺳﺘﻮﺭﺍﺕ ﺧﻮﺍﻧﺪﻥ ﺩﺍﺭﺩ ،ﻣﺎﻧﻨﺪ ﺗﺮﺍﻛﻨﺸﻲ ﻛﻪ ﺩﺭ ﺁﻥ ﻣﻲ ﺧﻮﺍﻩ ﻳﻢ ﺑﺎﻻﻧﺲ ﻛﻠﻲ
ﻱ.
ﺍﺯ ﻫﻤﻪ ﻱ ﺣﺴﺎﺏ ﻫﺎﻳﻲ ﻛﻪ ﺩﺭ ﺑﺎﻧﻚ ﻭﺟﻮﺩ ﺩﺍﺭﺩ ﺭﺍ ﺑﺪﺳﺖ ﺁ ﺩ
" ﺍﻳﻦ ﺗﺮﺍﻛﻨﺶ ﻫﺎ ﺍﺣﺘﻴﺎﺝ ﻧﺪﺍﺭﻧﺪ ﻛﻪ ﺩﺭ ﻣﻘﺎﺑﻞ ﺗﺮﺍﻛﻨﺶ ﻫﺎﻱ ﺩﻳﮕﺮ ﺳﺮﻳﺎﻝ ﺑﺎﺷﻨﺪ .ﺍﮔﺮ ﺳﺮﻳﺎﻝﻱ ﻧﺒﺎﺷﺪ
ﺳﺎﺯﮔﺎﺭﻱ ﺿﻌﻴﻒ ﻣﻲﺷﻮﺩ" .
34
ﻧﻜﺘﻪ :ﭘﻴﺎﺩﻩ ﺳﺎﺯﻱ ﺧﺎﺻﻴﺖ ﻫﺎﻱ ﺍﺗﻮﻣﻴﻚ ﺑﻮﺩﻥ ﻭ ﭘﺎﻳﺪﺍﺭﻱ ﺗﻮﺳﻂ ﻣﻮﻟﻔﻪ ﺍﻱ ﺩﺭ ﻳﻚ ﺳﻴﺴﺘﻢ ﺑﺎﻧﻚ
ﺍﻃﻼﻋﺎﺗﻲ ﺻﻮﺭﺕ ﻣﻲ ﮔﻴﺮﺩ ﻛﻪ ﻣﺪﻳﺮﻳﺖ ﺗﺮﻣﻴﻢ ) (Recovery managementﻧﺎﻡ ﺩﺍﺭﺩ.
ﺗﺮﻣﻴﻢ ﭘﺬﻳﺮﻱ:
ﺯﻣﺎﻧﺒﻨﺪﻱ ﺭﺍ ﺗﺮﻣﻴﻢ ﭘﺬﻳﺮ ﮔﻮﻳﻨﺪ ﻛﻪ ﺑﺮﺍﻱ ﺗﻤﺎﻡ Tjﻫﺎ ﻛﻪ ﺍﺯ Tiﻣﻲ ﺧﻮﺍﻧﻨﺪ ،ﺗﺜﺒﻴﺖ ﺗﺮﺍﻛﻨﺶ Tiﻗﺒﻞ ﺍﺯ
ﺗﺜﺒﻴﺖ ﺗﺮﺍﻛﻨﺶ Tjﺻﻮﺭﺕ ﮔﻴﺮﺩ.
Ti Tj
)Read (Q
)Write (Q
commit
Commit
ﺍﻳﻦ ﺗﺮﺍﻛﻨﺶ ﻗﺎﺑﻞ ﺗﺮﻣﻴﻢ ﺍﺳﺖ ﭼﻮﻥ ﻋﻤﻞ ﺧﻮﺍﻧﺪﻥ ﺩﻳﺘﺎﺁﻳﺘﻢ Qﺩﺭ ﺗﺮﺍﻛﻨﺶ Tjﻗﺒﻞ ﺍﺯ ﻧﻮﺷﺘﻪ ﺷﺪﻥ
Qﺗﻮﺳﻂ Tjﺍﻧﺠﺎﻡ ﻣﻲ ﺷﻮﺩ ﻭ ﺍﺗﻤﺎﻡ ﻣﻮﻓﻘﻴﺖ ﺁﻣﻴﺰ ﺗﺮﺍﻛﻨﺶ Tiﻗﺒﻞ ﺍﺯ ﺍﺗﻤﺎﻡ ﻣﻮﻓﻘﻴﺖ ﺁﻣﻴﺰ ﺗﺮﺍﻛﻨﺶ
Tjﺍﻧﺠﺎﻡ ﻣﻲﺷﻮﺩ.
ﺧﻄﺎﻱ ﻳﻚ ﺗﺮﺍﻛﻨﺶ ﻣﻨﻔﺮﺩ ﺑﺎﻋﺚ ﺑﺮﮔﺸﺖ) (Rollbackﻳﻚ ﻣﺠﻤﻮﻋﻪ ﺍﻱ ﺍﺯ ﺗﺮﺍﻛﻨﺶ ﻫﺎ ﻣﻲ ﺷﻮﺩ .
ﺯﻣﺎﻧﺒﻨﺪ ﺯﻳﺮ ﻳﻚ ﺗﺮﺍﻛﻨﺶ ﻛﻪ ﻫﻨﻮﺯ ﺑﺎ ﻣﻮﻓﻘﻴﺖ ﺑﻪ ﺍﺗﻤﺎﻡ ﻧﺮﺳﻴﺪﻩ ﺍﺳﺖ ﺭﺍ ﺑﺮﺭﺳﻲ ﻣﻲ ﻛﻨﺪ ﺑﻨﺎﺑﺮﺍﻳﻦ
ﺯﻣﺎﻧﺒﻨﺪ ﻗﺎﺑﻞ ﺗﺮﻣﻴﻢ ﺍﺳﺖ.
35
ﺍﻳﻦ ﺯﻣﺎﻧﺒﻨﺪ ﻛﺎﻣﻼً ﺳﺮﻳﺎﻝ ﺍﻧﺠﺎﻡ ﻣﻲ ﺷﻮﺩ .ﭼﻮﻥ T12, T11ﺩﻳﺘﺎﺁﻳﺘﻢ Aﺭﺍ ﺍﺯ ﺭﻭﻱ ﺩﻳﺴﻚ ﻣﻲﺧﻮﺍﻧﺪ ﻭ
ﭼﻮﻥ Aﺭﺍ ﺗﻐﻴﻴﺮ ﺩﺍﺩﻩ ﻭ ﻫﻨﻮﺯ ﺭﻭﻱ ﺩﻳﺴﻚ ﻧﻮﺷﺘﻪ ﻧﺸﺪﻩ ﺑﺎﻳﺪ ﺑﺮﮔﺸﺖ ﻛﻨﺪ ﻭ ﻛﻪ ﺑﺎﻋﺚ ﺍﻳﺠﺎﺩ ﺑﺮﺧﻮﺭﺩ
ﺧﻮﺍﻫﺪ ﺷﺪ.
ﺯﻣﺎﻥﺑﻨﺪﻱ ﻛﻪ ﻏﻴﺮﺁﺑﺸﺎﺭﻱ ﺍﺳﺖ ﻗﺎﺑﻞ ﺗﺮﻣﻴﻢ ﻣﻲ ﺑﺎﺷﺪ .ﻫﺪﻑ ﻧﻴﺰ ﻫﻤﻴﻦ ﺍﺳﺖ ﻛﻪ ﺗﺮﺍﻛﻨﺶ ﺭﺍ ﺩﻭﺑﺎﺭﻩ
redoﻧﻜﻨﻴﻢ ﻭ undoﻭ redoﻫﺎ ﺭﺍ ﻛﻤﺘﺮ ﻛﻨﻴﻢ .ﺍﺯ ﺗﺮﺍﻛﻨﺶ ﻫﺎﻱ ﺁﺑﺸﺎﺭﻱ ﺟﻠﻮﮔﻴﺮﻱ ﻛﻨﻴﻢ
)ﻭﺍﺑﺴﺘﮕﻲ ﺑﻴﻦ ﺗﺮﺍﻛﻨﺶ ﻫﺎ ﺭﺍ ﻛﻢ ﻛﻨﻴﻢ ( .ﺗﻘﺮﻳﺒﺎً ﻏﻴﺮﺁﺑﺸﺎﺭﻱ ﺑﻮﺩﻥ ﻭ ﻗﺎﺑﻞ ﺗﺮﻣﻴﻢ ﺑﻮﺩﻥ ﺑﻪ ﻳﻚ ﻣﻌﻨﻲ
ﻣﻲﺑﺎﺵﻥﺩ .
ﻛﻨﺘﺮﻝ ﻫﻤﺮﻭﻧﺪﻱ:
ﺏ – ﻗﺎﺑﻞ ﺗﺮﻣﻴﻢ ﻭ ﻏﻴﺮﺁﺑﺸﺎﺭﻱ ﺑﺎﺷﺪ .ﺳﺮﻳﺎﻟﻲ ﭘﺬﻳﺮ ﺩﺭ ﺑﺮﺧﻮﺭﺩ ﻳﻌﻨﻲ ﺯﻣﺎﻧﺒﻨﺪﻱ ﻫﺎ ﺑﺎ ﻭﺟﻮﺩ ﺍﻳﻨﻜﻪ
ﻫﻤﺮﻭﻧﺪ ﺍﻧﺠﺎﻡ ﻣﻲ ﺷﻮﻧﺪ ﺳﺮﻳﺎﻟﻲ ﭘﺬﻳﺮ ﺩﺭ ﺩﻳﺪ ﺑﺎﺷﻨﺪ .ﺍﮔﺮ ﻣﻜﺎﻧﻴﺰﻡ ﻫﺎﻳﻲ ﺑﺎ ﺯﻣﺎﻧﺒﻨﺪﻱ ﺳﻴﺎﻝ ﻭﻗﺎﺑﻞ
36
ﺗﺮﻣﻴﻢ ﺩﺍﺷﺘﻪ ﺑﺎﺷﻴﻢ ﺩﺭ ﻭﺍﻗﻊ ﻣﻲ ﺗﻮﺍﻥ ﺑﺎ ﺍﻳﻦ ﻣﻜﺎﻧﻴﺰﻡ ﻫﺎ ﻛﻨﺘﺮﻝ ﻫﻤﺮﻭﻧﺪﻱ ﺍﻧﺠﺎﻡ ﺩﻫﻴﻢ ﻭ ﻫﻴﭻ
ﻧﺎﺳﺎﺯﮔﺎﺭﻱ ﺩﺭ ﭘﺎﻳﮕﺎﻩ ﺩﺍﺩﻩ ﺍﻳﺠﺎﺩ ﻧﺸﻮﺩ ،ﺍﻳﻦ ﺭﻭﺵ ﻳﻜﻲ ﺍﺯ ﺳﺎﺩﻩ ﺗﺮﻳﻦ ﺭﻭﺵﻫﺎﻱ ﺳﻴﺎﻟﻲ ﺍﺳﺖ ﻛﻪ
ﻣﻲﺗﻮﺍﻧﻴﻢ ﺍﻧﺠﺎﻡ ﺩﻫﻴﻢ ﻛﻪ ﻫﻢ ﺳﺮﻳﺎﻝ ﻭ ﻫﻢ ﻗﺎﺑﻞ ﺗﺮﻣﻴﻢ ﺑﺎﺷﺪ .
ﻳﻚ ﺳﻴﺎﺳﺖ ﺍﻳﻦ ﺍﺳﺖ ﻛﻪ ﻓﻘﻂ ﺩﺭ ﻫﺮ ﻟﺤﻈﻪ ﺑﺘﻮﺍﻥ ﻳﻚ ﺗﺮﺍﻛﻨﺶ ﺑﻪ ﺷﻜﻞ ﺱﺭﻳﺎﻝ ﺍﺟﺮﺍ ﺷﻮﺩ ﻛﻪ ﺍﻟﺒﺘﻪ
ﺩﺭ ﻭﺍﻗﻊ ﺩﺭ ﺍﻳﻦﺻﻮﺭﺕ ﻫﻤﺮﻭﻧﺪﻱ ﻧﺪﺍﺭﻳﻢ .
)ﻣﺎﻛﺰﻳﻤﻢ ﻛﺮﺩﻥ - 1ﺣﺪﺍﻛﺜﺮ ﻛﺮﺩﻥ ﺗﻌﺪﺍﺩ ﺗﺮﺍﻛﻨﺶ ﻫﺎﻳﻲ ﻛﻪ ﺑﻪ ﺻﻮﺭﺕ ﻫﻤﺰﻣﺎﻥ ﻓﻌﺎﻝ ﻫﺴﺘﻨﺪ
ﻫﻤﺮﻭﻧﺪ(
- 2ﺣﺪﺍﻗﻞ ﻛﺮﺩﻥ ﻧﻴﺎﺯ ﺑﻪ ﺗﺮﻣﻴﻢ
ﺍﻳﻦ ﺩﻭ ﻫﺪﻑ ﺑﺎ ﻫﻢ ﺩﺭ ﺗﻨﺎﻗﺾ ﻫﺴﺘﻨﺪ ،ﺑﻪ ﻃﻮﺭﻱ ﻛﻪ ﻫﺮ ﭼﻪ ﺗﻌﺪﺍﺩ ﺗﺮﺍﻛﻨﺶ ﻫﺎﻱ ﻏﻴﺮﻓﻌﺎﻝ ﺑﻴﺸﺘﺮ
ﺷﻮﺩ ،ﻣﻴﺰﺍﻥ ﻧﻴﺎﺯ ﺑﻪ ﺗﺮﻣﻴﻢ ﻧﻴﺰ ﺍﻓﺰﺍﻳﺶ ﻣﻲ ﻳﺎﺑﺪ ﻭ ﺑﺮﻋﻜﺲ .ﺑﻨﺎﺑﺮﺍﻳﻦ ﺑﺮﺍﻱ ﺑﺮﻃﺮﻑ ﻛﺮﺩﻥ ﺍﻳﻦ ﺗﻨﺎﻗﻀﺎﺕ
ﻧﻴﺎﺯ ﺑﻪ ﻧﻮﻋﻲ ﻣﺼﺎﻟﺤﻪ 1ﺑﻴﻦ ﺍﻳﻦ ﺩﻭ ﻫﺪﻑ ﻭﺟﻮﺩ ﺩﺍﺭﺩ ﻛﻪ ﺍﻳﻦ ﻛﺎﺭ ﻣﺴﺘﻠﺰﻡ ﻫﻮﺷﻤﻨﺪﻱ ﺍﺳﺖ .
F6
1
Tradeoff
37
ﻓﺼﻞ :3
ﻣﺪﻳﺮﻳﺖ ﺗﺮﻣﻴﻢ
38
ﻣﻘﺪﻣﻪ:
ﺩﺭ ﻣﺪﻳﺮﻳﺖ ﺗﺮﺍﻛﻨﺶ ﻫﺎ،ﺍﻳﻦ ﺍﻣﻜﺎﻥ ﻭﺟﻮﺩ ﺩﺍﺭﺩ ﻛﻪ ﺩﺭ ﻫﺮ ﻟﺤﻈﻪ ﺍﺯ ﺍﺟﺮﺍﻱ ﺗﺮﺍﻛﻨﺶ ،ﻳﻚ ﺧﺮﺍﺑﻲ ﻳﺎ
ﺑﻲﻓﺘﺪ ﻭ ﺗﺮﺍﻛﻨﺶ ﻧﺘﻮﺍﻧﺪ ﺍﺩﺍﻣﻪ ﻳﺎﺑﺪ .ﺑﻪ ﻋﺒﺎﺭﺗﻲ ﺑﺮﺧﻲ ﺍﺯ ﺩﺳﺘﻮﺭﺍﺕ ﺁﻥ ﺍﺟﺮﺍ ﺷﺪﻩﺧﻄﺎ) (failureﺍﺗﻔﺎﻕ ﺍ
ﻭ ﺑﻘﻴﻪ ﺑﻪ ﺩﻟﻴﻞ ﻭﻗﻮﻉ ﺧﺮﺍﺑﻲ ﻣﺘﻮﻗﻒ ﺷﻮﻧﺪ .ﻫﻤﭽﻨﻴﻦ ﺯﻣﺎﻧﻲ ﻛﻪ ﺗﺮﺍﻛﻨﺸﻲ ﺍﻧﺠﺎﻡ ) (commitﻣﻲ
ﺑﻲﻓﺘﺪ ﻛﻪ ﺗﺄﺛﻴﺮ ﺁﻥ ﺭﺍ ﺍﺯ ﺑﻴﻦ ﺑﺒﺮﺩ.
ﺷﻮﺩ ،ﺑﻌﺪﺍً ﺍﺗﻔﺎﻗﻲ ﺍ
ﻣﻤﻜﻦ ﺍﺳﺖ ﺟﺎﻳﻲ ﺩﺭ ﺍﺟﺮﺍﻱ ﺗﺮﺍﻛﻨﺶ ،ﻣﻨﻄﻖ ﺁﻥ ﺩﭼﺎﺭ ﺧﻄﺎ ﺷﻮﺩ .ﻟﺬﺍ ﺧﺮﺍﺑﻲ ﺗﺮﺍﻛﻨﺶ ﺷﺎﻣﻞ ﺩﻭ
ﻣﻮﺭﺩ ﺯﻳﺮ ﺍﺳﺖ:
ﺧﻄﺎﻱ ﻣﻨﻄﻘﻲ :ﺗﺮﺍﻛﻨﺶ ﺑﻪ ﺩﻟﻴﻞ ﺷﺮﺍﻳﻂ ﺩﺍﺧﻠﻲ ﺧﻮﺩ ﻧﺘﻮﺍﻧﺪ ﻛﺎﻣﻞ ﺍﺟﺮﺍ ﺷﻮﺩ.
ﺧﻄﺎﻱ ﺳﻴﺴﺘﻤﻲ :ﺗﺮﺍﻛﻨﺶ ﺑﻪ ﺧﻮﺩﻱ ﺧﻮﺩ ﺩﺭﺳﺖ ﻛﺎﺭ ﻣﻲ ﻛﻨﺪ ﺍﻣﺎ ﺩﺭ ﺳﻴﺴﺘﻢ ﺷﺮﺍﻳﻄﻲ ﭘﻴﺶ
ﻣﻲ ﺁﻳﺪ ﻛﻪ ﺍﻳﻦ ﺗﺮﺍﻛﻨﺶ ﺭﺍ ﺍﺯ ﻛﺎﺭ ﻣﻲ ﺍﻥﺩﺍﺯﺩ .ﻣﺎﻧﻨﺪ ﺑﻦ ﺑﺴﺖ
- 2ﺧﺮﺍﺑﻲ ﺳﻴﺴﺘﻢ )(system crash
ﺧﺮﺍﺑﻲ ﻫﺎﻱ ﺳﺨﺖ ﺍﻓﺰﺍﺭﻱ ﻳﺎ ﻧﺮﻡ ﺍﻓﺰﺍﺭﻱ ﻛﻪ ﺳﺒﺐ ﺍﺯ ﻛﺎﺭ ﺍﻓﺘﺎﺩﻥ ﺳﻴﺴﺘﻢ ﻣﻲ ﺷﻮﺩ ﻣﺎﻧﻨﺪ ﻗﻄﻊ
ﺑﺮﻕ ،ﺩﺭ ﺍﻳﻦ ﻧﻮﻉ ﺧﺮﺍﺑﻲ ﻫﺎ ﺍﻃﻼﻋﺎﺕ ﺣﺎﻓﻈﻪ ﺍﺻﻠﻲ ﺳﻴﺴﺘﻢ ﺍﺯ ﺑﻴﻦ ﻣﻲ ﺭﻭﺩ ﻭﻟﻲ ﺁﺳﻴﺒﻲ ﺑﻪ
ﺍﻃﻼﻋﺎﺕ ﺭﻭﻱ ﺩﻳﺴﻚ ﻭﺍﺭﺩ ﻧﻤﻲ ﺷﻮﺩ.
39
ﺧﺮﺍﺑﻲ ﻛﻪ ﺳﺒﺐ ﺷﻮﺩ ﺍﻃﻼﻋﺎﺕ ﺭﻭﻱ ﺭﺳﺎﻧﻪ ﺍﺯ ﺑﻴﻦ ﺑﺮﻭﺩ ﻳﺎ ﻗﺎﺑﻞ ﺑﺎﺯﻳﺎﺑﻲ ﻧﺒﺎﺷﺪ ،ﻣﺎﻧﻨﺪ ﺧﺮﺍﺑﻲ
ﺩﻳﺴﻚ ﻳﺎ ﺧﺮﺍﺑﻲ ﻫﺪ.
ﺳﺎﺩﻩﺗﺮﻳﻦ ﺭﺍﻩ ﺑﺮﺍﻱ ﺍﻳﻦ ﻣﻨﻈﻮﺭ ﺍﻳﻦ ﺍﺳﺖ ﻛﻪ ﺩﻭ ﺑﻼﻙ ﺑﺎ ﻫﻢ ﻣﻘﺎﻳﺴﻪ ﺷﻮﻧﺪ ﺗﺎ ﺑﺒﻴﻨﻴﻢ ﺩﻭ ﻧﺴﺨﻪ ﺑﺎ
ﻫﻢ ﻓﺮﻕ ﺩﺍﺭﻧﺪ ﻳﺎ ﻧﻪ .ﺍﻳﻦ ﺭﻭﺵ ﺯﻣﺎﻧﺒﺮ ﺍﺳﺖ ﭼﻮﻥ ﺍﺯ ﺣﺎﻓﻈﻪ ﺩﻳﺴﻚ ﻭﺍﻛﺸﻲ ﻣﻲ ﻛﻨﺪ.
ﺭﺍﻩ ﺣﻞ ﺑﻬﺘﺮ ﺍﻳﻦ ﺍﺳﺖ ﻛﻪ ﺯﻣﺎﻧﻲ ﻛﻪ ﺍﻧﺘﻘﺎﻝ ﺩﺍﺩﻩ ﺍﻧﺠﺎﻡ ﻣﻲ ﺷﻮﺩ ،ﺁﻥ ﺍﻧﺘﻘﺎﻝ ﺩﺍﺩﻩ ﺭﺍ ﺭﻭﻱ ﺩﻳﺴﻚ
ﺛﺒﺖ ﻛﻨﺪ .ﺭﻛﻮﺭﺩﻫﺎ ﺛﺒﺖ ﻣﻲ ﺷﻮﻧﺪ ﻭ ﻣﺠﻤﻮﻋﻪ ﺍﻱ ﺍﺯ ﺁﻧﻬﺎ ﻣﻘﺎﻳﺴﻪ ﻣﻲ ﮔﺮﺩﺩ .ﺩﺭ ﺍﻳﻦ ﺭﻭﺵ ﺍﺯ ﺍﺑﺘﺪﺍ
40
ﻓﻘﻂ ﺟﺎﻫﺎﻳﻲ ﻣﻘﺎﻳﺴﻪ ﻣﻲ ﺷﻮﺩ ﻛﻪ ﺑﺎ ﻫﻢ ﺍﺧﺘﻼﻑ ﺩﺍﺭﻧﺪ acknowledge .ﺩﺭﻳﺎﻓﺖ ﻧﺸﺪﻩ ﺍﺳﺖ
)ﺍﻃﻼﻋﺎﺕ ﻣﺘﻨﺎﻗﺾ(.
- 2ﺍﮔﺮ ﻫﺮ ﺩﻭ ﻛﭙﻲ ﺍﺯ ﺑﻼﻙ ،ﻣﺘﻨﺎﻗﺺ ﻭ ﺩﺍﺭﺍﻱ ﻳﻚ ﺧﻄﺎ ) (Bad Checksumﺗﺸﺨﻴﺺ ﺩﺍﺩﻩ
ﺵﺩ ،ﺁﻥ ﺭﺍ ﺭﻭﻱ ﻳﻚ ﻛﭙﻲ ﺩﻳﮕﺮ ﺑﺎﺯﻧﻮﻳﺴﻲ ﻣﻲ ﻛﻨﻴﻢ .ﺍﮔﺮ ﻫﺮ ﺩﻭ ﺑﺪﻭﻥ ﺧﻄﺎ ﺍﻣﺎ ﻣﺘﻔﺎﻭﺕ
ﻫﺴﺘﻨﺪ ،ﺑﺎﺯﻧﻮﻳﺴﻲ ﺑﻼﻙ ﺩﻭﻡ ﺗﻮﺳﻂ ﺑﻼﻙ ﺍﻭﻝ ﺻﻮﺭﺕ ﻣﻲ ﮔﻴﺮﺩ )ﺍﻃﻼﻋﺎﺕ overwriteﻣﻲ-
ﺷﻮﺩ(.
) RAIDﻧﺴﺨﻪﻫﺎﻱ ﻣﺘﻌﺪﺩ ﺍﺯ ﻳﻚ ﺑﻼﻙ ( :ﺍﺯ ﺩﻳﺴﻚ ﻫﺎﻱ ﻣﺴﺘﻘﻞ ﺍﺯ ﻫﻢ )ﺁﺭﺍﻳﻪ( ﻛﻪ ﺍﻓﺰﻭﻧﮕﻲ ﺩﺍﺩﻩ
ﺩﺍﺭﺩ ،ﺍﺳﺘﻔﺎﺩﻩ ﻣﻲ ﻛﻨﺪ .ﺑﻪ ﻋﺒﺎﺭﺕ ﺩﻳﮕﺮ ﺗﻜﻨﻴﻚ RAIDﺍﺯ ﭼﻨﺪﻳﻦ ﺩﻳﺴﻚ ﺳﺨﺖ ﺩﺭ ﺟﻬﺖ
ﺑﺎﻻﺑﺮﺩﻥ ﻛﻴﻔﻴﺖ ﻭ ﺍﻃﻤﻴﻨﺎﻥ ﺍﺳﺘﻔﺎﺩﻩ ﻣﻲ ﻛﻨﺪ ﻛﻪ ﻃﺒﻖ ﻗﺎﻋﺪﻩ ﺧﺎﺻﻲ ﺑﻪ ﻫﻢ ﻣﺮﺗﺒﻂ ﻣﻲ ﺷﻮﻧﺪ ﻭ
ﻇﺮﻓﻴﺖ ﺑﺎﻻﻳﻲ ﺭﺍ ﺍﺯ ﺣﺎﻓﻈﻪ ﺑﺎ ﻛﻴﻔﻴﺖ ﺑﺎﻻ ﻣﻲ ﺳﺎﺯﻧﺪ.
ﻣﺰﺍﻳﺎﻱ :RAID
• ﺍﻓﺰﻭﻧﮕﻲ :ﺩﺭ ﻭﺍﻗﻊ ﺍﻓﺰﻭﻧﮕﻲ ﻛﭙﻲﻫﺎﻳﻲ ﻛﻪ ﺩﺍﺭﻳﻢ ﻭﺟﻮﺩ ﻧﺪﺍﺭﺩ ﻭ ﻧﻪ ﺍﻓﺰ ﻭﻧﮕﻲ ﺩﺍﺩﻩﻫﺎ .ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ
ﺍﻳﻦ ﻭﻳﮋﮔﻲ ،ﺍﮔﺮ ﺩﺭ ﻳﻚ ﻫﺎﺭﺩ ﺧﻄﺎ ﭘﻴﺶ ﺁﻳﺪ ،ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺩﻳﮕﺮ ﺩﻳﺴﻜﻬﺎ ﺍﻃﻼﻋﺎﺕ ﺭﺍ ﺑﺎﺯﻳﺎﺑﻲ
ﻣﻲﻛﻨﻴﻢ.
• ﺑﺎﻻﺑﺮﺩﻥ ﻛﻴﻔﻴﺖ
• ﻫﺰﻳﻦ ﭘﺎﻳﻴﻦ
42
buffer
Buffer Block A )input(A
X A
Buffer Block B Y B
)output(B
)read(X
)write(Y
x2
x1
y1
memory disk
43
:Output ﺍﻧﺘﻘﺎﻝ ﺑﻼﻙ ﻓﻴﺰﻳﻜﻲ )ﺑﻄﻮﺭ ﻣﺜﺎﻝ ﺑﻼﻙ (Bﺍﺯ ﺭﻭﻱ ﺣﺎﻓﻈﻪ ﺍﺻﻠﻲ
ﺑﺮﻭﻱ ﺩﻳﺴﻚ.
ﺗﺮﺍﻛﻨﺶ ﻫﺎ ﺩﻳﺘﺎﺁﻳﺘﻢ ﻫﺎ ﺭﺍ ﺑﻴﻦ ﺑﻼﻛﻬﺎﻱ ﺑﺎﻓﺮ ﺩﺭ ﺳﻴﺴﺘﻢ ﺑﻪ ﻛﻤﻚ ﺩﻭ ﻋﻤﻠﻜﺮﺩ ﺯﻳﺮ ﺟﺎﺑﺠﺎ
ﻣﻴﻜﻨﺪ:
ﺧﻮﺍﻧﺪﻥ) :(Readﻣﻘﺪﺍﺭ ﺩﻳﺘﺎﺁﻳﺘﻢ )ﻣﺜﻼ ﺩﻳﺘﺎﺁﻳﺘﻢ (Xﺭﺍ ﺑﻪ ﻣﺘﻐﻴﺮ ﻣﺤﻠﻲ )ﻣﺜﻼ
ﻣﺘﻐﻴﺮ ﻣﺤﻠﻲ (Xiﺗﻌﻠﻖ ﻣﻴﺪﻫﺪ.
ﻧﻮﺷﺘﻦ) :(Writeﻣﻘﺪﺍﺭ ﻣﺤﻠﻲ )ﻣﺜﻼ ﻣﺘﻐﻴﺮ ﻣﺤﻠﻲ (Xiﺭﺍ ﺑﺮﻭﻱ ﺩﻳﺘﺎﺁﻳﺘﻢ
)ﻣﺜﻼ ﺩﻳﺘﺎﺁﻳﺘﻢ (Xﻣﻮﺟﻮﺩ ﺩﺭ ﺑﺎﻓﺮ ﻧﺴﺒﺖ ﻣﻲ ﺩﻫﺪ.
.1ﻣﺮﺣﻠﻪ ﺍﻭﻝ :ﺩﺭ ﺣﻴﻦ ﻋﻤﻠﻜﺮﺩ ﻋﺎﺩﻱ ﺳﻴﺴﺘﻢ ،ﺍﻃﻼﻋﺎﺗﻲ ﻛﻪ ﺑﺮﺍﻱ ﺍﻧﺠﺎﻡ ﺗﺮﻣﻴﻢ ) ﭘﺲ ﺍﺯ ﻭﻗﻮﻉ
ﺧﺮﺍﺑﻲ( ﺑﻪ ﺁﻧﻬﺎ ﻧﻴﺎﺯ ﺩﺍﺭﻳﻢ ﺩﺭ ﺟﺎﻳﻲ ﺛﺒﺖ ﺷﻮﻧﺪ .ﺑﻪ ﺍﻳﻦ ﻣﻜﺎﻥ ﻟﻮگ ) (logﻣﻲ ﮔﻮﻳﻴﻢ.
.2ﻣﺮﺣﻠﻪ ﺩﻭﻡ :ﭘﺲ ﺍﺯ ﻭﻗﻮﻉ ﺧﺮﺍﺑﻲ ) ﻭﻗﺘﻲ ﺳﻴﺴﺘﻢ ﺩﻭﺑﺎﺭﻩ ﺑﺎﻻ ﻣﻲ ﺁﻳﺪ ( ،ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺍﻃﻼﻋﺎﺕ
ﺛﺒﺖ ﺷﺪﻩ ﺩﺭ ﻣﺮﺣﻠﻪ ﻗﺒﻞ ﻭ ﺍﻟﮕﻮﺭﻳﺘﻢ ﻫﺎﻳﻲ ﻛﻪ ﺍﺯ ﭘﻴﺶ ﺗﻬﻴﻪ ﺷﺪﻩ ﺍﻧﺪ ،ﺳﻴﺴﺘﻢ ﺭﺍ ﺑﻪ ﺣﺎﻟﺖ
ﺍﻭﻝ ﺑﺮﻣﻲ ﮔﺮﺩﺍﻧﻴﻢ.
ﭘﺲ ﺩﺭ ﻣﺮﺣﻠﻪ ﺩﻭﻡ ﺍﺯ ﺍﻟﮕﻮﺭﻳﺘﻢ ﺗﺮﻣﻴﻢ ،ﻫﺮ ﺗﺮﺍﻛﻨﺸﻲ ﻛﻪ ﺑﺎ ﻣﻮﻓﻘﻴﺖ ﺍﻧﺠﺎﻡ ) (commitﺷﺪﻩ ﺍﺳﺖ
ﺭﺍ ﺗﻜﺮﺍﺭ ) (redoﻛﺮﺩﻩ ،ﻳﻌﻨﻲ ﺩﻭﺑﺎﺭﻩ ﺍﺟﺮﺍ ﻣﻲ ﻛﻨﻴﻢ ﺗﺎ ﺍﺛﺮﺍﺗﺶ ﺭﻭﻱ ﺑﺎﻧﻚ ﺍﻃﻼﻋﺎﺕ ﺩﺍﺋﻤﻲ ﺷﻮﺩ ﻭ
ﻫﺮ ﺗﺮﺍﻛﻦﺷﻲ ﻛﻪ ﺳﺎﻗﻂ ﺷﺪﻩ ﺭﺍ ﺧﻨﺜﻲ ) (undoﻣﻲ ﻛﻨﻴﻢ .ﻓﺮﺽ ﻣﻲ ﻛﻨﻴﻢ ﺗﺮﺍﻛﻨﺶ ﻫﺎ ﺳﺮﻳﺎﻟﻲ
ﻫﺴﺘﻨﺪ.
ﺷﻮﻥ :ﺭﻭﻳﻜﺮﺩ ﻛﺎﺭﻧﺎﻣﻪ ) (log-basedﻭ
ﺍﻟﮕﻮﺭﻳﺘﻢ ﻫﺎﻱ ﺗﺮﻣﻴﻢ ﺑﻪ ﺩﻭ ﺭﻭﻳﻜﺮﺩ ﻛﻠﻲ ﺗﻘﺴﻴﻢ ﻣﻲ ﺩ
ﺭﻭﻳﻜﺮﺩ ﺭﻭﻧﻮﺷﺖ ).(shadow paging
44
ﺩﺭ ﺍﻳﻦ ﺭﻭﻳﻜﺮﺩ ﺍﻃﻼﻋﺎﺕ ﻣﻮﺭﺩ ﻧﻴﺎﺯ ﺑﺮﺍﻱ ﺍﻧﺠﺎﻡ ﺗﺮﻣﻴﻢ ﺭﺍ ﺩﺭﺣﺎﻓﻈﻪ ﭘﺎﻳﺪﺍﺭ ﺛﺒﺖ ﻣﻲ ﻛﻨﻴﻢ .ﺑﺮﺍﻱ ﻫﺮ ﻳﻚ
ﻧﺎﻡ ﺭﻛﻮﺭﺩ ﻛﺎﺭﻧﺎﻣﻪ ) (logﺑﺎ ﺳﺎﺧﺘﺎﺭ ﺯﻳﺮﻧﻮﺷﺘﻪ ﻣﻲ ﺷﻮﺩ:
ﺍﺯ ﺩﺳﺘﻮﺭﺍﺕ ﻳﻚ ﺗﺮﺍﻛﻨﺶ ،ﺭﻛﻮﺭﺩﻱ ﺏ
-ﺑﺮﺍﻱ ﺷﺮﻭﻉ ﺗﺮﺍﻛﻨﺶ ، Tiﺭﻛﻮﺭﺩ > < Ti , start
-ﺑﺮﺍﻱ ﺩﺳﺘﻮﺭ ) write(xﺍﺯ ﺗﺮﺍﻛﻨﺶ Tiﺩﺭ ﺣﺎﻟﺖ ﻛﻠﻲ ﺭﻛﻮﺭﺩ > <Ti ,x,V1,V2ﻛﻪ
V2 , V1ﺑﻪ ﺗﺮﺗﻴﺐ ﻣﻘﺎﺩﻳﺮ ﻗﺒﻞ ﻭ ﺑﻌﺪ ﺍﺯ ﺍﻧﺠﺎﻡ ﻧﻮﺷﺘﻦ xﻣﻲ ﺑﺎﺷﻨﺪ.
-ﺑﺎ ﺍﺟﺮﺍﻱ ﺁﺧﺮﻳﻦ ﺩﺳﺘﻮﺭ ﺗﺮﺍﻛﻨﺶ ،Tiﺭﻛﻮﺭﺩ> <Ti, Commitﺩﺭ ﻛﺎﺭﻧﺎﻣﻪ ﺛﺒﺖ ﻣﻲ ﺷﻮﺩ.
45
. 2ﻛﭗﻱ ﻛﺮﺩﻥ ﺍﻃﻼﻋﺎﺕ ﻣﺮﺑﻮﻃﻪ ﺍﺯ ﺑﺎﻧﻚ ﺑﺴﻴﺎﺭ ﭘﺮﻫﺰﻳﻨﻪ ﺍﺳﺖ )ﺣﺘﻲ ﺑﺎ ﻭﺟﻮﺩ ﺑﻬﻴﻨﻪ ﺳﺎﺯﻱ ﻫﺎﻱ
ﺍﻧﺠﺎﻡ ﺷﺪﻩ ﺩﺭ ﺍﻳﻦ ﺯﻣﻴﻨﻪ(
. 3ﺗﻮﺳﻌﻪ ﺍﻳﻦ ﺭﻭﺵ ﺑﺮﺍﻱ ﺣﺎﻟﺘﻲ ﻛﻪ ﺗﺮﺍﻛﻨﺶ ﻫﺎ ﺑﺘﻮﺍﻧﻨﺪ ﻫﻤﺮﻭﻧﺪ ﺍﺟﺮﺍ ﺷﻮﻧﺪ ﺑﺴﻴﺎﺭ ﻣﺸﻜﻞ ﺍﺳﺖ )ﺑﺮ
ﺧﻼﻑ ﺭﻭﺵ ﻛﺎﺭﻧﺎﻣﻪ(.
. 4ﺳﺮﺑﺎﺭ ﺍﻧﺠﺎﻡ ﻋﻤﻠﻴﺎﺕ ﺍﻧﺠﺎﻡ ﺯﻳﺎﺩ ﺍﺳﺖ.
ﻧﺘﻴﺠﻪ :ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ ﻣﻘﺎﻳﺴﻪ ﺍﺟﻤﺎﻟﻲ ﺍﻳﻦ ﺩﻭ ﺭﻭﻳﻜﺮﺩ ،ﺩﺭ ﺳﻴﺴﺘﻢ ﻫﺎﻱ ﺑﺎﻧﻚ ﺍﻃﻼﻋﺎﺕ ﺭﻭﻳﻜﺮﺩ ﻛﺎﺭﻧﺎﻣﻪ
ﺍﺯ ﺭﻭﻳﻜﺮﺩ ﺭﻭﻧﻮﺷﺖ ﺑﻬﺘﺮ ﺍﺳﺖ ﻭ ﻋﻤﻮﻣﺎً ﺍﺯ ﺭﻭﺵ ﻛﺎﺭﻧﺎﻣﻪ ﺑﺮﺍﻱ ﺍﻧﺠﺎﻡ ﺗﺮﻣﻴﻢ ﺍﺳﺘﻔﺎﺩﻩ ﻣﻲ ﺷﻮﺩ.
46
.1ﺭﻛﻮﺭﺩﻫﺎﻱ ﻛﺎﺭﻧﺎﻣﻪ )ﻛﻪ ﺩﺭ ﺣﻴﻦ ﻋﻤﻠﻜﺮﺩ ﻋﺎﺩﻱ ﺳﻴﺴﺘﻢ ﺩﺭ ﺑﺎﻓﺮ ﻧﻮﺷﺘﻪ ﻣﻲ ﺷﺪﻧﺪ ( ﺑﻪ ﺣﺎﻓﻈﻪ
ﭘﺎﻳﺪﺍﺭ ﻣﻨﺘﻘﻞ ﻣﻲ ﺷﻮﻧﺪ.
.2ﺩﺍﺩﻩ ﻫﺎﻱ ﺗﻐﻴﻴﺮ ﻳﺎﻓﺘﻪ ﺩﺭ ﺑﺎﻓﺮ ﺑﻪ ﺩﻳﺴﻚ ﻣﻨﺘﻘﻞ ﻣﻲ ﮔﺮﺩﻧﺪ.
ﻧﺎﻡ ﺭﻛﻮﺭﺩ ﺑﺎﺯﺭﺳﻲ ﺑﺎ ﺳﺎﺧﺘﺎﺭ > <checkpointﺛﺒﺖ ﻣﻲ ﺷﻮﺩ. .3ﺭﻛﻮﺭﺩﻱ ﺏ
ﻣﺜﺎﻝ :ﺩﺭ ﺍﻳﻦ ﺷﻜﻞ ﭘﺲ ﺍﺯ ﻭﻗﻮﻉ ﺧﺮﺍﺑﻲ ﺑﻪ ﺻﻮﺭﺕ ﺯﻳﺮ ﻋﻤﻞ ﻣﻲ ﺷﻮﺩ:
Fuzzy Checkpoint
ﺗﺎ ﻛﻨﻮﻥ ﻓﺮﺽ ﺑﺮ ﺍﻳﻦ ﺑﻮﺩ ﻛﻪ ﺗﺮﺍﻛﻨﺶﻫﺎ ﺩﺭ ﺣﻴﻦ ﺍﻳﺠﺎﺩ ﻧﻘﻄﻪ ﺑﺮﺭﺳﻲ )ﭼﻚﭘﻮﻳﻨﺖ( ﻓﻌﺎﻝ ﻧﻴﺴﺘﻨﺪ .ﺍﻣﺎ
ﺩﺭ ﺑﺮﺧﻲ ﺍﺯ ﺳﻴﺴﺘﻤﻬﺎ ﻳﻚ ﺳﺮﻱ ﺗﺮﺍﻛﻨﺶ ﻫﺎ ﺍﺟﺎﺯﻩ ﺩﺍﺭﻧﺪ ﺩﺭ ﺣﻴﻦ ﭼﻚ ﭘﻮﻳﻨﺖ ﻓﻌﺎﻝ ﺑﺎﺷﻨﺪ .ﻫﺪﻑ
ﭼﻚﭘﻮﻳﻨﺖ ﻓﺎﺯﻱ ﺍﻳﻦ ﺍﺳﺖ ﻛﻪ ﺍﻳﻦ ﺗﺮﺍﻛﻨﺸﻬﺎ ﺭﺍ ﺗﺸﺨﻴﺺ ﺩﻫﺪ ﻳﻌﻨﻲ ﺧﺮﻭﺟﻲ ﺗﺮﺍﻛﻨﺸﻬﺎ ﻣﺠﺎﺯ ﺍﺳﺖ .
ﻗﺒﻞ ﺍﺯ ﺁﺧﺮﻳﻦ ﭼﻚﭘﻮﻳﻨﺖ ﻫﻨﻮﺯ ﺑﻌﻀﻲﻫﺎ ﺍﺟﺮﺍ ﻧﺸﺪﻩﺍﻧﺪ.
47
ﺑﺮﺍﺳﺎﺱ ﻓﺎﻛﺘﻮﺭﻫﺎﻱ ﺗﺮﺍﻛﻨﺶ ،ﺁﻧﻬﺎﻳﻲ ﻛﻪ ﺩﺭﮔﻴﺮ ﻫﺴﺘﻨﺪ ،ﺑﺎﻳﺪ ﻣﺘﻮﻗﻒ ﺷﻮﻧﺪ .ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﮔﺮﺍﻓﻬﺎﻱ
ﻧﺎﻫﻤﺒﻨﺪ ﻣﻲﺗﻮﺍﻥ ﺗﺮﺍﻛﻨﺸﻬﺎ ﺭﺍ ﺑﻪ ﺩﻭ ﺩﺳﺘﻪ ﺗﻘﺴﻴﻢ ﻛﺮﺩ.
ﺩﺭﺻﻮﺭﺗﻲ ﻛﻪ ﺑﺨﻮﺍﻫﻴﻢ ﺑﺎ ﻣﺸﻜﻞ ﺍﺯ ﺩﺳﺖ ﺩﺍﺩﻥ ﺩﺍﺩﻩ ﻫﺎﻱ ﺣﺎﻓﻈﻪ ﻏﻴﺮﻓﺮﺍﺭ ﻣﻘﺎﺑﻠﻪ ﻛﻨﻴﻢ ،ﺗﻜﻨﻴﻜﻲ
) (Dumpingﻧﺎﻣﻴﺪﻩ ﻣﻲ ﺷﻮﺩ . ﻣﺸﺎﺑﻪ ﻧﻘﺎﻁ ﻭﺍﺭﺳﻲ ﻗﺎﺑﻞ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺳﺖ ﻛﻪ ﺍﺻﻄﻼﺣﺎً ﺭﻭﺑﺮﺩﺍﺭﻱ
ﺏ ﺻﻮﺭﺕ ﺯﻳﺮ ﺍﺳﺖ : ﻣﺮﺍﺣﻞ ﺍﻳﻦ ﺗﻜﻨﻴﻚ ﺑﻪ ﻃﻮﺭ ﺧﻼﺻﻪ ﻩ
- 1ﻫﺮ ﭼﻪ ﺭﻛﻮﺭﺩ ﺩﺭ logﻭﺟﻮﺩ ﺩﺍﺭﺩ ،ﺩﺭ ﺣﺎﻓﻈﻪ ﭘﺎﻳﺪﺍﺭ ﺛﺒﺖ ﺷﻮﺩ .
- 2ﺩﺍﺩﻩﻫﺎ ﺛﺒﺖ ﺷﻮﺩ )ﻛﻠﻴﻪ ﺑﻼﻛﻬﺎﻱ ﺑﺎﻓﺮ ﺑﺮﺭﻭﻱ ﺩﻳﺴﻚ ﺛﺒﺖ ﺷﻮﺩ (.
- 3ﺍﻧﺠﺎﻡ ﻋﻤﻠﻴﺎﺕ ) Dumpingﺭﻭﺑﺮﺩﺍﺭﻱ( ﺭﻭﻱ ﺩﻳﺴﻚ
- 4ﺛﺒﺖ ﻳﻚ ﻛﻮﺭﺩ ﺑﻪ ﺷﻜﻞ > <Dumpﺑﺮﺭﻭﻱ ﺣﺎﻓﻈﻪ ﺫﺧﻴﺮﻩ ﺳﺎﺯﻱ ﭘﺎﻳﺪﺍﺭ
ﻧﻜﺘﻪ :ﺗﺮﺗﻴﺐ ﺍﺟﺮﺍﻱ Checkpointﻭ Dumpingﻫﻴﭻ ﺍﺭﺗﺒﺎﻃﻲ ﺑﺎ ﻫﻢ ﻧﺪﺍﺭﻧﺪ .ﺩﺭ Checkpoint
ﺍﻧﺘﻘﺎﻝ ﺍﺯ ﺑﺎﻓﺮ ﺑﻪ ﺩﻳﺴﻚ ﺻﻮﺭﺕ ﻣﻲ ﮔﻴﺮﺩ ﺍﻣﺎ ﺩﺭ Dumpingﺍﻧﺘﻘﺎﻝ ﺍﺯ ﺩﻳﺴﻚ ﺑﻪ ﺩﻳﺴﻚ ﺻﻮﺭﺕ ﻣﻲ -
ﮔﻴﺮﺩ.
48
ﻓﺼﻞ :4
ﺍﻣﻨﻴﺖ ﭘﺎﻳﮕﺎﻩ ﺩﺍﺩﻩ
49
ﺗﻌﺮﻳﻒ ﺍﻳﻤﻨﻲ:
ﺍﻳﻤﻨﻲ ﻋﺒﺎﺭﺗﺴﺖ ﺍﺯ ﺣﻔﺎﻇﺖ ﺩﺍﺩﻩ ﻫﺎ ﺩﺭ ﻗﺒﺎﻝ ﺩﺳﺘﻴﺎﺑﻲ ﻏﻴﺮﻣﺠﺎﺯ ،ﺗﻐﻴﻴﺮ ﻏﻴﺮ ﻣﺠﺎﺯ ﻳﺎ ﺗﺨﺮﻳﺐ ﺁﻧﻬﺎ ﻭ
ﻧﻴﺰ ﺩﺭ ﻗﺒﺎﻝ ﺩﺳﺘﻴﺎﺑﻲ ﺑﻪ ﺩﺍﺩﻩ ﻫﺎ ﺑﺎ ﺳﻮء ﻧﻴﺖ.
ﺩﺭ ﺍﻳﻤﻨﻲ :ﻣﺴﺌﻠﻪ ﺣﻔﺎﻇﺖ ﺩﺍﺩﻩ ﻫﺎ ﺩﺭ ﻣﻘﺎﺑﻞ ﻛﺎﺭﺑﺮ ﻏﻴﺮ ﻣﺠﺎﺯ ﻣﻄﺮﺡ ﺍﺳﺖ ﻭ ﺣﺼﻮﻝ ﺍﻃﻤﻴﻨﺎﻥ ﺍﺯ
ﺍﻳﻨﻜﻪ ﻛﺎﺭﺑﺮﺍﻥ ﺑﻪ ﺍﻧﭽﻪ ﻛﻪ ﺑﺪﺍﻥ ﺍﻗﺪﺍﻡ ﻣﻲ ﻭﺭﺯﻧﺪ ﻣﺠﺎﺯﻧﺪ.
ﺩﺭ ﺟﺎﻣﻌﻴﺖ :ﻧﻮﻋﻲ ﺣﻔﺎﻇﺖ ﺩﺍﺩﻩ ﻫﺎ ﺩﺭ ﻣﻘﺎﺑﻞ ﻋﻤﻠﻴﺎﺕ ﻛﺎﺭﺑﺮ ﻣﺠﺎﺯ ﺍﻋﻤﺎﻝ ﻣﻲ ﺷﻮﺩ ﻭ ﺣﺼﻮﻝ
ﺍﻃﻤﻴﻨﺎﻥ ﺍﺯ ﺍﻳﻨﻜﻪ ﺍﻗﺪﺍﻡ ﻛﺎﺭﺑﺮ ﻣﺠﺎﺯ ،ﺻﺤﻴﺢ ﺍﺳﺖ ﻭ ﺻﺤﺖ ﻭ ﺩﻗﺖ ﺩﺍﺩﻩ ﻫﺎ ﺭﺍ ﺧﺪﺷﻪ ﺩﺍﺭ ﻧﻤﻲ ﻛﻨﺪ .
50
ﺷﺒﺎﻫﺖ ﺍﻳﻤﻨﻲ ﺑﺎ ﺟﺎﻣﻌﻴﺖ:
ﺳﻴﺴﺘﻢ ﻣﺪﻳﺮﻳﺖ ﭘﺎﻳﮕﺎﻩ ﺩﺍﺩﻩ ﻫﺎ ﺍﺯ ﻭﺟﻮﺩ ﭘﺎﺭﻩ ﺍﻱ ﻗﻮﺍﻋﺪ ﻣﺤﺪﻭﺩﻳﺘﻬﺎ ﻛﻪ ﻛﺎﺭﺑﺮﺍﻥ ﻧﺒﺎﻳﺪ ﻧﻘﺾ
ﻛﻨﻨﺪ ،ﺑﺎﻳﺪ ﺁﮔﺎﻩ ﺑﺎﺷﺪ.
ﻣﺤﺪﻭﺩﻳﺘﻬﺎ ﻭ ﻗﻮﺍﻋﺪ ﺑﺎﻳﺪ ﺑﻪ ﻧﺤﻮﻱ ﺗﻮﺻﻴﻒ ﺷﻮﻧﺪ ﻭ ﺩﺭ ﻛﺎﺗﺎﻟﻮگ ﻧﮕﻬﺪﺍﺭﻱ ﮔﺮﺩﻧﺪ .
ﺧﻄﺮﺍﺕ :Threatsﺧﻄﺮ ﻫﺮ ﻭﺿﻌﻴﺖ ﻭ ﺭﻭﻳﺪﺍﺩﻱ ﺍﺳﺖ ﻛﻪ ﻋﻤﺪﺍ ﻳﺎ ﺳﻬﻮﺍ ﺭﻭﻱ ﺳﻴﺴﺘﻢ ﻭ ﺩﺭ
ﻧﺘﻴﺠﻪ ﺭﻭﻱ ﺳﺎﺯﻣﺎﻥ ﺗﺎﺛﻴﺮ ﻧﺎﻣﺴﺎﻋﺪ ﺩﺍﺷﺘﻪ ﺑﺎﺷﺪ.
ﺧﻄﺮﺍﺕ ﻣﻨﻄﻘﻲ
ﺍﻧﻮﺍﻉ ﺧﻄﺮﺍﺕ:
ﺧﻄﺮﺍﺕ ﻏﻴﺮﻋﻤﺪﻱ)ﺍﺗﻔﺎﻗﻲ(
ﺧﻄﺮﺍﺕ ﻋﻤﺪﻱ
ﺍﺳﺘﺮﺍﻕ ﺳﻤﻊ
51
ﺷﻲء ﺍﻳﻤﻨﻲ:
ﺩﺍﺩﻩ ﻫﺎ )ﺍﺯ ﺳﻄﺢ ﺻﻔﺖ ﺗﺎ ﻛﻞ ﭘﺎﻳﮕﺎﻩ ﺩﺍﺩﻩ ﻫﺎ(
ﻛﺎﺗﺎﻟﻮگ ﺳﻴﺴﺘﻢ
ﺳﻴﺴﺘﻢ ﻋﺎﻣﻞ
ﺳﺨﺖ ﺍﻓﺰﺍﺭ
ﺷﺒﻜﻪ
ﻣﺤﻴﻂ ﻓﻴﺰﻳﻜﻲ
ﺗﺪﺍﺑﻴﺮ ﺍﻳﻤﻨﻲ:
ﻛﻨﺘﺮﻝ ﺍﻓﺮﺍﺩ
52
ﺗﻨﻈﻴﻢ ﺗﻮﺍﻓﻖ ﻧﺎﻣﻪ ﻫﺎﻱ ﻧﮕﻬﺪﺍﺭﻱ
ﺗﺪﺍﺑﻴﺮ ﻛﺎﻣﭙﻴﻮﺗﺮﻱ
ﺷﻨﺎﺳﺎﻳﻲ ﻛﺎﺭﺑﺮ
ﻛﻨﺘﺮﻝ ﺩﺳﺘﻴﺎﺑﻲ
ﻧﻬﺎﻥ ﻧﮕﺎﺭﻱ
ﻓﺮﺍﻳﻨﺪ ﺭﺩ ﮔﻴﺮﻱ
ﻛﻨﺘﺮﻝ ﺍﺳﺘﻨﺘﺎﺝ
ﻛﺎﺭﺑﺮ ﻣﻤﻜﻦ ﺍﺳﺖ :ﻣﻨﻔﺮﺩ ،ﮔﺮﻭﻩ ﻛﺎﺭﺑﺮﺍﻥ ﻳﺎ ﺳﻠﺴﻠﻪ ﻣﺮﺍﺗﺐ ﻛﺎﺭﺑﺮﺍﻥ ﺑﺎﺷﺪ.
ﮔﺬﺭ ﻭﺍژﻩ
ﺍﺛﺮ ﺍﻧﮕﺸﺖ
ﻛﺎﺭﺕ ﺍﻟﻜﺘﺮﻭﻧﻴﻜﻲ
ﭘﺮﺳﺸﻨﺎﻣﻪ
ﻧﺸﺎﻥ
ﻣﺠﺎﺯ ﺷﻤﺎﺭﻱ)(Authorization
ﻋﺒﺎﺭﺗﺴﺖ ﺍﺯ ﺍﻋﻄﺎﻱ ﻳﻚ ﺣﻖ ﻳﺎ ﺍﻣﺘﻴﺎﺯ ﻳﺎ ﻣﺠﻮﺯ ﺑﻪ ﻛﺎﺭﺑﺮ ﺑﻪ ﻧﺤﻮﻱ ﻛﻪ ﻛﺎﺭﺑﺮ ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺁﻥ ﺩﺭ
ﺩﺳﺘﻴﺎﺑﻲ ﺑﻪ ﺩﺍﺩﻩ ﻫﺎﻱ ﻣﻮﺭﺩ ﻧﻈﺮﺵ ﻣﺠﺎﺯ ﻣﻲ ﺷﻮﺩ .
54
ﺍﻳﺠﺎﺩ ﻭ ﺣﺬﻑ ﻳﻚ ﻣﺤﺪﻭﺩﻳﺖ ﺟﺎﻣﻌﻴﺘﻲ
ﺩﺭﺝ ﺩﺭ ﺟﺪﻭﻝ
ﺣﺬﻑ ﺍﺯ ﺟﺪﻭﻝ
55
:ﻧﻤﻮﻧﻪ ﺍﻱ ﺍﺯ ﻗﻮﺍﻋﺪ ﻳﺎ ﻣﺤﺪﻭﺩﻳﺖ ﻫﺎﻱ ﺍﻳﻤﻨﻲ
:ﻛﻨﺘﺮﻝ ﺩﺳﺘﻴﺎﺑﻲ
DAC (Discretionary Access Control) ﺭﻭﺵ
56
ﺭﻭﺵ ﺍﺧﺘﻴﺎﺭﻱ )(DAC
ﺍﻳﻦ ﺭﻭﺵ ﺑﺮﺍﻱ ﻛﻨﺘﺮﻝ ﺩﺳﺘﻴﺎﺑﻲ ﺍﻣﺘﻴﺎﺯﺍﺗﻲ ﺑﻪ ﻛﺎﺭﺑﺮﺍﻥ ﺍﻋﻄﺎ ﻣﻲ ﻛﻨﺪ ﻭ ﻫﺮﮔﺎﻩ ﻻﺯﻡ
ﺑﺎﺷﺪ ﺍﺯ ﺁﻧﻬﺎ ﺳﻠﺐ ﻣﻲ ﻧﻤﺎﻳﺪ.
ﻛﺎﺭﺑﺮﺍﻥ ﻣﺨﺘﻠﻒ ﻣﻲ ﺗﻮﺍﻧﻨﺪ ﺣﻘﻮﻕ ﻣﺘﻔﺎﻭﺕ ﺭﻭﻱ ﺷﻴﺊ ﻭﺍﺣﺪ ﺩﺍﺩﻩ ﺩﺍﺷﺘﻪ ﺑﺎﺷﻨﺪ.
ﻣﺪﻳﺮﻳﺖ ﻣﺠﺎﺯ ﺷﻤﺎﺭﻱ ﻟﺰﻭﻣﺎ ﺣﺎﻟﺖ ﻣﺘﻤﺮﻛﺰ ﻧﺪﺍﺭﺩ ﻭ ﺣﺎﻻﺕ ﺯﻳﺮ ﻣﻲ ﺗﻮﺍﻧﺪ ﻭﺟﻮﺩ
ﺩﺍﺷﺘﻪ ﺑﺎﺷﺪ:
.1ﻣﺪﻳﺮﻳﺖ ﻣﺘﻤﺮﻛﺰ :ﻳﻚ ﻧﻔﺮ ﺍﺟﺎﺯﻩ ﺩﻫﻨﺪﻩ ﻣﺠﻮﺯﻫﺎ ﺭﺍ ﻣﻲ ﺩﻫﺪ ﻭ ﺳﻠﺐ ﻣﻲ ﻛﻨﺪ .
.2ﻣﺪﻳﺮﻳﺖ ﺳﻠﺴﻠﻪ ﻣﺮﺍﺗﺒﻲ :ﻳﻚ ﻧﻔﺮ ﻣﺴﺌﻮﻝ ﻭﺍﮔﺬﺍﺭﻱ ﻣﺴﺌﻮﻟﻴﺘﻬﺎﻱ ﻣﺪﻳﺮﻳﺘﻲ ﺑﻪ ﺳﺎﻳﺮ
ﻣﺪﻳﺮﺍﻥ ﺍﺳﺖ .ﺍﻳﻦ ﻣﺪﻳﺮﺍﻥ ﺧﻮﺩ ﻣﻲ ﺗﻮﺍﻧﻨﺪ ﻣﺠﻮﺯ ﻫﺎ ﺭﺍ ﺑﻪ ﻛﺎﺭﺑﺮﺍﻥ ﺑﺪﻫﻨﺪ ﻳﺎ ﺳﻠﺐ
ﻛﻨﻨﺪ.
.3ﻣﺪﻳﺮﻳﺖ ﺟﻤﻌﻲ )ﺗﻌﺎﻭﻧﻲ( :ﺑﺎ ﻫﻤﻴﺎﺭﻱ ﻭ ﻫﻤﻜﺎﺭﻱ ﭼﻨﺪ ﻧﻔﺮ ﺍﻋﻄﺎ ﻣﺠﻮﺯ ﺍﻧﺠﺎﻡ ﻣﻲ
ﺷﻮﺩ.
.4ﻣﺪﻳﺮﻳﺖ ﺗﻤﻠﻜﻲ :ﻛﺎﺭﺑﺮ ﺍﻳﺠﺎﺩ ﻛﻨﻨﺪﻩ ﻫﺮ ﺷﻴﺊ ﻣﺎﻟﻚ ﺁﻥ ﺍﺳﺖ ﻭ ﻣﺠﻮﺯﻫﺎ ﺭﺍ ﺍﻭ ﻣﻲ
ﺩﻫﺪ.
.5ﻣﺪﻳﺮﻳﺖ ﻧﺎﻣﺘﻤﺮﻛﺰ :ﻣﺎﻟﻚ ﺷﻴﺊ ﻣﻲ ﺗﻮﺍﻧﺪ ﺍﺧﺘﻴﺎﺭ ﻣﺪﻳﺮﻳﺖ ﻣﺠﺎﺯ ﺷﻤﺎﺭﻱ ﺁﻥ ﺭﺍ ﺑﻪ
ﺩﻳﮕﺮﺍﻥ ﺗﻔﻮﻳﺾ ﻛﻨﺪ.
ﻧﺎﻡ ﻗﺎﻋﺪﻩ
57
ﻳﻚ ﻳﺎ ﺑﻴﺶ ﺍﺯ ﻳﻚ ﺍﻣﺘﻴﺎﺯ
ﻳﻚ ﻳﺎ ﺑﻴﺶ ﺍﺯ ﻳﻚ ﻛﺎﺭﺑﺮ
:ﻣﺜﺎﻝ
CREATE SECURITY RULE SR1
CREDIT) COTITLE, RETRIEVE (COID, GRANT
COT.CEID=D202 COT WHERE COT.DEID=D101 OR ON
U2 U1, TO
ON VIOLATION REJECT
:ﻣﺰﺍﻳﺎ ﻭ ﻣﻌﺎﻳﺐ
58
ﻣﺰﻳﺖ ﺭﻭﺵ ﺍﺧﺘﻴﺎﺭﻱ ﺍﻳﻦ ﺍﺳﺖ ﻛﻪ ﺑﺴﻴﺎﺭ ﺍﻧﻌﻄﺎﻑ ﭘﺬﻳﺮ ﺍﺳﺖ .
ﻋﻴﺐ ﺁﻥ ﺍﻳﻦ ﺍﺳﺖ ﻛﻪ ﻛﺎﺭﺑﺮ ﻏﻴﺮﻣﺠﺎﺯ ﺍﺯﻃﺮﻳﻖ ﻛﺎﺭﺑﺮ ﻣﺠﺎﺯ ﻣﻲ ﺗﻮﺍﻧﺪ ﺍﻣﺘﻴﺎﺯﺍﺗﻲ ﺭﺍ ﻛﺴﺐ ﻛﻨﺪ .
ﺍﺯ ﺍﻳﻦ ﻧﻈﺮ ﺭﻭﺵ ﻗﺎﺑﻞ ﺍﻃﻤﻴﻨﺎﻧﻲ ﻧﻴﺴﺖ .ﺑﻌﻼﻭﻩ ﻛﺎﺭﺑﺮ ﻣﻲ ﺗﻮﺍﻧﺪ ﺍﻣﺘﻴﺎﺯ ﺧﻮﺩ ﺭﺍ ﺑﻪ ﻛﺎﺭﺑﺮ ﺩﻳﮕﺮ
ﺍﻋﻄﺎ ﻛﻨﺪ) ،ﺍﻧﺘﺸﺎﺭ ﺍﻣﺘﻴﺎﺯ( ﺩﺭ ﺍﻳﻦ ﺻﻮﺭﺕ ﻋﻤﻠﻴﺎﺕ ﺳﻠﺐ ﺍﻣﺘﻴﺎﺯ ﺑﺎ ﻣﺸﻜﻼﺗﻲ ﻣﻮﺍﺟﻪ ﻣﻲ ﺷﻮﺩ .
ﺣﺎﻝ U1ﺍﻣﺘﻴﺎﺯ p1ﺭﺍ ﺍﺯ U2ﺳﻠﺐ ﻣﻲ ﻛﻨﺪ U2 .ﻫﻨﻮﺯ ﺍﺯ ﻃﺮﻳﻖ U3ﺍﻳﻦ ﺍﻣﺘﻴﺎﺯ ﺭﺍ ﺩﺭ ﺍﺧﺘﻴﺎﺭ ﺩﺍﺭﺩ.
ﺣﺘﻲ ﺍﮔﺮ U1ﺍﺯ U3ﻧﻴﺰ ﺳﻠﺐ ﺍﻣﺘﻴﺎﺯ ﻧﻤﺎﻳﺪ ،ﺑﺎﺯ ﻫﻢ ﺍﻣﺘﻴﺎﺯ ﺍﺯ U2ﻭ U3ﺳﻠﺐ ﻧﻤﻲ ﺷﻮﺩ.
59
ﺍﻧﺘﺸﺎﺭ ﺍﻓﻘﻲ
ﺑﺎ ﻣﺸﺨﺺ ﻛﺮﺩﻥ ﻳﻚ ﻋﺪﺩ ﺻﺤﻴﺢ iﺑﺮﺍﻱ ﻛﺎﺭﺑﺮ ﺩﺍﺭﺍﻱ ﻳﻚ ﺍﻣﺘﻴﺎﺯ ،ﺑﻪ ﺍﻳﻦ ﻛﺎﺭﺑﺮ ﺍﺟﺎﺯﻩ
ﺍﻋﻄﺎﻱ ﺍﻣﺘﻴﺎﺯ ﺑﻪ ﺣﺪﺍﻛﺜﺮ iﻛﺎﺭﺑﺮ ﺩﻳﮕﺮ ﺩﺍﺩﻩ ﻣﻲ ﺷﻮﺩ.
ﺍﻧﺘﺸﺎﺭ ﻋﻤﻮﺩﻱ
ﺩﺭ ﻭﺍﻗﻊ ﻋﻤﻖ ﻣﺴﻴﺮ ﮔﺮﺍﻑ ﻣﺠﺎﺯ ﺷﻤﺎﺭﻱ ﻛﻨﺘﺮﻝ ﻣﻲ ﺷﻮﺩ .ﺑﻪ ﺍﻳﻦ ﺗﺮﺗﻴﺐ ﻛﻪ ﺍﮔﺮ ﻛﺎﺭﺑﺮ
U1ﺩﺍﺭﺍﻱ ﻳﻚ ﺍﻣﺘﻴﺎﺯ ﺑﺎﺷﺪ ،ﺑﺎ ﺗﻌﻴﻴﻦ ﻣﻘﺪﺍﺭ j>0ﺑﺮﺍﻱ ﺍﻳﻦ ﻛﺎﺭﺑﺮ ﺑﻪ U1ﺍﺟﺎﺯﻩ
ﺍﻋﻄﺎﻱ ﺍﻣﺘﻴﺎﺯ ﺑﻪ U2ﺩﺍﺩﻩ ﻣﻲ ﺷﻮﺩ .ﺩﺭ ﺍﻳﻦ ﺻﻮﺭﺕ U1ﻳﻚ ﻭﺍﺣﺪ ﺍﺯ jﻛﻢ ﻣﻲ ﻛﻨﺪ ﻭ
ﺩﺭ ﻧﺘﻴﺠﻪ U2ﻓﻘﻂ ﺑﻪ j-1ﻛﺎﺭﺑﺮ ﺩﻳﮕﺮ ﻣﻲ ﺗﻮﺍﻧﺪ ﺁﻥ ﺍﻣﺘﻴﺎﺯ ﺭﺍ ﺑﻄﻮﺭ ﻋﻤﻮﺩﻱ ﺍﻋﻄﺎ
ﻛﻨﺪ .ﻫﻤﻴﻨﻄﻮﺭ ﺍﻳﻦ ﺭﻭﺍﻝ ﺗﻜﺮﺍﺭ ﻣﻲ ﺷﻮﺩ ﺗﺎ ﺯﻣﺎﻧﻴﻜﻪ ﻣﻘﺪﺍﺭ jﺻﻔﺮ ﺷﻮﺩ.
ﺍﻳﻦ ﺭﻭﺵ ﺩﺭ ﻣﺤﻴﻂ ﻫﺎﻱ ﺑﺴﻴﺎﺭ ﻧﻈﻢ ﻣﻨﺪ ﻣﺜﻞ ﻣﺤﻴﻂ ﻧﻈﺎﻣﻲ ﺍﻳﺠﺎﺩ ﺷﺪﻩ ﺍﺳﺖ .
ﺑﻌﻼﻭﻩ ﻫﺮ ﻛﺎﺭﺑﺮ ﻧﻴﺰ ﻳﻚ ﻣﺠﻮﺯ ﺑﺮﺍﻱ ﺩﺳﺘﻴﺎﺑﻲ ﺑﻪ ﺳﻄﺢ ﻣﺸﺨﺼﻲ ﺍﺯ ﺷﻴﺊ ﺩﺍﺩﻩ ﺍﻱ ﺩﺍﺭﺩ .
ﺑﻨﺎﺑﺮﺍﻳﻦ ﺗﻨﻬﺎ ﻛﺎﺭﺑﺮ ﺩﺍﺭﺍﻱ ﻣﺠﻮﺯ ﺩﺳﺘﻴﺎﺑﻲ ﺑﻪ ﻳﻚ ﺷﻴﺊ ﺩﺍﺩﻩ ﺍﻱ ﻣﻲ ﺗﻮﺍﻧﺪ ﺑﻪ ﺁﻥ ﺩﺳﺘﻴﺎﺑﻲ
ﺩﺍﺷﺘﻪ ﺑﺎﺷﺪ.
60
ﺧﻴﻠﻲ ﺳﺮﻱ )TS (Top Secret
TS>S>C>U
ﺧﺼﻮﺻﻴﺖ ﺍﻳﻤﻨﻲ ﺳﺎﺩﻩ :ﻛﺎﺭﺑﺮ Uﻧﻤﻲ ﺗﻮﺍﻧﺪ ﺩﺍﺩﻩ Dﺭﺍ ﺑﺨﻮﺍﻧﺪ ﻣﮕﺮ
ﺍﻳﻨﻜﻪcl(U)>=cl(D) :
ﺧﺼﻮﺻﻴﺖ ﺳﺘﺎﺭﻩ ﺩﺍﺭ :ﻛﺎﺭﺑﺮ Uﻧﻤﻲ ﺗﻮﺍﻧﺪ ﺩﺍﺩﻩ Dﺭﺍ ﺑﻨﻮﻳﺴﺪ ﻣﮕﺮ
ﺍﻳﻨﻜﻪcl(U)<=cl(D) :
ﻣﺜﺎﻝ:
ﺭﺍﺑﻄﻪ ﻫﺎﻱ STTﻭ STCOTﺭﺍ ﺩﺭ ﻧﻈﺮ ﻣﻲ ﮔﻴﺮﻳﻢ.
ﻛﺎﺭﺑﺮﺍﻥ ﺑﻪ ﻋﻨﻮﺍﻥ ﺍﻋﻀﺎ ﻧﻘﺸﻬﺎ ﺗﻌﺮﻳﻒ ﻣﻲ ﺷﻮﻧﺪ ﻭ ﻫﺮ ﻛﺎﺭﺑﺮ ﻣﻲ ﺗﻮﺍﻧﺪ ﻣﺠﻮﺯ ﻣﺮﺑﻮﻁ ﺑﻪ ﻧﻘﺶ
ﺧﻮﺩ ﺭﺍ ﺑﺮﺍﻱ ﺩﺳﺘﻴﺎﺑﻲ ﺑﻪ ﺩﺍﺩﻩ ﻫﺎ ﺩﺭﻳﺎﻓﺖ ﻛﻨﺪ .
ﺑﺮﺍﻱ ﻭﻇﺎﻳﻒ ﻛﺎﺭﻱ ﻫﺮ ﻓﺮﺩ ﻳﺎ ﮔﺮﻭﻩ ﺩﺍﺭﺍﻱ ﻭﻇﺎﻳﻒ ﻣﺸﺎﺑﻪ ﺩﺭ ﺳﺎﺯﻣﺎﻥ ،ﻧﻘﺶ ﺗﻌﺮﻳﻒ ﻣﻲ ﺷﻮﺩ .
ﺑﺮﺍﻱ ﺍﻋﻤﺎﻝ ﺿﺎﺑﻄﻪ ﺍﻳﻤﻨﻲ ﺩﺭ ﺳﻄﺢ ﺻﻔﺖ ﺑﻪ ﻫﺮ ﺻﻔﺖ Aiﻳﻚ ﺻﻔﺖ ﺭﺩﻩ ﺑﻨﺪﻱ Cﻣﻦﻅّﻡ ﻣﻲ ﺷﻮﺩ .
TCﺑﻪ ﺻﻔﺎﺕ ﺭﺍﺑﻄﻪ ﺍﺿﺎﻓﻪ ﻣﻲ ﺑﺮﺍﻱ ﺍﻋﻤﺎﻝ ﺿﺎﺑﻄﻪ ﺍﻳﻤﻨﻲ ﺩﺭ ﺳﻄﺢ ﺗﺎﭘﻞ ،ﺻﻔﺖ ﺭﺩﻩ ﺑﻨﺪﻱ ﺗﺎﭘﻞ
ﺷﻮﺩ.
ﻣﺜﺎﻝ:
62
ﻭ ﺍﮔﺮ ﺑﺮﺍﻱ ﻛﺎﺭﺑﺮ ﺑﺎ ﻣﺠﻮﺯ Uﻓﻴﻠﺘﺮ ﻛﻨﻴﻢ:
ﺭﻣﺰ ﻧﮕﺎﺭﻱ)(Encryption
ﻋﺒﺎﺭﺗﺴﺖ ﺍﺯ ﻛﺪﮔﺬﺍﺭﻱ ﺩﺍﺩﻩ ﻫﺎ ﺑﻮﺳﻴﻠﻪ ﻳﻚ ﺍﻟﮕﻮﺭﻳﺘﻢ ﺧﺎﺹ ﺑﻪ ﻧﺤﻮﻱ ﻛﻪ ﻛﺎﺭﺑﺮ ﻧﺘﻮﺍﻧﺪ ﺑﺪﻭﻥ
ﺩﺍﺷﺘﻦ ﻛﻠﻴﺪ ﺭﻣﺰ ﮔﺸﺎﻳﻲ ﺩﺍﺩﻩ ﻫﺎ ﺭﺍ ﺑﺨﻮﺍﻧﺪ.
63
ﺍﻟﮕﻮﺭﻳﺘﻢ ﺭﻣﺰ ﮔﺸﺎﻳﻲ
ﺍﮔﺮ ﺍﺯ ﻳﻚ ﻛﻠﻴﺪ ﺑﺮﺍﻱ ﺭﻣﺰﻧﮕﺎﺭﻱ ﻭ ﺭﻣﺰ ﮔﺸﺎﻳﻲ ﺍﺳﺘﻔﺎﺩﻩ ﺷﻮﺩ ،ﺳﻴﺴﺘﻢ ﺭﻣﺰ ﻧﮕﺎﺭﻱ ﻣﺘﻘﺎﺭﻥ ﺍﺳﺖ ﻭ ﺩﺭ
ﻏﻴﺮ ﺍﻳﻨﺼﻮﺭﺕ ﻧﺎﻣﺘﻘﺎﺭﻥ ﺧﻮﺍﻫﺪ ﺑﻮﺩ.
ﺗﺤﻠﻴﻞ ﺩﺍﺩﻩ ﻫﺎ ﻣﻤﻜﻦ ﺍﺳﺖ ﺑﺼﻮﺭﺕ ﺑﺮﻭﻥ ﺧﻂ ﻭ ﺑﺎ ﺗﺎﺧﻴﺮ ﻳﺎ ﺑﺮﺧﻂ ﻭ ﺑﻴﺪﺭﻧﮓ ﺑﺎﺷﺪ .
ﺩﺭ ﺣﺎﻟﺖ ﺑﻴﺪﺭﻧﮓ ﻓﺮﺍﻳﻨﺪ ﺭﺩﮔﻴﺮﻱ ﺭﺍ ﻛﺸﻒ ﻣﺰﺍﺣﻤﺖ ) (Intrusion detectionﻣﻲﮔﻮﻳﻴﻢ .
ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺑﺮﺧﻲ ﭘﺮﺳﺸﻬﺎﻱ ﺧﺎﺹ ﻭ ﺟﻬﺖ ﻳﺎﻓﺘﻪ ﻣﻲ ﺗﻮﺍﻥ ﺍﻃﻼﻋﺎﺕ ﻣﻮﺭﺩ ﻧﻈﺮ ﺭﺍ ﺍﺳﺘﻨﺘﺎﺝ
ﻛﺮﺩ .ﺩﺭ ﺑﻌﻀﻲ ﺍﺯ ﭘﺎﻳﮕﺎﻩ ﺩﺍﺩﻩ ﻫﺎ ﻛﺎﺭﺑﺮﺍﻥ ﻓﻘﻂ ﺍﺟﺎﺯﻩ ﺑﺎﺯﻳﺎﺑﻲ ﺩﺍﺩﻩ ﻫﺎﻱ ﺁﻣﺎﺭﻱ )ﻣﺜﻞ ﻣﻴﺎﻧﮕﻴﻦ،
ﺣﺎﺻﻞ ﺟﻤﻊ ،ﺗﻌﺪﺍﺩ ،ﻣﺎﻛﺰﻳﻤﻢ ﻭ (...ﺭﺍ ﺩﺍﺭﻧﺪ ﻭ ﺣﻖ ﺩﺳﺘﺮﺳﻲ ﻣﺴﺘﻘﻴﻢ ﺑﻪ ﺩﺍﺩﻩ ﻫﺎﻱ ﻣﻨﻔﺮﺩ
ﭘﺎﻳﮕﺎﻩ ﺩﺍﺩﻩ ﻫﺎ ﺭﺍ ﻧﺪﺍﺭﻧﺪ .ﺩﺭ ﭼﻨﻴﻦ ﭘﺎﻳﮕﺎﻫﻲ ﻣﻤﻜﻦ ﺍﺳﺖ ﻣﺸﻜﻼﺗﻲ ﺑﻮﺟﻮﺩ ﺑﻴﺎﻳﺪ .
ﻣﺜﺎﻝ:
64
ﺭﺍﺑﻄﻪ PERSONﺭﺍ ﺩﺭ ﻧﻈﺮ ﺑﮕﻴﺮﻳﺪ:
)PERSON (NAME, SSN, INCOME, ADDRESS, CITY, STATE, ZIP, SEX, LAST_DEGRE
ﺣﺎﻝ ﺍﮔﺮ ﺑﺨﻮﺍﻫﻴﻢ ﺩﺳﺘﻤﺰﺩ ﻛﺎﺭﻣﻨﺪ eﺭﺍ ﭘﻴﺪﺍ ﻛﻨﻴﻢ ﻭ ﺑﺪﺍﻧﻴﻢ ﺍﻭ ﺯﻧﻲ ﺍ ﺳﺖ ﺑﺎ ﻣﺪﺭﻙ ﺩﻛﺘﺮﺍ ﻭ ﺩﺭ ﺷﻬﺮ a
ﺩﺭ ﺍﻳﺎﻟﺖ s1ﺯﻧﺪﮔﻲ ﻣﻲ ﻛﻨﺪ ،ﺩﺭ Q1ﺑﺠﺎﻱ conditionﺷﺮﺍﻳﻂ ﺯﻳﺮ ﺭﺍ ﻗﺮﺍﺭ ﻣﻲ ﺩﻫﻴﻢ:
LAST_DEGREE=phd AND SEX=f AND CITY=a AND STATE= s1
ﺍﮔﺮ ﻧﺘﻴﺠﻪ ﺍﻳﻦ ﭘﺮﺱ ﻭ ﺟﻮ 1ﺑﺎﺷﺪ ﻭ ﻫﻤﻴﻦ ﺷﺮﺍﻳﻂ ﺭﺍ ﺩﺭ Q2ﺍﺳﺘﻔﺎﺩﻩ ﻛﻨﻴﻢ ،ﺩﺳﺘﻤﺰﺩ ﺍﻳﻦ ﻛﺎﺭﻣﻨﺪ
ﺑﺪﺳﺖ ﻣﻲ ﺁﻳﺪ.
ﺣﺘﻲ ﺍﮔﺮ ﻧﺘﻴﺠﻪ ﭘﺮﺱ ﻭ ﺟﻮ 1ﻧﺒﺎﺷﺪ ﻭ ﻋﺪﺩ ﻛﻮﭼﻜﻲ ﻣﺜﻞ 2ﻳﺎ 3ﺑﺎﺷﺪ ،ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ minﻳﺎ
maxﻣﻲ ﺗﻮﺍﻥ ﻣﺤﺪﻭﺩﻩ ﺩﺳﺘﻤﺰﺩ ﻭﻱ ﺭﺍ ﺑﺪﺳﺖ ﺁﻭﺭﺩ.
ﺭﺍﻩ ﺣﻞ:
ﻳﻚ ﺭﺍﻩ ﺑﺮﺍﻱ ﺭﻓﻊ ﺍﻳﻦ ﻣﺸﻜﻞ ﺁﻥ ﺍﺳﺖ ﻛﻪ ﻳﻚ ﺣﺪ ﺁﺳﺘﺎﻧﻪ ﺑﺮﺍﻱ ﺗﺎﭘﻞ ﻫﺎ ﺩﺭ ﻧﻈﺮ ﺑﮕﻴﺮﻳﻢ ﻭ ﺍﮔﺮ
ﻧﺘﻴﺠﻪ ﺍﺯ ﺍﻳﻦ ﺣﺪ ﻛﻤﺘﺮ ﺍﺳﺖ ﺟﻠﻮﻱ ﺍﻧﺠﺎﻡ ﭘﺮﺳﺶ ﺭﺍ ﺑﮕﻴﺮﻳﻢ .
ﺭﺍﻩ ﺩﻳﮕﺮ ﻣﻤﺎﻧﻌﺖ ﺍﺯ ﺍﺟﺮﺍﻱ ﺩﻧﺒﺎﻟﻪ ﺍﻱ ﺍﺯ ﭘﺮﺳﺶ ﻫﺎﺳﺖ ﻛﻪ ﻣﻜﺮﺭﺍ ﺑﻪ ﺟﻤﻌﻴﺖ ﺛﺎﺑﺘﻲ ﺍﺯ ﻳﻚ
ﺭﺍﺑﻄﻪ ﺩﺳﺘﻴﺎﺑﻲ ﭘﻴﺪﺍ ﻣﻲ ﻛﻨﺪ.
ﺩﻳﺪ ﺧﺎﺭﺟﻲ ﺑﻪ ﻣﻨﻈﻮﺭ ﺍﻓﺰﺍﻳﺶ ﺍﻣﻨﻴﺖ ﺩﺭ ﭘﺎﻳﮕﺎﻩ ﺩﺍﺩﻩ ﺍﺳﺘﻔﺎﺩﻩ ﻣﻲ ﺷﻮﺩ ﻭ ﺑﺮﺍﻱ ﻫﺮ ﻛﺎﺭﺑﺮ ﻓﻘﻂ ﻧﻴﺎﺯﻫﺎﻱ
ﺧﺎﺹ ﻭﻱ ﺩﺭ ﺩﻳﺪ ﺧﺎﺭﺟﻲ ﻧﻤﺎﻳﺶ ﺩﺍﺩﻩ ﻣﻲ ﺷﻮﺩ.
65
ﺍﻧﻮﺍﻉ ﺩﻳﺪﮔﺎﻩ
ﺩﻳﺪﮔﺎﻩ ﺳﻄﺮﻱ :ﻓﻘﻂ ﺳﻄﺮﻫﺎﻱ ﺧﺎﺻﻲ ﺍﺯ ﭘﺎﻳﮕﺎﻩ ﺩﺍﺩﻩ ﺭﺍ ﻧﻤﺎﻳﺶ ﻣﻲ ﺩﻫﺪ ﻣﺜﻞ ﺭﻛﻮﺭﺩﻫﺎﻱ ﻳﻚ ﭘﺮﻭﺍﺯ
ﺧﺎﺹ ﻭ ﻳﺎ ﺍﻃﻼﻋﺎﺕ ﺩﺍﻧﺸﺠﻮﻳﺎﻧﻲ ﻛﻪ ﻣﻌﺪﻝ ﺁﻧﻬﺎ ﺑﺎﻻﺗﺮ ﺍﺯ 17ﺍﺳﺖ.
67
ﻓﺼﻞ :5
ﻛﻨﺘﺮﻝ ﻫﻤﺰﻣﺎﻧﻲ
68
ﻛﻨﺘﺮﻝ ﻫﻤﺰﻣﺎﻧﻲ
ﻳﻚ ﻗﻔﻞ ﺳﺎﺯﻭﻛﺎﺭﻱ ﺑﺮﺍﻱ ﻛﻨﺘﺮﻝ ﺩﺳﺘﺮﺳﻲ ﻫﻤﺰﻣﺎﻥ ﺑﻪ ﻳﻚ ﺑﺨﺶ ﺩﺍﺩﻩ ﺍﺳﺖ.
ﺑﺨﺶ ﻫﺎﻱ ﺩﺍﺩﻩ ﺭﺍ ﻣﻲ ﺗﻮﺍﻥ ﺩﺭ ﺩﻭ ﺣﺎﻟﺖ ﻗﻔﻞ ﺷﺪﻩ ﻗﺮﺍﺭ ﺩﺍﺩ :
ﺣﺎﻟﺖ ﺍﻧﺤﺼﺎﺭﻱ ): (Xﺑﺨﺶ ﺩﺍﺩﻩ ﻣﻲ ﺗﻮﺍﻧﺪ ﺑﻪ 2ﺻﻮﺭﺕ ﺧﻮﺍﻧﺪﻥ ﻭ ﻧﻮﺷﺘﻦ ﻣﻮﺭﺩ ﺍﺳﺘﻔﺎﺩﻩ ﻗﺮﺍﺭ
ﮔﻴﺮﺩ X-lock.ﺑﻪ ﻭﺳﻴﻠﻪ ﻱ ﺩﺳﺘﻮﺭﺍﻟﻌﻤﻞ lock-Xﺑﺮﺍﻱ ﺍﺳﺘﻔﺎﺩﻩ ،ﺩﺭﺧﻮﺍﺳﺖ ﺩﺍﺩﻩ ﻣﻲ ﺷﻮﺩ.
ﺣﺎﻟﺖ ﻣﺸﺘﺮﻙ ) : (Sﺑﺨﺶ ﺩﺍﺩﻩ ﺩﺭ ﺍﻳﻦ ﺣﺎﻟﺖ ﻓﻘﻂ ﺧﻮﺍﻧﺪﻩ ﻣﻲ ﺷﻮﺩ S-lock .ﺑﻪ ﻭﺳﻲﻟﻪ ﻱ
ﺩﺳﺘﻮﺭﺍﻟﻌﻤﻞ lock-Sﺑﺮﺍﻱ ﺍﺳﺘﻔﺎﺩﻩ ،ﺩﺭﺧﻮﺍﺳﺖ ﺩﺍﺩﻩ ﻣﻲ ﺷﻮﺩ.
ﺩﺭﺧﻮﺍﺳﺖ ﻫﺎﻱ ﻗﻔﻞ ﺑﺮﺍﻱ ﻣﺪﻳﺮﻳﺖ ﻛﻨﺘﺮﻝ ﻫﻤﺰﻣﺎﻧﻲ ﺳﺎﺧﺘﻪ ﺷﺪﻩ ﺍﻧﺪ .ﺗﺮﺍﻛﻨﺶ ﻓﻘﻂ ﭘﺲ ﺍﺯﺍﺧﺬ
ﻣﺠﻮﺯ ﻣﻲ ﺗﻮﺍﻧﺪ ﭘﺮﺩﺍﺯﺵ ﺷﻮﺩ.
69
ﻳﻚ ﺗﺮﺍﻛﻨﺶ ﻣﻲ ﺗﻮﺍﻧﺪ ﻣﺠﻮﺯ ﻗﻔﻞ ﺑﻪ ﻳﻚ ﺑﺨﺶ ﺭﺍ ﺍﻋﻄﺎ ﻛﻨﺪ ﺍﮔﺮ ﻗﻔﻞ ﺩﺭﺧﻮﺍﺳﺖ ﺩﺍﺩﻩ ﺷﺪﻩ ﺑﺎ ﻗﻔﻞ
ﻗﺒﻠﻲ ﺍﺧﺘﺼﺎﺹ ﺩﺍﺩﻩ ﺷﺪﻩ ﺗﻮﺳﻂ ﺗﺮﺍﻛﻨﺶ ﻫﺎﻱ ﺩﻳﮕﺮ ﺳﺎﺯﮔﺎﺭ ﺑﺎﺷﺪ.
ﻫﺮ ﺗﻌﺪﺍﺩ ﺍﺯ ﺗﺮﺍﻛﻨﺶ ﻫﺎ ﻣﻲ ﺗﻮﺍﻧﻨﺪ ﻗﻔﻞ ﻫﺎﻱ ﺑﻪ ﺍﺷﺘﺮﺍﻙ ﮔﺬﺍﺷﺘﻪ ﺷﺪﻩ ﺭﻭﻱ ﻳﻚ ﺑﺨﺶ ﺭﺍ ﻧﮕﻪ
ﺩﺍﺭﻧﺪ.
• ﺍﻣﺎ ﺍﮔﺮ ﻫﺮ ﺗﺮﺍﻛﻨﺸﻲ ﺑﻪ ﺻﻮﺭﺕ ﺍﻧﺤﺼﺎﺭﻱ ﺩﺭ ﻳﻚ ﺑﺨﺶ ﻧﮕﻬﺪﺍﺭﻱ ﺑﺸﻮﺩ ﺳﺎﻳﺮ ﺗﺮﺍﻛﻨﺶ ﻫﺎ
ﻧﻤﻲ ﺗﻮﺍﻧﻨﺪ ﻫﺮ ﻗﻔﻠﻲ ﺭﺍ ﺩﺭ ﺁﻥ ﺑﺨﺶ ﻧﮕﻪ ﺩﺍﺭﻧﺪ.
ﺍﮔﺮ ﻳﻚ ﻗﻔﻞ ﻧﺘﻮﺍﻧﺪ ﺍﺧﺬ ﻣﺠﻮﺯ ﻛﻨﺪ ،ﺗﺮﺍﻛﻨﺶ ﻳﻚ ﺩﺭﺧﻮﺍﺳﺖ ﺣﺎﻟﺖ ﺍﻧﺘﻈﺎﺭ ﺍﻳﺠﺎﺩ ﻣﻲ ﻛﻨﺪ ﺗﺎ ﻭﻗﺘﻲ
ﻛﻪ ﻫﻤﻪ ﻱ ﻗﻔﻞ ﻫﺎﻱ ﻧﺎﺳﺎﺯﮔﺎﺭﻧﮕﻪ ﺩﺍﺷﺘﻪ ﺷﺪﻩ ﺗﻮﺳﻂ ﺳﺎﻳﺮ ﺗﺮﺍﻛﻨﺶ ﻫﺎ ﺁﺯﺍﺩ ﺷﻮﻧﺪ ﺁﻧﮕﺎﻩ ﻣﺠﻮﺯ
ﻗﻔﻞ ﺻﺎﺩﺭ ﻣﻲ ﺷﻮﺩ.
70
ﻗﺴﻤﺘﻲ ﺍﺯ ﺍﻳﻦ ﺑﺮﻧﺎﻣﻪ ﺭﺍ ﺩﺭ ﻧﻈﺮ ﺑﮕﻴﺮﻳﺪ
ﻧﻪ T3ﻭ ﻧﻪ T4ﻧﻤﻲ ﺗﻮﺍﻧﻨﺪ ﺍﺩﺍﻣﻪ ﭘﻴﺪﺍ ﻛﻨﻨﺪ – ﺍﺟﺮﺍﻱ ) lock-S(Bﺑﺎﻋﺚ ﻣﻲ ﺷﻮﺩ ﻛﻪ T4ﻣﻨﺘﻈﺮ
T3ﺑﺮﺍﻱ ﺁﺯﺍﺩﻛﺮﺩﻥ ﻗﻔﻞ ﺁﻥ ﺭﻭﻱ Bﺑﺎﺷﺪ ،ﺩﺭ ﺣﺎﻟﻲ ﻛﻪ ) lock-X(Aﺑﺎﻋﺚ ﻣﻲ ﺷﻮﺩ ﻛﻪ T3ﻣﻨﺘﻈﺮ
T4ﺑﺮﺍﻱ ﺁﺯﺍﺩﻛﺮﺩﻥ ﻗﻔﻞ ﺁﻥ ﺭﻭﻱ Aﺑﺎﺷﺪ.
ﭼﻨﻴﻦ ﻭﺿﻌﻴﺘﻲ ﺑﻦ ﺑﺴﺖ ﻧﺎﻣﻴﺪﻩ ﻣﻲ ﺷﻮﺩ.
• ﺑﺮﺍﻱ ﺑﺮﻃﺮﻑ ﻛﺮﺩﻥ ﺑﻦ ﺑﺴﺖ ﺍﻭﻝ T3 ،ﻳﺎ T4ﺑﺎﻳﺪ ﺑﺮﮔﺮﺩﺩ ﻭ ﻗﻔﻞ ﻫﺎ ﺭﺍ ﺁﺯﺍﺩ ﻛﻨﺪ.
ﭘﺘﺎﻧﺴﻴﻞ ﺑﺮﺍﻱ ﺑﻦ ﺑﺴﺖ ﺩﺭ ﺍﻛﺜﺮ ﭘﺮﻭﺗﻜﻞ ﻫﺎﻱ ﻗﻔﻞ ﻭﺟﻮﺩ ﺩﺍﺭﺩ .ﺑﻦ ﺑﺴﺖ ﻫﺎ ﻳﻚ ﺿﺮﻭﺭﺕ ﻣﻀﺮ
ﻫﺴﺖﻧﺪ .
ﻗﺤﻄﻲ ﻧﻴﺰ ﺍﻣﻜﺎﻥ ﭘﺬﻳﺮ ﺍﺳﺖ ﺍﮔﺮ ﻣﺪﻳﺮﻳﺖ ﻛﻨﺘﺮﻝ ﻫﻤﺰﻣﺎﻧﻲ ﺑﺪ ﻃﺮﺍﺣﻲ ﺷﺪﻩ ﺑﺎﺷﺪ .ﺑﺮﺍﻱ ﻣﺜﺎﻝ:
• ﻣﻤﻜﻦ ﺍﺳﺖ ﻳﻚ ﺗﺮﺍﻛﻨﺶ ﻣﻨﺘﻈﺮ x-lockﺑﺮ ﺭﻭﻱ ﻳﻚ ﺑﺨﺶ ﺑﺎﺷﺪ ،ﺩﺭ ﺣﺎﻟﻲ ﻛﻪ
ﺗﺮﺍﻛﻨﺶ ﻫﺎﻱ ﺩﻳﮕﺮ ﺩﺭﺧﻮﺍﺳﺖ ﻣﺠﻮﺯ ﺩﺭ s-lockﻫﻤﺎﻥ ﺑﺨﺶ ﺭﺍ ﺩﺍﺷﺘﻪ ﺑﺎﺷﻨﺪ.
• ﺗﺮﺍﻛﻨﺶ ﻫﺎﻱ ﻳﻜﺴﺎﻥ ﺑﻪ ﻃﻮﺭ ﻣﺪﺍﻭﻡ ﺑﻪ ﺩﻟﻴﻞ ﺑﻦ ﺑﺴﺖ ﻩﺏﻋﻘﺐ ﺑﺮ ﻣﻲ ﮔﺮﺩﻧﺪ .
ﻣﺪﻳﺮﻳﺖ ﻛﻨﺘﺮﻝ ﻫﻤﺰﻣﺎﻧﻲ ﺑﺮﺍﻱ ﺟﻠﻮﮔﻴﺮﻱ ﺍﺯ ﻗﺤﻄﻲ ﻃﺮﺍﺣﻲ ﻣﻲ ﺷﻮﺩ.
71
ﺍﻳﻦ ﭘﺮﻭﺗﻜﻞ ﻣﺮﺍﻗﺐ ﺑﺮﻧﺎﻣﻪ ﻫﺎﻱ ﺳﺮﻳﺎﻟﻲ ﻣﺘﻀﺎﺩ ﺍﺳﺖ.
ﻓﺎﺯ : 1ﻓﺎﺯ ﺩﺭ ﺣﺎﻝ ﺭﺷﺪ
• ﺗﺮﺍﻛﻨﺶ ﻣﻤﻜﻦ ﺍﺳﺖ ﻗﻔﻞ ﻫﺎ ﺭﺍ ﺑﻪ ﺩﺳﺖ ﺁﻭﺭﺩ.
• ﺗﺮﺍﻛﻨﺶ ﻣﻤﻜﻦ ﻧﻴﺴﺖ ﻗﻔﻞ ﻫﺎ ﺭﺍ ﺁﺯﺍﺩ ﻛﻨﺪ.
ﻓﺎﺯ : 2ﻛﺎﻫﺶ ﻓﺎﺯ
• ﺗﺮﺍﻛﻨﺶ ﻣﻤﻜﻦ ﺍﺳﺖ ﻗﻔﻞ ﻫﺎ ﺭﺍ ﺁﺯﺍﺩ ﻛﻨﺪ.
• ﺗﺮﺍﻛﻨﺶ ﻣﻤﻜﻦ ﻧﻴﺴﺖ ﻗﻔﻞ ﻫﺎ ﺭﺍ ﺑﻪ ﺩﺳﺖ ﺁﻭﺭﺩ.
ﭘﺮﻭﺗﻜﻞ ﺍﻣﻨﻴﺖ ﺳﺮﻳﺎﻟﻲ،ﻣﻲ ﺗﻮﺍﻧﺪ ﻧﺸﺎﻥ ﺩﻫﺪ ﻛﻪ ﺗﺮﺍﻛﻨﺶ ﻫﺎ ﻣﻲ ﺗﻮﺍﻧﻨﺪ ﺑﻪ ﺻﻮﺭﺕ ﺳﺮﻳﺎﻟﻲ ﺩﺭ
ﻧﻘﺎﻁ ﻗﻔﻞ ﺧﻮﺩ ﻗﺮﺍﺭ ﮔﻴﺮﻧﺪ).ﻧﻘﻄﻪ ﺍﻱ ﻛﻪ ﻳﻚ ﺗﺮﺍﻛﻨﺶ ﺩﺭ ﺁﻥ ﻗﻔﻞ ﻧﻬﺎﻳﻲ ﺭﺍ ﺑﻪ ﺩﺳﺖ ﻣﻲ ﺁﻭﺭﺩ(.
ﻗﻔﻞ ﺩﻭ ﻓﺎﺯ ﺭﻫﺎﻳﻲ ﺍﺯ ﺑﻦ ﺑﺴﺖ ﺭﺍ ﺗﻀﻤﻴﻦ ﻧﻤﻲ ﻛﻨﺪ.
ﻋﻘﺒﮕﺮﺩ ﺁﺑﺸﺎﺭﻱ ﺗﻮﺳﻂ ﻗﻔﻞ 2ﻓﺎﺯ ﺍﻣﻜﺎﻥ ﭘﺬﻳﺮ ﺍﺳﺖ ،ﺑﺮﺍﻱ ﺟﻠﻮﮔﻴﺮﻱ ﺍﺯ ﺍﻳﻦ ﻋﻤﻞ ،ﺑﻪ ﺩﻧﺒﺎﻝ ﻳﻚ
ﭘﺮﻭﺗﻜﻞ ﺍﺻﻼﺡ ﺷﺪﻩ ﺩﻗﻴﻖ 2ﻓﺎﺯ ﻫﺴﺘﻴﻢ .ﺩﺭ ﺍﻳﻦ ﺣﺎﻟﺖ ﻳﻚ ﺗﺮﺍﻛﻨﺶ ﺑﺎﻳﺪ ﺗﻤﺎﻡ ﻗﻔﻞ ﻫﺎﻱ
ﺍﻧﺤﺼﺎﺭﻱ ﺧﻮﺩ ﺭﺍ ﺗﺎ ﺯﻣﺎﻧﻲ ﻛﻪ ﭘﺬﻳﺮﻓﺘﻪ ﻳﺎ ﺑﻲ ﻧﺘﻴﺠﻪ ﻣﻲ ﻣﺎﻧﻨﺪ ﻧﮕﻪ ﺩﺍﺭﺩ.
ﻗﻔﻞ ﺩﻭ ﻓﺎﺯ ﺑﺴﻴﺎﺭ ﺩﻗﻴﻖ ﺍﺳﺖ :ﺩﺭ ﺍﻳﻦ ﺣﺎﻟﺖ ﻫﻤﻪ ﻱ ﻗﻔﻞ ﻫﺎ ﺑﻪ ﺻﻮﺭﺕ ﺗﺄﻳﻴﺪ ﺷﺪﻩ ﻳﺎ ﺑﻲ ﻧﺘﻴﺠﻪ
ﻧﮕﻪ ﺩﺍﺷﺘﻪ ﻣﻲ ﺷﻮﻧﺪ .ﺩﺭ ﺍﻳﻦ ﭘﺮﻭﺗﻜﻞ ،ﺗﺮﺍﻛﻨﺶ ﻫﺎ ﺭﺍ ﻣﻲ ﺗﻮﺍﻥ ﺩﺭ ﺣﺎﻟﺘﻲ ﻛﻪ ﺍﻧﺠﺎﻡ ﻣﻲ ﺷﻮﻧﺪ ﺑﻪ
ﺻﻮﺭﺕ ﺳﺮﻳﺎﻟﻲ ﻗﺮﺍﺭ ﺩﺍﺩ.
ﺑﺮﻧﺎﻣﻪ ﻫﺎﻱ ﺳﺮﻳﺎﻟﻲ ﻣﻲ ﺗﻮﺍﻧﻨﺪ ﺩﺭ ﺗﻀﺎﺩ ﺑﺎﺷﻨﺪ ﻭ ﺍﮔﺮﺍﺯ ﻗﻔﻞ 2ﻓﺎﺯ ﺍﺳﺘﻔﺎﺩﻩ ﺷﻮﺩ ﻧﻤﻲ ﺗﻮﺍﻧﻨﺪ ﺑﻪ
ﺩﺳﺖ ﺑﻴﺎﻳﻨﺪ.
ﺑﺎ ﺍﻳﻦ ﺣﺎﻝ ،ﺑﻪ ﺩﻟﻴﻞ ﻧﺒﻮﺩ ﺍﻃﻼﻋﺎﺕ ﺍﺿﺎﻓﻲ )ﺑﻪ ﻋﻨﻮﺍﻥ ﻣﺜﺎﻝ ،ﺩﺳﺘﻮﺭﺩﺳﺘﺮﺳﻲ ﺑﻪ ﺩﺍﺩﻩ ﻫﺎ( ،ﻗﻔﻞ ﺩﻭ
ﻓﺎﺯ ﺑﺮﺍﻱ ﺗﻀﺎﺩﻫﺎﻱ ﺳﺮﻳﺎﻟﻲ ﺩﺭ ﻣﻔﻬﻮﻡ ﻧﺸﺎﻥ ﺩﺍﺩﻩ ﺷﺪﻩ ﺩﺭ ﺯﻳﺮ ﻣﻮﺭﺩ ﻧﻴﺎﺯ ﺍﺳﺖ:
ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ ﺍﻳﻨﻜﻪ ﺗﺮﺍﻛﻨﺶ Tiﺍﺯ ﻗﻔﻞ ﺩﻭ ﻓﺎﺯ ﺍﺳﺘﻔﺎﺩﻩ ﻧﻤﻲ ﻛﻨﺪ ،ﻣﺎ ﻣﻲ ﺗﻮﺍﻧﻴﻢ ﻳﻚ ﺗﺮﺍﻛﻨﺶ Tj
ﻛﻪ ﺍﺯ ﻗﻔﻞ 2ﻓﺎﺯ ﺍﺳﺘﻔﺎﺩﻩ ﻣﻲ ﻛﻨﻨﺪ ﺭﺍ ﭘﻴﺪﺍ ﻛﻨﻴﻢ ،ﻭ ﺑﺮﻧﺎﻣﻪ ﺍﻱ ﺑﺮﺍﻱ Tiﻭ Tjﻃﺮﺍﺣﻲ ﻛﻨﻴﻢ ﻛﻪ
ﺩﺍﺭﺍﻱ ﺗﻀﺎﺩ ﺳﺮﻳﺎﻟﻲ ﻧﺒﺎﺷﺪ.
ﺗﺒﺪﻳﻼﺕ ﻗﻔﻞ
72
-ﻣﺮﺣﻠﻪ ﺍﻭﻝ :
ﺩﺭ ﺗﺮﺍﻛﻨﺶ Tiﻳﻚ ﻣﻮﺿﻮﻉ ،ﺩﺳﺘﻮﺭﺍﻟﻌﻤﻞ ﻫﺎﻱ ﺍﺳﺘﺎﻧﺪﺍﺭﺩ ﺧﻮﺍﻧﺪﻥ /ﻧﻮﺷﺘﻦ ﺍﺳﺖ .ﺑﺪﻭﻥ
ﺩﺭﺧﻮﺍﺳﺖ ﺁﺷﻜﺎﺭ ﻗﻔﻞ
ﻋﻤﻠﻜﺮﺩ ) read(Dﻣﺎﻧﻨﺪ ﭘﺮﺩﺍﺯﺵ ﺯﻳﺮ ﺍﺳﺖ:
then
)read(D
else begin
)read(D
73
end
then
)write(D
else begin
if necessary wait until no other trans. has any lock on D,
then
else
)write(D
;end
ﺍﺯ ﻣﺪﻳﺮ ﻗﻔﻞ ﻣﻲ ﺗﻮﺍﻥ ﺑﻪ ﻋﻨﻮﺍﻥ ﻳﻚ ﻓﺮﺁﻳﻨﺪ ﺟﺪﺍﮔﺎﻧﻪ ﻛﻪ ﺗﺮﺍﻛﻨﺶ ﻫﺎﻱ ﺍﺭﺳﺎﻝ ﻗﻔﻞ ﻭ ﺑﺎﺯﻛﺮﺩﻥ
ﺩﺭﺧﻮﺍﺳﺖ ﺭﺍ ﺍﻧﺠﺎﻡ ﻣﻲ ﺩﻫﺪ ﺍﺳﺘﻔﺎﺩﻩ ﻛﺮﺩ.
ﻣﺪﻳﺮ ﻗﻔﻞ ﺑﻪ ﺩﺭﺧﻮﺍﺳﺖ ﻗﻔﻞ ﺑﺎ ﺍﺭﺳﺎﻝ ﭘﻴﺎﻡ ﻫﺎﻱ ﻣﺠﻮﺯ ﻗﻔﻞ)ﻳﺎ ﻳﻚ ﭘﻴﺎﻡ ﺩﺭﺧﻮﺍﺳﺖ ﺍﺯ ﺗﺮﺍﻛﻨﺶ
ﺑﺮﮔﺸﺘﻲ ،ﺩﺭ ﺻﻮﺭﺕ ﺑﻦ ﺑﺴﺖ(ﭘﺎﺳﺦ ﻣﻲ ﺩﻫﺪ.
ﺩﺭﺧﻮﺍﺳﺖ ﺗﺮﺍﻛﻨﺶ ﻣﻨﺘﻈﺮ ﻣﻲ ﻣﺎﻧﺪ ﺗﺎ ﺑﻪ ﺩﺭﺧﻮﺍﺳﺘﺶ ﭘﺎﺳﺦ ﺩﺍﺩﻩ ﺷﻮﺩ.
74
ﻣﺪﻳﺮ ﻗﻔﻞ ﺳﺎﺧﺘﺎﺭ ﺩﺍﺩﻩ ﻫﺎ ﺭﺍ ﺩﺭ ﻳﻚ ﺟﺪﻭﻝ ﻛﻪ ﺟﺪﻭﻝ ﻗﻔﻞ ﻧﺎﻣﻴﺪﻩ ﻣﻲ ﺷﻮﺩ ﺑﺮﺍﻱ ﺿﺒﻂ ﻣﺠﻮﺯ
ﻗﻔﻞ ﻫﺎ ﻭ ﺩﺭﺧﻮﺍﺳﺖ ﻫﺎﻱ ﺩﺭ ﺣﺎﻝ ﺍﻧﺘﻈﺎﺭ ﺫﺧﻴﺮﻩ ﻣﻲ ﻛﻨﺪ.
ﺟﺪﻭﻝ ﻗﻔﻞ ﺍﺳﺖ ﻣﻌﻤﻮﻻ ﺑﻪ ﻋﻨﻮﺍﻥ ﻳﻚ ﺟﺪﻭﻝ hashﺑﺮﺭﻭﻱ ﻓﻬﺮﺳﺖ ﻧﺎﻡ ﺑﺨﺸﻲ ﺍﺯ ﺩﺍﺩﻩ ﻫﺎﻱ
ﻗﻔﻞ ﺷﺪﻩ ﺩﺭ ﺣﺎﻓﻈﻪ ﭘﻴﺎﺩﻩ ﺳﺎﺯﻱ ﻣﻲ ﺷﻮﺩ.
ﺟﺪﻭﻝ ﻗﻔﻞ
ﻣﺴﺘﻄﻴﻞ ﻫﺎﻱ ﺳﻴﺎﻩ ﻗﻔﻞ ﻫﺎﻱ ﻣﺠﻮﺯ ﺩﺍﺩﻩ ﺷﺪﻩ ،ﻭ ﺁﻧﻬﺎﻳﻲ ﻛﻪ ﺳﻔﻴﺪ ﻫﺴﺘﻨﺪ ﺩﺭﺧﻮﺍﺳﺖ ﻫﺎﻱ ﺩﺭ
ﺣﺎﻝ ﺍﻧﺘﻈﺎﺭ ﺭﺍ ﻧﺸﺎﻥ ﻣﻲ ﺩﻫﻨﺪ.
ﺟﺪﻭﻝ ﻗﻔﻞ ﻫﻤﭽﻨﻴﻦ ﺳﻮﺍﺑﻖ ﻧﻮﻉ ﻣﺠﻮﺯ ﻗﻔﻞ ﻭ ﻳﺎ ﺩﺭﺧﻮﺍﺳﺖ ﺭﺍ ﻧﺸﺎﻥ ﻣﻲ ﺩﻫﺪ.
ﺩﺭﺧﻮﺍﺳﺖ ﻫﺎﻱ ﺟﺪﻳﺪ ﺑﻪ ﺍﻧﺘﻬﺎﻱ ﺻﻒ ﺩﺭﺧﻮﺍﺳﺖ ﻫﺎﻱ ﺑﺨﺶ ﺩﺍﺩﻩ ﺍﺿﺎﻓﻪ ﻣﻲ ﺷﻮﺩ ،ﻣﺴﻠﻤﺎً ﺑﻪ
ﻃﻮﺭ ﭘﻴﺶ ﻓﺮﺽ ﺑﺎﺗﻤﺎﻡ ﻗﻔﻞ ﻫﺎﻱ ﻗﺒﻠﻲ ﺳﺎﺯﮔﺎﺭ ﺍﺳﺖ.
ﻗﻔﻞ ﮔﺸﺎﻳﻲ ﻧﺘﻴﺠﻪ ﻱ ﺩﺭﺧﻮﺍﺳﺖ ﻫﺎ ﺩﺭ ﺑﻴﻦ ﺩﺭﺧﻮﺍﺳﺖ ﻫﺎﻱ ﺣﺬﻑ ﺷﺪﻩ ﺍﻧﺠﺎﻡ ﻣﻲ ﺷﻮﺩ،
ﺩﺭﺧﻮﺍﺳﺖ ﻫﺎﻱ ﺑﻌﺪﻱ ﺑﺮﺍﻱ ﺁﻧﻜﻪ ﺑﺒﻴﻨﻴﻢ ﻣﺠﻮﺯ ﺩﺍﺭﻧﺪ ﭼﻚ ﻣﻲ ﺷﻮﻧﺪ.
ﺍﮔﺮ ﺗﺮﺍﻛﻨﺶ ﺑﻪ ﻧﺘﻴﺠﻪ ﻧﺮﺳﺪ ،ﻫﻤﻪ ﻱ ﺩﺭﺧﻮﺍﺳﺖ ﻫﺎﻱ ﺩﺭ ﺣﺎﻝ ﺍﻧﺘﻈﺎﺭ ﻳﺎ ﺩﺭﺧﻮﺍﺳﺖ ﻣﺠﻮﺯ ﺣﺬﻑ
ﻣﻲ ﺷﻮﻧﺪ.
• ﻣﺪﻳﺮ ﻗﻔﻞ ﻣﻤﻜﻦ ﺍﺳﺖ ﻟﻴﺴﺘﻲ ﺍﺯ ﻗﻔﻞ ﻫﺎﻱ ﻧﮕﻪ ﺩﺍﺷﺘﻪ ﺷﺪﻩ ﺗﻮﺳﻂ ﻫﺮ ﺗﺮﺍﻛﻨﺶ ﺭﺍ
ﻧﮕﻬﺪﺍﺭﻱ ﻛﻨﺪ ﻛﻪ ﺑﺮﺍﻱ ﭘﻴﺎﺩﻩ ﺳﺎﺯﻱ ﻣﺆﺛﺮ ﺍﺳﺖ.
75
ﭘﺮﻭﺗﻜﻞ ﻫﺎﻱ ﻣﺐﺗﻨﻲ ﺑﺮ ﻗﻔﻞ
ﭘﺮﻭﺗﻜﻞ ﺩﺭﺧﺖ
76
.1ﺗﻨﻬﺎ ﻗﻔﻞ ﻫﺎﻱ ﺍﻧﺤﺼﺎﺭﻱ ﺍﻣﻜﺎﻥ ﭘﺬﻳﺮ ﺍﺳﺖ.
.2ﺍﻭﻟﻴﻦ ﻗﻔﻞ ﻣﻤﻜﻦ ﺍﺳﺖ ﺗﻮﺳﻂ Tiﺑﻪ ﺗﻤﺎﻡ ﺑﺨﺶ ﻫﺎﻱ ﺩﺍﺩﻩ ﺍﺧﺘﺼﺎﺹ ﺩﺍﺩﻩ ﺷﻮﺩ ،ﭘﺲ ﺍﺯ ﺁﻥ ،ﻳﻚ ﺩﺍﺩﻩ Q
ﻣﻲ ﺗﻮﺍﻧﺪ ﺗﻮﺳﻂ Tiﻗﻔﻞ ﺷﻮﺩ ﻓﻘﻂ ﺩ ﺭﺻﻮﺭﺗﻲ ﻛﻪ ﻭﺍﻟﺪ Qﺑﻪ ﺩﺭﺳﺘﻲ ﺗﻮﺳﻂ Tiﻗﻔﻞ ﺷﺪﻩ ﺑﺎﺷﺪ.
.4ﻳﻚ ﺑﺨﺶ ﺩﺍﺩﻩ ﻛﻪ ﺗﻮﺳﻂ Tiﻗﻔﻞ ﮔﺬﺍﺭﻱ ﻭ ﻗﻔﻞ ﮔﺸﺎﻳﻲ ﺷﺪﻩ ﺍﺳﺖ ﻧﻤﻲ ﺗﻮﺍﻧﺪ ﻣﺘﻌﺎﻗﺒﺎً ﺗﻮﺳﻂ Tiﻣﺠﺪﺩ
ﻗﻔﻞ ﮔﺬﺍﺭﻱ ﺷﻮﺩ.
77
• ﺗﺮﺍﻛﻨﺶ ﻫﺎ ﻣﻤﻜﻦ ﺍﺳﺖ ﻗﻔﻞ ﺑﺨﺶ ﻫﺎﻱ ﺩﺍﺩﻩ ﺍﻱ ﺭﺍﺩﺍﺷﺘﻪ ﺑﺎﺷﻨﺪ ﻛﻪ ﺑﻪ ﺁﻧﻬﺎ ﺩﺳﺘﺮﺳﻲ
ﻧﺪﺍﺭﻧﺪ.
ﺍﻓﺰﺍﻳﺶ ﺳﺮﺭﻳﺰ ﻗﻔﻞ ،ﻭ ﺯﻣﺎﻥ ﺍﻧﺘﻈﺎﺭ ﺍﺿﺎﻓﻲ
ﭘﺘﺎﻧﺴﻴﻞ ﻛﺎﻫﺶ ﻫﻤﺰﻣﺎﻧﻲ
ﺑﺮﻧﺎﻣﻪ ﻫﺎ ﺗﺤﺖ ﻗﻔﻞ ﺩﻭ ﻓﺎﺯﺍﻣﻜﺎﻥ ﭘﺬﻳﺮ ﻧﻴﺴﺘﻨﺪ ﻭ ﺑﺎﻟﻌﻜﺲ ﺗﺤﺖ ﭘﺮﻭﺗﻜﻞ ﺩﺭﺧﺖ ﺍﻣﻜﺎﻥ ﭘﺬﻳﺮ
ﻫﺴﺘﻨﺪ.
ﻣﺠﻮﺯ ﺑﺨﺶ ﻫﺎﻱ ﺩﺍﺩﻩ ﺑﻪ ﺍﻧﺪﺍﺯﻩ ﻫﺎﻱ ﻣﺨﺘﻠﻒ ﻭ ﺗﻌﺮﻳﻒ ﺳﻠﺴﻠﻪ ﻣﺮﺍﺗﺐ ﺑﺨﺶ ﺑﻪ ﺑﺨﺶ ﺁﻧﻬﺎﺳﺖ،
ﻗﺴﻤﺘﻬﺎﻱ ﺑﺨﺶ ﺑﻪ ﺑﺨﺶ ﻛﻮﭼﻜﺘﺮ ﺩﺭ ﺩﺭﻭﻥ ﺑﺰﺭﮔﺘﺮﻫﺎ ﻗﺮﺍﺭ ﻣﻲ ﮔﻴﺮﻧﺪ.
ﮔﺮﺍﻓﻴﻚ ﻫﺎ ﺭﺍ ﻣﻲ ﺗﻮﺍﻥ ﺑﻪ ﻋﻨﻮﺍﻥ ﻳﻚ ﺩﺭﺧﺖ ﻧﺸﺎﻥ ﺩﺍﺩ )ﺍﻣﺎ ﺑﺎ ﭘﺮﻭﺗﻜﻞ ﻗﻔﻞ ﺩﺭﺧﺖ ﺩﺭﺳﺖ ﻧﻴﺴﺖ(
ﻭﻗﺘﻲ ﻛﻪ ﺗﺮﺍﻛﻨﺶ ﻗﻔﻞ ﻫﺎﻱ ﻳﻚ ﮔﺮﻩ ﺩﺭ ﺩﺭﺧﺖ ﺑﻪ ﺩﺭﺳﺘﻲ ﻗﺮﺍﺭ ﺩﺍﺭﺩ ،ﻣﻄﻤﺌﻨﺎً ﻫﻤﻪ ﻱ ﺑﺨﺶ ﻫﺎﻱ
ﮔﺮﻩ ﺩﺭ ﻫﻤﺎﻥ ﺣﺎﻟﺖ ﻗﺮﺍﺭ ﻣﻲ ﮔﻴﺮﻧﺪ.
ﺧﻮﺷﻪ ﺑﻨﺪﻱ ﻗﻔﻞ ) :ﺳﻄﺤﻲ ﺩﺭ ﺩﺭﺧﺖ ﻛﻪ ﺩﺭ ﺁﻥ ﻗﻔﻞ ﺍﻧﺠﺎﻡ ﺷﺪﻩ ﺍﺳﺖ(
• ﺧﻮﺷﻪ ﺑﻨﺪﻱ ﺧﻮﺏ )ﭘﺎﻳﻴﻦ ﺗﺮ ﺩﺭ ﺩﺭﺧﺖ( :ﻫﻤﺰﻣﺎﻧﻲ ﺑﺎﻻ ،ﺳﺮﺑﺎﺭ ﻗﻔﻞ ﺑﺎﻻ
• ﺧﻮﺷﻪ ﺑﻨﺪﻱ ﺩﺭﺷﺖ )ﺩﺭ ﺩﺭﺧﺖ ﺑﺎﻻﺗﺮ( :ﻗﻔﻞ ﺳﺮﺑﺎﺭ ﻛﻢ ،ﻫﻤﺰﻣﺎﻧﻲ ﻛﻢ
78
ﺳﻄﻮﺡ ﺍﺯ ﺑﺎﻻﺗﺮﻳﻦ ﺳﻄﺢ ﺷﺮﻭﻉ ﻣﻲ ﺷﻮﺩ ﻛﻪ ﻋﺒﺎﺭﺗﻨﺪ ﺍﺯ :
• ﭘﺎﻳﮕﺎﻩ ﺩﺍﺩﻩ
• ﻧﺎﺣﻴﻪ
• ﭘﻮﺷﻪ
• ﺳﻮﺍﺑﻖ
ﻋﻼﻭﻩ ﺑﺮ ﺣﺎﻟﺖ ﻫﺎﻱ ﻗﻔﻞ Sﻭ ،Xﺳﻪ ﺣﺎﻟﺖ ﻗﻔﻞ ﻫﺎﻱ ﺍﺿﺎﻓﻲ ﺑﺎ ﺧﻮﺷﻪ ﺑﻨﺪﻱ ﻣﺘﻌﺪﺩ ﻭﺟﻮﺩ ﺩﺍﺭﺩ:
• ﻣﻔﻬﻮﻡ ﺍﺷﺘﺮﺍﻙ) : (ISﻗﻔﻞ ﺻﺤﻴﺢ ﺑﺨﺶ ﭘﺎﻳﻴﻨﻲ ﺩﺭﺧﺖ ﺭﺍ ﻧﺸﺎﻥ ﻣﻲ ﺩﻫﺪ ﺍﻣﺎ ﻓﻘﻂ ﺑﺮﺍﻱ
ﻗﻔﻞ ﻫﺎﻱ ﺑﻪ ﺍﺷﺘﺮﺍﻙ ﮔﺬﺍﺷﺘﻪ ﺷﺪﻩ .
• ﻣﻔﻬﻮﻡ ﺍﻧﺤﺼﺎﺭﻱ ) : (IXﻗﻔﻞ ﺻﺤﻴﺢ ﺑﺨﺶ ﭘﺎﻳﻴﻨﻲ ﺩﺭﺧﺖ ﺑﺎ ﻗﻔﻞ ﻫﺎﻱ ﺍﻧﺤﺼﺎﺭﻱ ﻳﺎ
ﺍﺷﺘﺮﺍﻛﻲ ﺭﺍ ﻧﺸﺎﻥ ﻣﻲ ﺩﻫﺪ.
• ﻣﻔﻬﻮﻡ ﺍﻧﺤﺼﺎﺭﻱ ﻭ ﺍﺷﺘﺮﺍﻛﻲ ) : (SIXﺭﻳﺸﻪ ﻫﺎﻱ ﺯﻳﺮﻳﻦ ﺩﺭﺧﺖ ﺗﻮﺳﻂ ﺑﺨﺶ ﻫﺎﻳﻲ ﻛﻪ ﺑﻪ
ﺩﺭﺳﺘﻲ ﻗﻔﻞ ﺷﺪﻩ ﺍﻧﺪ ﺩﺭ ﺣﺎﻟﺖ ﺍﺷﺘﺮﺍﻛﻲ ﻭ ﻗﻔﻞ ﻫﺎﻱ ﺩﺭﺳﺖ ﺍﻣﺎ ﺩﺭ ﻳﻚ ﺳﻄﺢ ﭘﺎﻳﻴﻦ ﺗﺮ
ﺩﺭ ﺣﺎﻟﺖ ﻗﻔﻞ ﻫﺎﻱ ﺍﻧﺤﺼﺎﺭﻱ ﺍﻧﺠﺎﻡ ﻣﻲ ﺷﻮﻧﺪ.
ﻣﻔﻬﻮﻡ ﻣﺠﻮﺯ ﻗﻔﻞ ﻫﺎ ﺩﺭ ﮔﺮﻩ ﻫﺎﻱ ﺳﻄﺢ ﺑﺎﻻﺗﺮ ﻳﻌﻨﻲ ﺩﺭ ﺣﺎﻟﺖ Sﻳﺎ Xﺑﺪﻭﻥ ﻧﻴﺎﺯ ﺑﻪ ﺑﺮﺭﺳﻲ ﻫﻤﻪ
ﻱ ﮔﺮﻩ ﻫﺎﻱ ﺑﻌﺪﻱ ﻗﻔﻞ ﻣﻲ ﺷﻮﺩ.
79
SIX √ × × × ×
ﺗﺮﺍﻛﻨﺶ Tiﻣﻲ ﺗﻮﺍﻥ ﻳﻚ ﮔﺮﻩ Qﺭﺍ ﻗﻔﻞ ﻛﻨﺪ ،ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﻗﻮﺍﻧﻴﻦ ﺯﻳﺮ:
.2ﺭﻳﺸﻪ ﺩﺭﺧﺖ ﺑﺎﻳﺪ ﺩﺭ ﺍﺑﺘﺪﺍ ﻗﻔﻞ ﺷﻮﺩ ،ﻣﻤﻜﻦ ﺍﺳﺖ ﺩﺭ ﻫﺮ ﺣﺎﻟﺖ ﻗﻔﻞ ﺷﻮﺩ.
.3ﮔﺮﻩ Qﻣﻲ ﺗﻮﺍﻧﺪ ﺗﻮﺳﻂ Tiﺩﺭﺣﺎﻟﺖ sﻳﺎ Isﻗﻔﻞ ﺷﻮﺩ ،ﻓﻘﻂ ﺩﺭ ﺻﻮﺭﺗﻲ ﻛﻪ ﻭﺍﻟﺪ Qﺑﻪ ﺩﺭﺳﺘﻲ
ﺗﻮﺳﻂ Tiﺩﺭ ﻫﺮ ﻳﻚ ﺍﺯ ﺣﺎﻻﺕ IXﻳﺎ ISﻗﻔﻞ ﺷﺪﻩ ﺑﺎﺷﺪ.
.4ﻳﻚ ﮔﺮﻩ Qﻣﻲ ﺗﻮﺍﻧﺪ ﺗﻮﺳﻂ Tiﺩﺭ ﺣﺎﻟﺖ SIX ،xﻳﺎ IXﻗﻔﻞ ﺷﻮﺩ ﻓﻘﻂ ﺍﮔﺮ ﻭﺍﻟﺪ Qﺑﻪ ﺩﺭﺳﺘﻲ
ﺗﻮﺳﻂ Tiﺩﺭ ﺣﺎﻟﺖ ﻫﺎﻱ IXﻳﺎ SIXﻗﻔﻞ ﺷﺪﻩ ﺑﺎﺷﺪ.
TI .6ﻣﻲ ﺗﻮﺍﻧﺪ ﮔﺮﻩ Qﺭﺍ ﺑﺎﺯ ﻛﻨﺪ ﺗﻨﻬﺎ ﺩﺭ ﺻﻮﺗﻲ ﻛﻪ ﻫﻴﭻ ﻳﻚ ﺍﺯ ﻓﺮﺯﻧﺪﺍﻥ Qﺩﺭ ﺣﺎﻝ ﺣﺎﺿﺮ ﺗﻮﺳﻂ
TIﻗﻔﻞ ﻧﺸﺪﻩ ﺑﺎﺷﻨﺪ.
ﻫﻤﺎﻥ ﻃﻮﺭ ﻛﻪ ﻣﺸﺎﻫﺪﻩ ﻣﻲ ﻛﻨﻴﺪ ﻗﻔﻞ ﻫﺎ ﺍﺯ ﺭﻳﺸﻪ ﺑﻪ ﺑﺮگ ﺑﻪ ﺩﺳﺖ ﻣﻲ ﺁﻳﻨﺪ ،ﺩﺭ ﺣﺎﻟﻲ ﻛﻪ ﺁﻧﻬﺎ ﺍﺯ
ﺑﺮگ ﺑﻪ ﺭﻳﺸﻪ ﺁﺯﺍﺩ ﻣﻲ ﺷﻮﻧﺪ.
)write(Y )write(X
80
ﺑﺮﻧﺎﻣﻪ ﺑﺎ ﺑﻦ ﺑﺴﺖ
T1 T2
lock-X on X
)write (X
lock-X on Y
)write (Y
wait for lock-X on X
ﺳﻴﺴﺘﻢ ﺑﻪ ﺑﻦ ﺑﺴﺖ ﻣﻲ ﺭﺳﺪ ﺍﮔﺮ ﻣﺠﻤﻮﻋﻪ ﺍﻱ ﺍﺯ ﺗﺮﺍﻛﻨﺶ ﻫﺎ ﻃﻮﺭﻱ ﻗﺮﺍﺭ ﺑﮕﻴﺮﻧﺪ ﻛﻪ ﻫﺮ ﺗﺮﺍﻛﻨﺶ
ﺩﺭ ﻣﺠﻤﻮﻋﻪ ﻣﻨﺘﻈﺮ ﺗﺮﺍﻛﻨﺶ ﺩﻳﮕﺮ ﺁﻥ ﻣﺠﻤﻮﻋﻪ ﺑﺎﺷﺪ.
ﭘﺮﻭﺗﻜﻞ ﻫﺎﻱ ﭘﻴﺸﮕﻴﺮﻱ ﺍﺯ ﺑﻦ ﺑﺴﺖ ﺍﻳﻦ ﺍﻃﻤﻴﻨﺎﻥ ﺭﺍ ﺣﺎﺻﻞ ﻣﻲ ﻛﻨﻨﺪ ﻛﻪ ﺳﻴﺴﺘﻢ ﻫﺮﮔﺰ ﺑﻪ ﺣﺎﻟﺖ
ﺑﻦ ﺑﺴﺖ ﻭﺍﺭﺩ ﻧﻤﻲ ﺷﻮﺩ .ﺑﻌﻀﻲ ﺍﺯ ﺭﺍﻫﺒﺮﺩﻫﺎﻱ ﭘﻴﺸﮕﻴﺮﻱ :
• ﻧﻴﺎﺯ ﺍﺳﺖ ﻛﻪ ﻫﻤﻪ ﻱ ﻗﻔﻞ ﻫﺎﻱ ﻫﺮ ﺗﺮﺍﻛﻨﺶ ﺩﺭ ﺑﺨﺶ ﻫﺎﻱ ﺩﺍﺩﻩ ﻗﺒﻞ ﺍﺯ ﺁﻏﺎﺯ ﺑﺮﺭﺳﻲ
ﺷﻮﻧﺪ)ﺍﻃﻼﻉ ﺭﺳﺎﻧﻲ(
• ﻣﺮﺗﺐ ﺳﺎﺯﻱ ﺑﺨﺸﻲ ﺍﺯ ﺗﻤﺎﻡ ﺑﺨﺶ ﻫﺎﻱ ﺍﻃﻼﻋﺎﺕ ﻭ ﻟﺰﻭﻡ ﺍﻳﻦ ﻛﻪ ﻳﻚ ﺗﺮﺍﻛﻨﺶ ﻓﻘﻂ ﺩﺭ
ﺑﺨﺶ ﻫﺎﻱ ﻣﺸﺨﺺ ﺷﺪﻩ ﺑﺘﻮﺍﻧﺪ ﺑﺨﺶ ﺭﻭﻱ ﺩﺍﺩﻩ ﺭﺍ ﻗﻔﻞ ﻛﻨﺪ)ﭘﺮﻭﺗﻜﻞ ﺑﺮ ﭘﺎﻳﻪ ﻱ ﮔﺮﺍﻑ(
81
ﺑﺮﻧﺎﻣﻪ ﻫﺎﻱ ﺍﺷﺎﺭﻩ ﺷﺪﻩ ﺗﻨﻬﺎ ﺑﺮﺍﻱ ﭘﻴﺸﮕﻴﺮﻱ ﺍﺯ ﺑﻦ ﺑﺴﺖ ﺍﺯ ﺑﺮﭼﺴﺐ ﻫﺎﻱ ﺯﻣﺎﻧﻲ ﺍﺳﺘﻔﺎﺩﻩ ﻣﻲ ﻛﻨﺪ.
ﺑﺮﻧﺎﻣﻪ ﻫﺎﻱ ﻣﺮگ -ﺍﻧﺘﻈﺎﺭ -ﻏﻴﺮﭘﻴﺸﮕﻴﺮﺍﻧﻪ
• ﺗﺮﺍﻛﻨﺶ ﻫﺎﻱ ﻗﺪﻳﻤﻲ ﺗﺮ ﻣﻤﻜﻦ ﺍﺳﺖ ﺑﺨﺸﻲ ﺍﺯ ﺩﺍﺩﻩ ﺭﺍ ﺑﺮﺍﻱ ﻳﻚ ﺗﺮﺍﻛﻨﺶ ﺟﺪﻳﺪﺗﺮ ﺁﺯﺍﺩ
ﻛﻨﻨﺪ ﺍﻣﺎ ﺗﺮﺍﻛﻨﺶ ﻫﺎﻱ ﺟﺪﻳﺪﺗﺮ ﻫﺮﮔﺰ ﺑﺮﺍﻱ ﺗﺮﺍﻛﻨﺶ ﻫﺎﻱ ﻗﺪﻳﻤﻲ ﺗﺮ ﺑﻪ ﺣﺎﻟﺖ ﺍﻧﺘﻈﺎﺭ
ﻧﻤﻲ ﺭﻭﻧﺪ ﺑﻠﻜﻪ ﺑﻪ ﺟﺎﻱ ﺁﻥ ﻋﻘﺒﮕﺮﺩ ﻣﻲ ﻛﻨﻨﺪ.
• ﺗﺮﺍﻛﻨﺶ ﻣﻤﻜﻦ ﺍﺳﺖ ﭼﻨﺪﻳﻦ ﺑﺎﺭ ﻗﺒﻞ ﺍﺯ ﺩﺳﺘﻴﺎﺑﻲ ﺑﻪ ﺑﺨﺶ ﺩﺍﺩﻩ ﻱ ﻣﻮﺭﺩ ﻧﻴﺎﺯﺵ ﺍﺯ ﺑﻴﻦ
ﺑﺮﻭﺩ.
ﺑﺮﻧﺎﻣﻪ ﻫﺎﻱ ﺟﺮﺍﺣﺖ – ﺍﻧﺘﻈﺎﺭ -ﭘﻴﺸﮕﻴﺮﺍﻧﻪ
• ﺕﺭﺍﻛﻨﺶ ﻫﺎﻱ ﻗﺪﻳﻤﻲ ﺗﺮﺑﻪ ﺟﺎﻱ ﺍﻳﻦ ﻛﻪ ﻣﻨﺘﻈﺮ ﺗﺮﺍﻛﻨﺶ ﻫﺎﻱ ﺟﺪﻳﺪ ﺑﺎﺷﻨﺪ ﺩﭼﺎﺭ
ﺟﺮﺍﺣﺖ )ﺑﺮﮔﺸﺖ ﺗﺤﻤﻴﻠﻲ ( ﻣﻲ ﺷﻮﻧﺪ.
• ﻣﻤﻜﻦ ﺍﺳﺖ ﻋﻘﺐ ﮔﺮﺩﻫﺎﻱ ﻛﻤﺘﺮﻱ ﺩﺭ ﺑﺮﻧﺎﻣﻪ ﻫﺎﻱ ﻣﺮگ-ﺍﻧﺘﻈﺎﺭ ﻧﻘﺶ ﺩﺍﺷﺘﻪ ﺑﺎﺷﻨﺪ.
ﭘﻴﺸﮕﻴﺮﻱ ﺍﺯ ﺑﻦ ﺑﺴﺖ
ﺩﺭ ﻫﺮﺩﻭ ﺣﺎﻟﺖ ﺑﺮﻧﺎﻣﻪ ﻫﺎﻱ ﻣﺮگ –ﺍﻧﺘﻈﺎﺭ ﻭ ﺟﺮﺍﺣﺖ-ﺍﻧﺘﻈﺎﺭ ﺗﺮﺍﻛﻨﺶ ﻫﺎﻱ ﺑﺮﮔﺸﺖ ﺧﻮﺭﺩﻩ ﺑﺎ
ﺑﺮﭼﺴﺐ ﺯﻣﺎﻥ ﺍﺻﻠﻲ ﺷﺎﻥ ﻣﺠﺪﺩﺍ ﺭﺍ ﻩ ﺍﻧﺪﺍﺯﻱ ﻣﻲ ﺷﻮﻧﺪ .ﺩﺭ ﻧﺘﻴﺠﻪ ﺗﺮﺍﻛﻨﺶ ﻫﺎﻱ ﻗﺪﻳﻤﻲ ﺗﺮ ﺩﺍﺭﺍﻱ
ﺍﻭﻝﻭﻳﺖ ﺑﻴﺸﺘﺮﻱ ﺍﺯ ﺟﺪﻳﺪﺗﺮﻫﺎ ﻣﻲ ﺷﻮﻧﺪ ﺍﺯ ﺍﻳﻦ ﺭﻭ ﻗﺤﻄﻲ ﺍﺟﺘﻨﺎﺏ ﻧﺎﭘﺬﻳﺮ ﺍﺳﺖ.
ﺑﺮﻧﺎﻣﻪ ﻫﺎﻱ ﻣﺒﺘﻨﻲ ﺑﺮ ﺑﺮﺟﺴﺐ ﺯﻣﺎﻥ :
• ﻳﻚ ﺗﺮﺍﻛﻨﺶ ﻓﻘﻂ ﺑﺮﺍﻱ ﻣﺪﺕ ﺯﻣﺎﻥ ﻣﻌﻴﻨﻲ ﺑﺮﺍﻱ ﻳﻚ ﻗﻔﻞ ﻣﻨﺘﻈﺮ ﻣﻲ ﻣﺎﻧﺪ ﭘﺲ ﺍﺯ ﺁﻥ ﺍﺯ
ﺻﻒ ﺍﻧﺘﻈﺎﺭ ﺧﺎﺭﺝ ﻭ ﺗﺮﺍﻛﻨﺶ ﻋﻤﻞ ﻋﻘﺒﮕﺮﺩ ﺭﺍ ﺍﻧﺠﺎﻡ ﻣﻲ ﺩﻫﺪ.
• ﺩﺭ ﻧﺘﻴﺠﻪ ﺑﻦ ﺑﺴﺖ ﺍﻣﻜﺎﻥ ﭘﺬﻳﺮ ﻧﻴﺴﺖ.
• ﭘﻴﺎﺩﻩ ﺳﺎﺯﻱ ﺍﻳﻦ ﺭﻭﺵ ﺳﺎﺩﻩ ﺍﺳﺖ ،ﺍﻣﺎ ﻗﺤﻄﻲ ﺷﺎﻥ ﺍﻣﻜﺎﻥ ﭘﺬﻳﺮ ﺍﺳﺖ .ﻫﻤﭽﻨﻴﻦ ﺗﻌﻴﻴﻦ
ﻣﻘﺪﺍﺭ ﺁﻥ ﺑﺮﺍﻱ ﻳﻚ ﻓﺎﺻﻠﻪ ﺯﻣﺎﻧﻲ ﺩﺷﻮﺍﺭ ﺍﺳﺖ.
ﺗﺸﺨﻴﺺ ﺑﻦ ﺑﺴﺖ
ﺑﻦ ﺑﺴﺖ ﺭﺍ ﻣﻲ ﺗﻮﺍﻥ ﺑﻪ ﻋﻨﻮﺍﻥ ﻳﻚ ﮔﺮﺍﻑ ،wait-forﻣﺘﺸﻜﻞ ﺍﺯ ﻳﻚ ﺟﻔﺖ ) G=(V,Eﺩﺭ ﻧﻈﺮ ﮔﺮﻓﺖ
82
• Eﻣﺠﻤﻮﻋﻪ ﺍﻱ ﺍﺯ ﻟﺒﻪ ﻫﺎ ﺍﺳﺖ ،ﻫﺮ ﻋﻨﺼﺮﻳﻚ ﺯﻭﺝ ﻣﺮﺗﺐ Ti→Tjﺍﺳﺖ.
ﺍﮔﺮ Ti→Tjﺩﺭ ،Eﺁﻧﮕﺎﻩ ﻳﻚ ﻟﺒﻪ ﻣﺴﺘﻘﻴﻢ ﺍﺯ Tiﺑﻪ Tjﻭﺟﻮﺩ ﺩﺍﺭﺩ ،ﻭ ﺑﻪ ﻋﺒﺎﺭﺗﻲ Tiﺑﺮﺍﻱ ﺁﺯﺍﺩﻛﺮﺩﻥ ﻳﻚ
ﺑﺨﺶ ﺍﺯ ﺩﺍﺩﻩ ﻣﻨﺘﻈﺮ Tjﺍﺳﺖ.
ﻫﻨﮕﺎﻣﻲ ﻛﻪ Tiﺩﺭﺧﻮﺍﺳﺖ ﻳﻚ ﺑﺨﺶ ﺍﺯ ﺩﺍﺩﻩ ﻛﻪ ﺩﺭ ﺣﺎﻝ ﺣﺎﺿﺮ ﺗﻮﺳﻂ Tjﻧﮕﻬﺪﺍﺭﻱ ﻣﻲ ﺷﻮﺩ ﺭﺍﻣﻲ ﻛﻨﺪ،
ﺳﭙﺲ ﻟﺒﻪ TiTjﺩﺭ ﮔﺮﺍﻑ wait-forﺩﺭﺝ ﻣﻲ ﺷﻮﺩ .ﺍﻳﻦ ﻟﺒﻪ ﻓﻘﻂ ﺯﻣﺎﻧﻲ ﺣﺬﻑ ﻣﻲ ﺷﻮﺩ ﻛﻪ Tjﻳﻚ ﺑﺨﺶ
ﺩﺍﺩﻩ ﻣﻮﺭﺩ ﻧﻴﺎﺯ ﺗﻮﺳﻂ Tiﺭﺍ ﻃﻮﻻﻧﻲ ﻧﮕﻪ ﻧﺪﺍﺭﺩ.
ﺍﻳﻦ ﺳﻴﺴﺘﻢ ﺩﺭ ﺣﺎﻟﺖ ﺑﻦ ﺑﺴﺖ ﺍﺳﺖ ﺍﮔﺮ ﻭ ﺗﻨﻬﺎ ﺍﮔﺮ ﮔﺮﺍﻑ wait-forﺩﺍﺭﺍﻱ ﻳﻚ ﭼﺮﺧﻪ ﺑﺎﺷﺪ .ﺑﺎﻳﺪ ﺑﻪ
ﻳﻚ ﺍﻟﮕﻮﺭﻳﺘﻢ ﺗﺸﺨﻴﺺ ﺑﻦ ﺑﺴﺖ ﺑﻪ ﺻﻮﺭﺕ ﺩﻭﺭﻩ ﺍﻱ ﺑﺮﺍﻱ ﺍﺷﺎﺭﻩ ﺑﻪ ﭼﺮﺧﻪ ﻫﺎ ﺍﺳﺘﻨﺎﺩ ﻛﺮﺩ.
ﺑﺎﺯﻳﺎﺑﻲ ﺑﻦ ﺑﺴﺖ
83
ﺗﺄﺛﻴﺮ ﺑﻴﺸﺘﺮ ﺗﺮﺍﻛﻨﺶ ﻋﻘﺒﮕﺮﺩ ﻓﻘﻂ ﺑﺮﺍﻱ ﺷﻜﺴﺘﻦ ﺑﻦ ﺑﺴﺖ ﻣﻮﺭﺩ ﻧﻴﺎﺯ ﺍﺳﺖ.
• ﻗﺤﻄﻲ ﺍﺗﻔﺎﻕ ﻣﻲ ﺍﻓﺘﺪ ﺍﮔﺮ ﻫﻤﺎﻥ ﺗﺮﺍﻛﻨﺶ ﺑﺎﺷﺪ ﻛﻪ ﺑﻪ ﻋﻨﻮﺍﻥ ﻗﺮﺑﺎﻧﻲ ﺍﻧﺘﺨﺎﺏ ﺷﺪﻩ ﺍﺳﺖ.
ﺗﻌﺪﺍﺩ ﻋﻘﺒﮕﺮﺩﻫﺎ ﺩﺭ ﻋﺎﻣﻞ ﻫﺰﻳﻨﻪ ﺑﺮﺍﻱ ﺟﻠﻮﮔﻴﺮﻱ ﺍﺯ ﮔﺮﺳﻨﮕﻲ ﺭﺍ ﺷﺎﻣﻞ ﻣﻲ ﺷﻮﺩ.
ﻫﺮ ﺗﺮﺍﻛﻨﺶ ﺻﺎﺩﺭﻛﻨﻨﺪﻩ ﻳﻚ ﺑﺮﭼﺴﺐ ﺯﻣﺎﻥ ﺍﺳﺖ ﻛﻪ ﻭﺍﺭﺩ ﺳﻴﺴﺘﻢ ﻣﻲ ﺷﻮﺩ .ﺍﮔﺮ ﻳﻚ ﺗﺮﺍﻛﻨﺶ
ﻗﺪﻳﻤﻲ Tiﺩﺍﺭﺍﻱ ﺯﻣﺎﻥ-ﭼﺎپ ) TS(Tiﺑﺎﺷﺪ ،ﻳﻚ ﺗﺮﺍﻛﻨﺶ ﺟﺪﻳﺪ Tjﺯﻣﺎﻥ-ﭼﺎپ ) TS(Tjﺭﺍ
ﺗﺨﺼﻴﺺ ﻣﻲ ﺩﻫﺪ ﺑﻪ ﻃﻮﺭﻱ ﻛﻪ )TS(Ti)<TS(Tj
ﭘﺮﻭﺗﻜﻞ ﻣﺪﻳﺮﻳﺖ ﺍﺟﺮﺍﻱ ﻫﻤﺰﻣﺎﻥ ﺑﻪ ﻃﻮﺭﻱ ﻛﻪ ﺯﻣﺎﻥ – ﭼﺎپ ﻫﺎﻱ ﻣﺮﺗﺐ ﺳﺎﺯﻱ ﺳﺮﻳﺎﻟﻲ ﺭﺍ ﺗﻌﻴﻴﻦ
ﻡﻱ ﻛﻨﺪ.
ﺑﺮﺍﻱ ﺍﻃﻤﻴﻨﺎﻥ ﺍﺯ ﭼﻨﻴﻦ ﺭﻓﺘﺎﺭﻱ ،ﭘﺮﻭﺗﻜﻞ ﺑﺮﺍﻱ ﻫﺮ ﺩﺍﺩﻩ 2 Qﻣﻘﺪﺍﺭ ﺍﺯ ﺑﺮﭼﺴﺐ ﺯﻣﺎﻥ ﺭﺍ ﻧﮕﻪ ﻣﻲ
ﺩﺍﺭﺩ:
ﭘﺮﻭﺗﻜﻞ ﺩﺳﺘﻮﺭ ﺑﺮﭼﺴﺐ ﺯﻣﺎﻥ ﺗﻀﻤﻴﻦ ﻣﻲ ﻛﻨﺪ ﻛﻪ ﻫﻴﭻ ﺿﺪ ﻭ ﻧﻘﻴﻀﻲ ﺩﺭ ﻋﻤﻠﻴﺎﺕ ﺧﻮﺍﻧﺪﻥ ﻭ
ﻧﻮﺷﺘﻦ ﺩﺭ ﺩﺳﺘﻮﺭ ﺑﺮﭼﺴﺐ ﺯﻣﺎﻥ ﺍﺟﺮﺍ ﻧﻤﻲ ﺷﻮﺩ.
ﻳﻚ ﺗﺮﺍﻛﻨﺶ Tiﻣﺮﺑﻮﻁ ﺑﻪ ﻣﺴﺎﺋﻞ ﻳﻚ ) read(Qﺭﺍ ﻓﺮﺽ ﻛﻨﻴﺪ.
.1ﺍﮔﺮ ) ،TS(Ti)≤ w-timestamp(Qﺳﭙﺲ Tiﺑﻪ ﺧﻮﺍﻧﺪﻥ ﻱﻙ ﻣﻘﺪﺍﺭ ﺍﺯ Qﻛﻪ ﺩﺭ ﺣﺎﻝ
ﺣﺎﺿﺮ ﺭﻭﻧﻮﻳﺴﻲ ﻣﻲ ﺷﻮﺩ ﻧﻴﺎﺯ ﺩﺍﺭﺩ.
ﺍﺯ ﺍﻳﻦ ﺭﻭ ،ﻋﻤﻞ ﺧﻮﺍﻧﺪﻥ ﺭﺩ ﻣﻲ ﺷﻮﺩ ،ﻭ Tiﺑﻪ ﻋﻘﺐ ﺑﺮ ﻣﻲ ﮔﺮﺩﺩ.
.2ﺍﮔﺮ ) TS(Ti)≥w-timestamp(Qﺑﺎﺷﺪ ،ﺳﭙﺲ ﻋﻤﻠﻴﺎﺕ ﺧﻮﺍﻧﺪﻥ ﺍﺟﺮﺍ ﻣﻲ ﺷﻮﺩ ،ﻭ R-
) timestamp(Qﻣﺠﻤﻮﻋﻪ ﺍﻱ ﺑﺮﺍﻱ ) max(R-timestamp(Qﻭ ) TS(Tiﺍﺳﺖ.
84
ﻓﺮﺽ ﻛﻨﻴﺪ ﻛﻪ ﺗﺮﺍﻛﻨﺶ Tiﺩﺍﺭﺍﻱ ﻣﺴﺎﺋﻞ ﻣﺮﺑﻮﻁ ﺑﻪ ) write(Qﺍﺳﺖ.
.1ﺍﮔﺮ ) TS(Ti)<R-timestamp(Qﺑﺎﺷﺪ ،ﺳﭙﺲ ﻣﻘﺪﺍﺭ Qﻛﻪ Tiﺗﻮﻟﻴﺪ ﻣﻲ ﻛﻨﺪ ﻗﺒﻼ ﻣﻮﺭﺩ
ﻧﻴﺎﺯ ﺑﻮﺩﻩ ،ﻭ ﺳﻴﺴﺘﻢ ﺁﻥ ﺭﺍ ﺑﺮﻋﻬﺪﻩ ﮔﺮﻓﺘﻪ ﻛﻪ ﺁﻥ ﻣﻘﺪﺍﺭ ﻫﺮﮔﺰ ﺗﻮﻟﻴﺪ ﻧﺸﻮﺩ.
ﺍﺯ ﺍﻳﻦ ﺭﻭ ،ﺍﻳﻦ ﻋﻤﻠﻴﺎﺕ ﻧﻮﺷﺘﻦ ﺭﺩ ﻣﻲ ﺷﻮﺩ ،ﻭ Tiﺑﻪ ﻋﻘﺐ ﺑﺮ ﻣﻲ ﮔﺮﺩﺩ.
.2ﺍﮔﺮ ) TS(Ti)<w-timestamp(Qﺑﺎﺷﺪ ،ﺳﭙﺲ Tiﺑﺮﺍﻱ ﺟﺴﺘﺠﻮﻱ ﻳﻚ ﻣﻘﺪﺍﺭ ﻏﻴﺮﻗﺎﺑﻞ
ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ Qﺗﻼﺵ ﻣﻲ ﻛﻨﺪ.
ﺍﺯ ﺍﻳﻦ ﺭﻭ ،ﺍﻳﻦ ﻋﻤﻠﻴﺎﺕ ﻧﻮﺷﺘﻦ ﺭﺩ ﻣﻲ ﺷﻮﺩ ،ﻭ Tiﺑﻪ ﻋﻘﺐ ﺑﺮ ﻣﻲ ﮔﺮﺩﺩ.
.3ﺩﺭ ﻏﻴﺮ ﺍﻳﻦ ﺻﻮﺭﺕ ،ﻋﻤﻠﻴﺎﺕ ﻧﻮﺷﺘﻦ ﺍﺟﺮﺍ ﻣﻲ ﺷﻮﺩ ،ﻭ ) w-timestamp(Qﻣﺠﻤﻮﻋﻪ ﺍﻱ ﺍﺯ
) TS(Tiﺍﺳﺖ.
ﺑﺮﻧﺎﻣﻪ ﺯﻳﺮ ﺑﺮﺍﻱ ﭼﻨﺪﻳﻦ ﺁﻳﺘﻢ ﺩﺍﺩﻩ ﺑﺮﺍﻱ ﺍﻧﺠﺎﻡ ﺗﺮﺍﻛﻨﺶ ﻫﺎﻳﻲ ﺑﺎ ﺑﺮﭼﺴﺐ ﺯﻣﺎﻧﻲ ،4 ،3 ،2 ،1ﺍﺳﺖ
)read(X
)read(Y
)read(Y
)write(Y
)write(Z
)read(Z
)read(X
abort
)read(X
)write(Z
abort
)write(Y
)write(Z
85
ﭘﺮﻭﺗﻜﻞ ﺩﺳﺘﻮﺭ -ﺑﺮﭼﺴﺐ ﺯﻣﺎﻥ ﺗﻤﺎﻡ ﻛﻤﺎﻥ ﻫﺎﻱ ﮔﺮﺍﻑ ﺍﻭﻟﻮﻳﺖ ﺍﺯ ﻓﺮﻡ ﺭﺍ ﺑﻪ ﺻﻮﺭﺕ ﺳﺮﻳﺎﻟﻲ
ﺗﻀﻤﻴﻦ ﻣﻲ ﻛﻨﺪ.
transaction transaction
with smaller with larger
timestamp timestamp
ﭘﺮﻭﺗﻜﻞ ﺑﺮﭼﺴﺐ ﺯﻣﺎﻥ ﺭﻫﺎﻳﻲ ﺍﺯ ﺑﻦ ﺑﺴﺖ ﺭﺍ ﺗﻀﻤﻴﻦ ﻣﻲ ﻛﻨﺪ ﻛﻪ ﻫﻴﭻ ﺗﺮﺍﻛﻨﺸﻲ ﻣﻨﺘﻈﺮ ﻧﻤﻲ ﻣﺎﻧﺪ.
ﺑﺮﻧﺎﻣﻪ ﻣﻤﻜﻦ ﻧﻴﺴﺖ ﺁﺑﺸﺎﺭﻱ-ﺁﺯﺍﺩ ﺑﺎﺷﺪ ،ﻭ ﺣﺘﻲ ﻣﻤﻜﻦ ﺍﺳﺖ ﺑﺎﺯﻳﺎﺑﻲ ﻧﺸﻮﺩ.
86
• ﻳﻚ ﺗﺮﺍﻛﻨﺸﻲ ﻛﻪ ﺑﻲ ﻧﺘﻴﺠﻪ ﻣﻲ ﻣﺎﻧﺪ ﻣﺠﺪﺩﺍ ﺑﺎ ﻳﻚ ﺑﺮﭼﺴﺐ ﺯﻣﺎﻧﻲ ﺟﺪﻳﺪ ﺭﺍﻩ ﺍﻧﺪﺍﺯﻱ ﻣﻲ
ﺷﻮﺩ.
ﺭﺍﻩ ﺣﻞ : 2ﻣﺤﺪﻭﺩ ﻛﺮﺩﻥ ﻓﺮﻡ ﻗﻔﻞ ،ﺍﻧﺘﻈﺎﺭ ﺑﺮﺍﻱ ﺩﺍﺩﻩ ﻛﻪ ﻗﺒﻞ ﺍﺯ ﺧﻮﺍﻧﺪﻥ ﺁﻥ ﺗﺄﻳﻴﺪ ﻣﻲ ﺷﻮﺩ.
ﺭﺍﻩ ﺣﻞ : 3ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﻭﺍﺑﺴﺘﮕﻲ ﻫﺎﻱ ﻣﻮﺭﺩ ﺗﺄﻳﻴﺪ ﺑﺮﺍﻱ ﺍﻃﻤﻴﻨﺎﻥ ﺍﺯ ﺑﺎﺯﻳﺎﺑﻲ
ﻧﺴﺨﻪ ﺍﺻﻼﺡ ﺷﺪﻩ ﭘﺮﻭﺗﻜﻞ ﺩﺳﺘﻮﺭ -ﺑﺮﭼﺴﺐ ﺯﻣﺎﻥ ﻛﻪ ﺩﺭ ﺁﻥ ﻋﻤﻠﻴﺎﺕ ﻣﻨﺴﻮﺥ ﺷﺪﻩ ﻣﻤﻜﻦ ﺍﺳﺖ
ﺗﺤﺖ ﺷﺮﺍﻳﻂ ﺧﺎﺹ ﻧﺎﺩﻳﺪﻩ ﮔﺮﻓﺘﻪ ﺷﻮﺩ.
ﻫﻨﮕﺎﻣﻲ ﻛﻪ Tiﺑﺮﺍﻱ ﻧﻮﺷﺘﻦ ﺁﻳﺘﻢ ﺩﺍﺩﻩ Qﺗﻼﺵ ﻣﻲ ﻛﻨﺪ ،ﺍﮔﺮ )TS(Ti)<w-timestamp(Q
ﺑﺎﺷﺪ ،ﺳﭙﺲ Tiﺑﺮﺍﻱ ﻧﻮﺷﺘﻦ ﻳﻚ ﻣﻘﺪﺍﺭ ﻏﻴﺮﻗﺎﺑﻞ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ} {Qﺗﻼﺵ ﻣﻲ ﻛﻨﺪ.
• ﺑﻪ ﺟﺎﻱ ﻋﻘﺐ ﮔﺮﺩ Tiﺑﻪ ﻋﻨﻮﺍﻥ ﭘﺮﻭﺗﻜﻞ ﺩﺳﺘﻮﺭ ﺑﺮﭼﺴﺐ ﺯﻣﺎﻥ ،ﻋﻤﻠﻴﺎﺕ } {writeﺭﺍ
ﻣﻲ ﺗﻮﺍﻥ ﻧﺎﺩﻳﺪﻩ ﮔﺮﻓﺖ .
ﺩﺭ ﻏﻴﺮ ﺍﻳﻦ ﺻﻮﺭﺕ ﺍﻳﻦ ﭘﺮﻭﺗﻜﻞ ﻫﻤﺎﻥ ﭘﺮﻭﺗﻜﻞ ﺩﺳﺘﻮﺭ ﺑﺮﭼﺴﺐ ﺯﻣﺎﻥ ﺍﺳﺖ.
ﻗﺎﻧﻮﻥ ﻧﻮﺷﺘﻪ ﺷﺪﻩ ﻱ ﺗﻮﻣﺎﺱ ﺍﺟﺎﺯﻩ ﺑﻪ ﭘﺘﺎﻧﺴﻴﻞ ﻫﻤﺰﻣﺎﻧﻲ ﺑﻴﺸﺘﺮ ﻣﻲ ﺩﻫﺪ.
• ﺍﺟﺎﺯﻩ ﻣﻲ ﺩﻫﺪ ﺗﺎ ﺑﺮﺧﻲ ﺑﺮﻧﺎﻣﻪ ﻫﺎﻱ ﻗﺎﺑﻞ ﺩﻳﺪﻥ ﺳﺮﻳﺎﻟﻲ ﻣﺘﻀﺎﺩ ﺳﺮﻳﺎﻟﻲ ﻧﺒﺎﺷﻨﺪ.
.1ﻓﺎﺯ ﺧﻮﺍﻧﺪﻥ ﻭ ﺍﺟﺮﺍ :ﺗﺮﺍﻛﻨﺶ Tiﻓﻘﻂ ﻣﺘﻐﻴﺮﻫﺎﻱ ﻣﺤﻠﻲ ﺭﺍ ﺑﻪ ﻃﻮﺭ ﻣﻮﻗﺖ ﻣﻲ ﻧﻮﻳﺴﺪ.
.2ﻓﺎﺯ ﺍﻋﺘﺒﺎﺭ :ﺗﺮﺍﻛﻨﺶ Tiﺁﺯﻣﻮﻥ ﺍﻋﺘﺒﺎﺭ ﺑﺮﺍﻱ ﺗﻌﻴﻴﻦ ﺍﻳﻨﻜﻪ ﺁﻳﺎ ﻣﺘﻐﻴﺮﻫﺎﻱ ﻣﺤﻠﻲ ﻣﻲ ﺗﻮﺍﻧﻨﺪ ﺑﺪﻭﻥ ﻧﻘﺾ ﺳﺮﻳﺎﻟﻲ
ﻧﻮﺷﺘﻪ ﺷﻮﻧﺪ ﺭﺍ ﺍﻧﺠﺎﻡ ﻣﻲ ﺩﻫﺪ.
.3ﻓﺎﺯ ﻧﻮﺷﺘﻦ :ﺍﮔﺮ Tiﺩﺍﺭﺍﻱ ﺍﻋﺘﺒﺎﺭ ﺍﺳﺖ ،ﺑﻪ ﺭﻭﺯﺭﺳﺎﻧﻲ ﻫﺎ ﻛﺎﺭﺑﺮﺩﻱ ﺍﺯ ﭘﺎﻳﮕﺎﻩ ﺩﺍﺩﻩ ﻫﺴﺘﻨﺪ ﺩﺭ ﻏﻴﺮ ﺍﻳﻦ ﺻﻮﺭﺕ ،
Tiﺑﻪ ﻋﻘﺐ ﺑﺮ ﻣﻲ ﮔﺮﺩﺩ.
3 ﻓﺎﺯ ﺍﺯ ﺗﺮﺍﻛﻨﺶ ﻫﺎﻱ ﺍﺟﺮﺍﻱ ﻫﻤﺰﻣﺎﻥ ﻣﻲ ﺗﻮﺍﻧﻨﺪ ﺑﻪ ﺻﻮﺭﺕ ﺟﺪﺍ ﺷﺪﻩ ﺑﺎﺷﻨﺪ ،ﺍﻣﺎ ﻫﺮ ﺗﺮﺍﻛﻨﺸﻲ ﺑﺎﻳﺪ ﺍﺯ
ﻃﺮﻳﻖ 3ﻓﺎﺯ ﺩﺭ ﺩﺳﺘﻮﺭ ﺍﺟﺮﺍ ﺷﻮﺩ.
87
• ﺑﺮﺍﻱ ﺳﺎﺩﮔﻲ ﻓﺮﺽ ﻛﻨﻴﺪ ﻛﻪ ﻣﺮﺣﻠﻪ ﻱ ﺍﻋﺘﺒﺎﺭﺳﻨﺠﻲ ﻭ ﻧﻮﺷﺘﻦ ﺑﺎ ﻫﻢ ﺍﺯ ﻃﺮﻳﻖ ﺍﺗﻤﻴﻚ ﻭ ﺳﺮﻳﺎﻟﻲ ﺭﺥ
ﻣﻲ ﺩﻫﺪ.
ﺑﻪ ﻋﻨﻮﺍﻥ ﻣﺜﺎﻝ ،ﺗﻨﻬﺎ ﻳﻚ ﺗﺮﺍﻛﻨﺶ ﺍﻋﺘﺒﺎﺭ/ﻧﻮﺷﺘﻦ ﺩﺭ ﻳﻚ ﺯﻣﺎﻥ ﺍﺝﺭﺍ ﻣﻲ ﺷﻮﺩ .
ﻫﻤﭽﻨﻴﻦ ﺑﻪ ﻋﻨﻮﺍﻥ ﻛﻨﺘﺮﻝ ﻫﻤﺰﻣﺎﻧﻲ ﺧﻮﺷﺒﻴﻨﺎﻧﻪ ﻧﺎﻣﻴﺪﻩ ﻣﻲ ﺷﻮﺩ ،ﺍﺯ ﺁﻧﺠﺎ ﻛﻪ ﺗﺮﺍﻛﻨﺶ ﺑﻪ ﻃﻮﺭ ﻛﺎﻣﻞ ﺑﻪ ﺍﻳﻦ
ﺍﻣﻴﺪ ﻛﻪ ﻫﻤﻪ ﺑﻪ ﺧﻮﺑﻲ ﺩﺭ ﻃﻮﻝ ﺍﻋﺘﺒﺎﺭ ﺍﺟﺮﺍ ﻣﻲ ﺷﻮﺩ.
ﺩﺳﺘﻮﺭ ﺳﺮﻳﺎﻟﻲ ﺑﺮﭼﺴﺐ ﺯﻣﺎﻥ ﺩﺍﺩﻩ ﺷﺪﻩ ﺩﺭ ﺯﻣﺎﻥ ﺍﻋﺘﺒﺎﺭ ﺑﺮﺍﻱ ﺍﻓﺰﺍﻳﺶ ﻫﻤﺰﻣﺎﻧﻲ ﺗﻌﻴﻴﻦ ﻣﻲ ﺷﻮﺩ.
ﺍﻳﻦ ﭘﺮﻭﺗﻜﻞ ﺑﺴﻴﺎﺭ ﻣﻔﻴﺪ ﺍﺳﺖ ﻭ ﻣﻴﺰﺍﻥ ﺑﺎﻻﻳﻲ ﺍﺯ ﻫﻤﺰﻣﺎﻧﻲ ﻛﻪ ﺍﺣﺘﻤﺎﻝ ﺩﺭﮔﻴﺮﻱ ﺁﻥ ﻛﻢ ﺍﺳﺖ ﺭﺍ ﻣﻲ ﺩﻫﺪ.
ﺍﮔﺮ Tiﺑﺮﺍﻱ ﻫﻤﻪ ) TS(Ti)<TS(Tjﺑﺎﺷﺪ ﻳﻜﻲ ﺍﺯ ﺷﺮﺍﻳﻂ ﺯﻳﺮ ﺭﺍ ﻧﮕﻪ ﻣﻲ ﺩﺍﺭﺩ :
88
ﺗﻮﺟﻴﻪ :ﻳﻜﻲ ﺍﺯ 2ﺷﺮﻁ ﺍﻭﻝ ﺭﺿﺎﻳﺖ ﺑﺨﺶ ﺍﺳﺖ ،ﻭ ﻫﻴﭻ ﺍﺟﺮﺍﻱ ﻫﻤﭙﻮﺷﺎﻧﻲ ﻭﺟﻮﺩ ﻧﺪﺍﺭﺩ ،ﻳﺎ ﺍﻳﻨﻜﻪ ﺷﺮﻁ
ﺩﻭﻡ ﺭﺿﺎﻳﺖ ﺑﺨﺶ ﺍﺳﺖ ﻭ
ﻧﻮﺷﺘﻪ ﻫﺎﻱ Tjﺑﺮﺭﻭﻱ ﺧﻮﺍﻧﺪﻥ Tiﺗﺄﺛﻴﺮ ﻧﻤﻲ ﮔﺬﺍﺭﻧﺪ ﺍﺯ ﺁﻧﺠﺎﻳﺌﻜﻪ ﺁﻧﻬﺎ ﺑﻌﺪ ﺍﺯ ﺍﺗﻤﺎﻡ Tiﺭﺥ ﻣﻲ
ﺩﻫﻨﺪ ﻭ ﺁﻥ ﺭﺍ ﻣﻲ ﺧﻮﺍﻧﻨﺪ.
ﻧﻮﺷﺘﻪ ﻫﺎﻱ Tiﺑﺮﺭﻭﻱ ﺧﻮﺍﻧﺪﻥ Tjﺗﺄﺛﻴﺮﻧﻤﻲ ﮔﺬﺍﺭﻧﺪ ﭼﻮﻥ ﻛﻪ Tjﻫﺮ ﺁﻳﺘﻢ ﻧﻮﺷﺘﻪ ﺷﺪﻩ ﺗﻮﺳﻂ
Tiﺭﺍ ﻧﻤﻲ ﺧﻮﺍﻧﺪ.
)read(B
)read(B
B:= B-50
)read(A
A:= A+50
)read(A
)(validate
)display (A+B
)(validate
)write (B
)write (A
• ﺑﺮﻧﺎﻣﻪ ﻫﺎﻱ ﭼﻨﺪ ﻧﺴﺨﻪ ﺍﻱ ﻧﺴﺨﻪ ﻫﺎﻱ ﻗﺪﻳﻤﻲ ﺍﺯ ﺁﻳﺘﻢ ﺩﺍﺩﻩ ﺭﺍ ﺑﺮﺍﻱ ﺍﻓﺰﺍﻳﺶ ﻫﻤﺰﻣﺎﻧﻲ ﻧﮕﻪ ﻣﻲ
ﺩﺍﺭﻧﺪ
89
• ﻣﺮﺗﺐ ﺳﺎﺯﻱ ﺑﺮ ﺣﺴﺐ ﺑﺮﭼﺴﺐ ﺯﻣﺎﻥ ﭼﻨﺪ ﻧﺴﺨﻪ ﺍﻱ
ﻫﺮ ﻳﻚ ﺍﺯ ﻧﺘﺎﻳﺞ ﻧﻮﺷﺘﻦ ﺑﻪ ﻃﻮﺭ ﻣﻮﻓﻘﻴﺖ ﺁﻣﻴﺰ ﺩﺭ ﺍﻳﺠﺎﺩ ﻳﻚ ﻧﺴﺨﻪ ﺟﺪﻳﺪ ﺍﺯ ﺁﻳﺘﻢ ﺩﺍﺩﻩ ﻧﻮﺷﺘﻪ ﻣﻲ ﺷﻮﺩ.
ﻫﻨﮕﺎﻣﻲ ﻛﻪ ﻋﻤﻞ ﺧﻮﺍﻧﺪﻥ ) (Qﺻﺎﺩﺭ ﻣﻲ ﺷﻮﺩ ،ﻳﻚ ﻧﺴﺨﻪ ﻣﻨﺎﺳﺐ ﺍﺯ Qﺭﺍ ﺑﺮ ﺍﺳﺎﺱ ﺑﺮﭼﺴﺐ ﺯﻣﺎﻥ
ﺗﺮﺍﻛﻨﺶ ﺍﻧﺘﺨﺎﺏ ﻛﻨﻴﺪ ﻭ ﻣﻘﺪﺍﺭ ﺁﻥ ﺭﺍ ﺑﻪ ﻧﺴﺨﻪ ﻱ ﺍﻧﺘﺨﺎﺏ ﺷﺪﻩ ﺑﺮﮔﺮﺩﺍﻧﻴﺪ.
Read ﻫﺎ ﻫﺮﮔﺰ ﺑﻪ ﺍﻧﺘﻈﺎﺭ ﻳﻚ ﻧﺴﺨﻪ ﻣﻨﺎﺳﺐ ﺑﺮﺍﻱ ﺑﺎﺯﮔﺸﺖ ﻓﻮﺭﻱ ﻧﻴﺎﺯ ﻧﺪﺍﺭﻧﺪ.
ﻫﺮ ﻛﺪﺍﻡ ﺍﺯ ﺁﻳﺘﻢ ﻫﺎﻱ ﺩﺍﺩﻩ Qﻳﻚ ﺩﻧﺒﺎﻟﻪ ﺍﺯ ﻧﺴﺨﻪ ﻫﺎﻱ > <Q1,Q2,…Qmﺭﺍ ﺩﺍﺭﺩ .ﻫﺮ ﻧﺴﺨﻪ Qkﺷﺎﻣﻞ
3ﺯﻣﻴﻨﻪ ﺩﺍﺩﻩ ﺍﺳﺖ :
ﻫﻨﮕﺎﻣﻲ ﻛﻪ ﻳﻚ ﺗﺮﺍﻛﻨﺶ Tiﻳﻚ ﻧﺴﺨﻪ ﺟﺪﻳﺪ Qkﺍﺯ Qﺭﺍ ﺍﻳﺠﺎﺩ ﻣﻲ ﻛﻨﺪ Qks w-timestamp ،ﻭ R-
timestampﺑﺎ ) TS(Tiﻣﻘﺪﺍﺭ ﺩﻫﻲ ﺍﻭﻟﻴﻪ ﺷﺪﻩ ﺍﻧﺪ.
R-timestamp ﺍﺯ Qkﺑﻪ ﺭﻭﺯ ﺷﺪﻩ ﺍﺳﺖ ﻫﺮﺯﻣﺎﻥ ﻛﻪ ﻳﻚ ﺗﺮﺍﻛﻨﺶ Tjﺑﺨﻮﺍﻧﺪ ، Qkﻭ Ts(Tj)>R-
)timestamp(Qk
ﻓﺮﺽ ﻛﻨﻴﺪ ﻛﻪ ﺗﺮﺍﻛﻨﺶ Tiﻋﻤﻠﻴﺎﺕ ﻣﺮﺑﻮﻁ ﺑﻪ ) read(Qﻳﺎ ) write(Qﺭﺍ ﺑﻔﺮﺳﺘﺪ .ﺍﺟﺎﺯﻩ ﺩﻫﻴﺪ ﺑﻪ Qk
ﻛﻪ ﺩﻻﻟﺖ ﺩﺍﺷﺘﻪ ﺑﺎﺷﺪ ﺑﺮ ﻧﺴﺨﻪ ﺍﻱ ﺍﺯ Qﻛﻪ ﺑﺮﭼﺴﺐ ﺯﻣﺎﻥ ﻧﻮﺷﺘﻦ ﺁﻥ ﺑﺰﺭﮔﺘﺮﻳﻦ ﺑﺮﭼﺴﺐ ﺯﻣﺎﻥ ﻧﻮﺷﺘﻦ
ﻛﻮﭼﻜﺘﺮ ﻳﺎ ﻣﺴﺎﻭﻱ ) TS(Tiﺍﺳﺖ.
90
.1ﺍﮔﺮ ﺗﺮﺍﻛﻨﺶ Tiﻣﺴﺎﺋﻞ ﻣﺮﺑﻮﻁ ﺑﻪ ) read(Qﺭﺍ ﻣﻄﺮﺡ ﻛﻨﺪ ،ﺁﻧﮕﺎﻩ ﻣﻘﺪﺍﺭ ﺑﺮﮔﺸﺘﻲ ،ﻣﺤﺘﻮﺍﻱ ﻧﺴﺨﻪ
Qkﺍﺳﺖ.
.3ﺩﺭ ﻏﻴﺮ ﺍﻳﻦ ﺻﻮﺭﺕ ﻳﻚ ﻧﺴﺨﻪ ﺟﺪﻳﺪ ﺍﺯ Qﺭﺍ ﺑﻪ ﻭﺟﻮﺩ ﺁﻭﺭﺩﻩ ﺍﺳﺖ.
ﺗﻔﺎﻭﺕ ﺑﻴﻦ ﺗﺮﺍﻛﻨﺶ ﻫﺎﻱ ﻓﻘﻂ ﺧﻮﺍﻧﺪﻧﻲ ﻭ ﺗﺮﺍﻛﻨﺶ ﻫﺎﻱ ﺑﻪ ﺭﻭﺯ ﺷﺪﻩ
ﺗﺮﺍﻛﻨﺶ ﻫﺎﻱ ﺑﻪ ﺭﻭﺯ ﺷﺪﻩ ﻗﻔﻞ ﻫﺎﻱ ﺧﻮﺍﻧﺪﻥ ﻭ ﻧﻮﺷﺘﻦ ﺭﺍ ﺑﻪ ﺩﺳﺖ ﻣﻲ ﺁﻭﺭﻧﺪ ،ﻭ ﺗﻤﺎﻣﻲ ﻗﻔﻞ ﻫﺎ ﺭﺍ ﺗﺎ ﭘﺎﻳﺎﻥ
ﺗﺮﺍﻛﻨﺶ ﻧﮕﻪ ﻣﻲ ﺩﺍﺭﻧﺪ .ﺗﺮﺍﻛﻨﺶ ﻫﺎﻳﻲ ﻛﻪ ﺑﻪ ﺩﻧﺐﺍﻝ ﻗﻔﻞ 2ﻓﺎﺯ ﻫﺴﺘﻨﺪ.
• ﻫﺮﻳﻚ ﺍﺯ ﻧﺘﺎﻳﺞ ﻧﻮﺷﺘﻦ ﻣﻮﻓﻘﻴﺖ ﺁﻣﻴﺰ ﺩﺭ ﺍﻳﺠﺎﺩ ﻳﻚ ﻧﺴﺨﻪ ﺟﺪﻳﺪ ﺍﺯ ﺁﻳﺘﻢ ﺩﺍﺩﻩ ﻧﻮﺷﺘﻪ ﺷﺪﻩ ﺍﺳﺖ.
• ﻫﺮ ﻧﺴﺨﻪ ﺍﺯ ﺁﻳﺘﻢ ﺩﺍﺩﻩ ﺩﺍﺭﺍﻱ ﻳﻚ ﺑﺮﭼﺴﺐ ﺯﻣﺎﻥ ﻭﺍﺣﺪ ﺍﺳﺖ ﻛﻪ ﺍﺭﺯﺵ ﺁﻥ ﺍﺯ ﻃﺮﻳﻖ ﺷﻤﺎﺭﻧﺪﻩ
91
ﺗﺮﺍﻛﻨﺶ ﻫﺎﻱ ﻓﻘﻂ ﺧﻮﺍﻧﺪﻧﻲ ﺩﺭ ﻳﻚ ﺑﺮﭼﺴﺐ ﺯﻣﺎﻥ ﺑﺎ ﺧﻮﺍﻧﺪﻥ ﺍﺭﺯﺵ ﻓﻌﻠﻲ ts-counterﻗﺒﻞ ﺍﺯ ﺷﺮﻭﻉ
ﺍﺟﺮﺍ ﺗﻌﻴﻴﻦ ﻣﻲ ﺷﻮﻧﺪ ،ﺁﻧﻬﺎ ﺑﻪ ﺩﻧﺒﺎﻝ ﭘﺮﻭﺗﻜﻞ ﺩﺳﺘﻮﺭ ﺑﺮﭼﺴﺐ ﺯﻣﺎﻥ ﭼﻨﺪ ﻧﺴﺨﻪ ﺍﻱ ﺑﺮﺍﻱ ﺍﺟﺮﺍﻱ ﺧﻮﺍﻧﺪﻥ
ﻣﻲ ﺑﺎﺷﻨﺪ.
ﭼﻪ ﻭﻗﺖ ﻳﻚ ﺗﺮﺍﻛﻨﺶ ﻭﻳﺮﺍﻳﺶ ﺷﺪﻩ ﺗﻤﺎﻳﻞ ﺩﺍﺭﺩ ﻳﻚ ﺑﺨﺶ ﺍﺯ ﺩﺍﺩﻩ ﺭﺍ ﺑﺨﻮﺍﻧﺪ:
ﻳﻚ ﻗﻔﻞ ﻣﺸﺘﺮﻙ ﺭﻭﻱ ﺁﻥ ﺑﻪ ﺩﺳﺖ ﻣﻲ ﺁﻭﺭﺩ ،ﻭ ﻧﺴﺨﻪ ﻫﺎﻱ ﭘﺎﻳﻴﻦ ﺗﺮ ﺭﺍ ﻣﻲ ﺧﻮﺍﻧﺪ. •
ﻗﻔﻞ xﺭﺍ ﺑﻪ ﺩﺳﺖ ﻣﻲ ﺁﻭﺭﺩ ،ﺳﭙﺲ ﻳﻚ ﻧﺴﺨﻪ ﺟﺪﻳﺪﺍﺯ ﺍﻳﻦ ﺑﺨﺶ ﻭ ﻣﺠﻤﻮﻋﻪ ﺍﻱ ﺍﺯ ﻧﺴﺨﻪ ﻫﺎﻱ •
ﺑﺮﭼﺴﺐ ﺯﻣﺎﻥ ﺑﻪ ∞ ﺭﺍﺍﻳﺠﺎﺩ ﻣﻲ ﻛﻨﺪ.
ﭼﻪ ﻭﻗﺖ ﻭﻳﺮﺍﻳﺶ ﺗﺮﺍﻛﻨﺶ Tiﻛﺎﻣﻞ ﻣﻲ ﺷﻮﺩ ،ﭘﺬﻳﺮﺵ ﭘﺮﺩﺍﺯﺵ ﺭﺥ ﻣﻲ ﺩﻫﺪ :
• ﻣﺠﻤﻮﻋﻪ ﻫﺎﻱ Tiﺑﺮﭼﺴﺐ ﺯﻣﺎﻥ ﺭﻭﻱ ﻧﺴﺨﻪ ﻫﺎﻱ ﺁﻥ ts-counter+1ﺭﺍ ﺍﻳﺠﺎﺩ ﻣﻲ ﻛﻦﻥﺩ .
ﺗﺮﺍﻛﻨﺶ ﻫﺎﻱ ﻓﻘﻂ ﺧﻮﺍﻧﺪﻧﻲ ﻛﻪ ﺑﻌﺪ ﺍﺯ Tiﺷﺮﻭﻉ ﻣﻲ ﺷﻮﺩ ts-counterﺭﺍ ﺑﺮﺍﻱ ﺩﻳﺪﻥ ﻣﻘﺎﺩﻳﺮ ﻭﻳﺮﺍﻳﺶ
ﺷﺪﻩ ﺗﻮﺳﻂ Tiﺍﻓﺰﺍﻳﺶ ﻣﻲ ﺩﻫﺪ
ﺗﺮﺍﻛﻨﺶ ﻫﺎﻱ ﻓﻘﻂ ﺧﻮﺍﻧﺪﻧﻲ ﻛﻪ ﺷﺮﻭﻉ ﻣﻲ ﺷﻮﻧﺪ ﻗﺒﻞ ﺍﺯ Tiﺑﺮﺍﻱ ﺍﻓﺰﺍﻳﺶ ts-counterﺑﺮﺍﻱ ﺩﻳﺪﻥ
ﻣﻘﺎﺩﻳﺮ ﻗﺒﻞ ﺍﺯ ﻭﻳﺮﺍﻳﺶ ﻫﺎﻱ Ti
92
• ﺑﻪ ﻋﻨﻮﺍﻥ ﻣﺜﺎﻝ .ﺍﮔﺮ 2 Qﻧﺴﺨﻪ ﻱ Q5ﻭ Q9ﺭﺍ ﺩﺍﺷﺘﻪ ﺑﺎﺷﺪ ،ﻭ ﺗﺮﺍﻛﻨﺶ ﻓﻌﺎﻝ ﻗﺪﻳﻤﻲ
ﺗﺮ ﻛﻪ ﺑﺮﭼﺴﺐ ﺯﻣﺎﻥ < 9ﺑﺎﺷﺪ ،ﻧﺴﺒﺖ ﺑﻪ Q5ﻛﻪ ﻫﺮﮔﺰ ﺩﻭﺑﺎﺭﻩ ﺑﻪ ﺩﺳﺖ ﻧﻤﻲ ﺁﻳﺪ.
• ﻳﻚ ﻋﻤﻠﻴﺎﺕ ﺣﺬﻑ ﻣﻤﻜﻦ ﺍﻧﺠﺎﻡ ﺷﻮﺩ ﺗﻨﻬﺎ ﺍﮔﺮ ﺗﺮﺍﻛﻨﺶ ﺣﺬﻑ ﻛﻨﺪ ﭼﻨﺪ ﺗﺎﻳﻲ ﺭﺍ ﻛﻪ ﻳﻚ ﻗﻔﻞ
ﺍﻧﺤﺼﺎﺭﻱ ﺩﺍﺭﺩ ﺭﻭﻱ ﭼﻨﺪﺗﺎﻳﻲ ﻛﻪ ﺣﺬﻑ ﺷﺪﻩ ﺍﻧﺪ.
• ﻳﻚ ﺗﺮﺍﻛﻨﺸﻲ ﻛﻪ ﻳﻚ ﭼﻨﺪﺗﺎﻳﻲ ﺟﺪﻳﺪ ﺭﺍ ﺩﺍﺧﻞ ﭘﺎﻳﮕﺎﻩ ﺩﺍﺩﻩ ﺩﺭﺝ ﻣﻲ ﻛﻨﺪ ﻛﻪ ﻳﻚ ﻗﻔﻞ x-mode
ﺭﺍ ﺭﻭﻱ ﭼﻨﺪﺗﺎﻳﻲ ﻛﻪ ﻫﺴﺖ ﻣﻲ ﺩﻫﺪ.
) ﺑﻪ ﻋﻨﻮﺍﻥ ﻣﺜﺎﻝ .ﻳﺎﻓﺘﻦ ﻣﻘﺪﺍﺭ ﻣﺎﻧﺪﻩ ﻫﺎﻱ ﻫﻤﻪ ﻱ ﻣﺤﺎﺳﺒﺎﺕ ﺩﺭ ( perrgridgeﻭ ﻳﻚ
ﺗﺮﺍﻛﻨﺸﻲ ﻛﻪ ﻳﻚ ﭼﻨﺪﺗﺎﻱﻱ ﺭﺍ ﺩﺭ ﺭﺍﺑﻄﻪ ﺩﺭﺝ ﻣﻲ ﻛﻨﺪ.
) ﺑﻪ ﻋﻨﻮﺍﻥ ﻣﺜﺎﻝ .ﺩﺭﺝ ﻳﻚ ﻣﺤﺎﺳﺒﻪ ﺟﺪﻳﺪ ﺩﺭ ) (Perryridgeﺗﺼﻮﺭﻱ( ﻧﺎﺳﺎﺯﮔﺎﺭﻱ ﻋﻠﻲ
ﺭﻏﻢ ﻫﺮ ﭼﻨﺪﺗﺎﻳﻲ ﻣﺸﺘﺮﻙﻱ ﻛﻪ ﺩﺭ ﺩﺳﺘﺮﺱ ﻧﻴﺴﺖ.
• ﺍﮔﺮ ﺕﻧﻬﺎ ﭼﻨﺪ ﻗﻔﻞ ﺍﺳﺘﻔﺎﺩﻩ ﺷﻮﺩ ،ﻧﺘﻴﺠﻪ ﻣﻲ ﺗﻮﺍﻧﺪ ﺑﺮﻧﺎﻣﻪ ﻫﺎﻱ ﻏﻴﺮﺳﺮﻳﺎﻟﻲ ﺑﺎﺷﺪ .
ﺑﻪ ﻋﻨﻮﺍﻥ ﻣﺜﺎﻝ .ﺑﺮﺭﺳﻲ ﺍﺟﻤﺎﻟﻲ ﺗﺮﺍﻛﻨﺶ ﻣﺤﺎﺳﺒﺎﺕ ﺟﺪﻳﺪ ﺭﺍ ﻧﺸﺎﻥ ﻧﻤﻲ ﺩﻫﺪ ،ﺍﻣﺎ ﭼﻨﺪ ﺗﺎ
ﺍﺯ ﻧﻮﺷﺘﻪ ﻫﺎﻳﻲ ﻛﻪ ﺗﻮﺳﻂ ﺗﺮﺍﻛﻨﺶ ﻭﻳﺮﺍﻳﺶ ﺷﺪﻩ ﺭﺍ ﻣﻲ ﺧﻮﺍﻧﺪ.
93
ﺭﺍﻩ ﺣﻞ ﺍﻭﻝ :
• ﺍﺭﺗﺒﺎﻁ ﺩﺍﺩﻥ ﻳﻚ ﺑﺨﺶ ﺩﺍﺩﻩ ﺑﺎ ﺧﻮﻳﺶ ،ﺑﺎﻧﻤﺎﻳﺶ ﺩﺍﺩﻥ ﺍﻃﻼﻋﺎﺗﻲ ﺩﺭ ﻣﻮﺭﺩ ﺍﻳﻦ ﻛﻪ ﭼﻪ ﭼﻨﺪﺗﺎﻳﻲ
ﻫﺎﻳﻲ ﺭﺍ ﺍﺯ ﺭﺍﺑﻄﻪ ﺷﺎﻣﻞ ﻣﻲ ﺷﻮﺩ.
• ﺗﺮﺍﻛﻨﺶ ﻫﺎﻳﻲ ﻛﻪ ﺑﻪ ﻃﻮﺭ ﺍﺟﻤﺎﻟﻲ ﺭﺍﺑﻄﻪ ﺣﺎﺻﻞ ﺍﺯ ﻳﻚ ﻗﺴﻤﺖ ﺍﺯ ﻗﻔﻞ ﺭﺍ ﺩﺭ ﺑﺨﺸﻲ ﺍﺯ ﺩﺍﺩﻩ
ﺑﺮﺭﺳﻲ ﻣﻲ ﻛﻨﻨﺪ.
• ﺗﺮﺍﻛﻨﺶ ﻫﺎﻳﻲ ﻛﻪ ﺩﺭﺝ ﻳﺎ ﺣﺬﻑ ﻣﻲ ﻛﻨﻨﺪ ﻳﻚ ﭼﻨﺪﺗﺎﻳﻲ ﺭﺍ ﺑﺮﺍﻱ ﻳﻚ ﻗﻔﻞ ﺍﻧﺤﺼﺎﺭﻱ ﺑﺮﺭﻭﻱ
ﺑﺨﺸﻲ ﺍﺯ ﺩﺍﺩﻩ ﺑﻪ ﺩﺳﺖ ﻣﻲ ﺁﻭﺭﻧﺪ)ﺗﻮﺟﻪ :ﻗﻔﻞ ﻫﺎﻱ ﺑﺮﺭﻭﻱ ﺑﺨﺸﻲ ﺍﺯ ﺩﺍﺩﻩ ،ﻧﺎﺳﺎﺯﮔﺎﺭﻱ ﺑﺎ ﻗﻔﻞ ﻫﺎ
ﺑﺮﺭﻭﻱ ﭼﻨﺪﺗﺎﻳﻲ ﺍﺧﺘﺼﺎﺻﻲ ﺭﺍ ﺍﻧﺠﺎﻡ ﻧﻤﻲ ﺩﻫﻨﺪ(.
ﭘﺮﻭﺗﻜﻞ ﺷﺎﺧﺺ ﻗﻔﻞ ﺑﻴﺸﺘﺮﻳﻦ ﻫﻤﺰﻣﺎﻧﻲ ﺭﺍ ﻓﺮﺍﻫﻢ ﻣﻲ ﻛﻨﺪ ﺩﺭﺣﺎﻟﻲ ﻛﻪ ﻣﺎﻧﻊ ﭘﺪﻳﺪﻩ ﻱ ﻓﺎﻧﺘﻮﻡ ﻣﻲ ﺷﻮﺩ،
ﺑﻮﺍﺳﻄﻪ ﻗﻔﻞ ﻫﺎﻳﻲ ﻛﻪ ﺑﻪ ﺳﻄﻞ ﻫﺎﻱ ﺷﺎﺧﺺ ﻣﻌﻴﻦ ﻧﻴﺎﺯ ﺩﺍﺭﻧﺪ.
• ﻳﻚ ﺗﺮﺍﻛﻨﺶ ﻣﻲ ﺗﻮﺍﻧﺪ ﻳﻚ ﭼﻨﺪ ﺗﺎﻳﻲ ﺭﺍ ﺑﻪ ﺩﺳﺖ ﺁﻭﺭﺩ ﺗﻨﻬﺎ ﺑﻌﺪ ﺍﺯ ﺍﻳﻨﻜﻪ ﺁﻧﻬﺎ ﺭﺍ ﺍﺯ ﻃﺮﻳﻖ ﻳﻚ
ﺷﺎﺧﺺ ﻳﺎ ﺑﻴﺸﺘﺮ ﺭﻭﻱ ﺭﻭﺍﺑﻂ ﭘﻴﺪﺍ ﻛﻨﺪ.
• ﻳﻚ ﺗﺮﺍﻛﻨﺶ Tiﻳﻚ ﻣﺮﺍﺟﻌﻪ ﺍﻱ ﺭﺍ ﻛﻪ ﺑﺎﻳﺪ ﺗﻤﺎﻡ ﮔﺮﻩ ﻫﺎﻱ ﺑﺮگ ﺷﺎﺧﺺﻱ ﺭﺍ ﻛﻪ ﺑﻪ ﺁﻥ ﺩﺳﺘﺮﺳﻲ
ﺩﺍﺭﻧﺪ ﺭﺍ ﻗﻔﻞ ﻛﻨﺪ ،ﺩﺭ s-modeﻧﻤﺎﻳﺶ ﻣﻲ ﺩﻫﺪ.
ﻭﻟﻮﺁﻧﻜﻪ ﮔﺮﻩ ﺑﺮگ ﺷﺎﻣﻞ ﻫﺮﭼﻨﺪﺗﺎ ﻣﺮﺍﺟﻌﻪ ﺷﺎﺧﺺ ﻗﺎﻧﻊ ﻛﻨﻨﺪﻩ ﻧﺒﺎﺷﺪ).ﺑﻪ ﻋﻨﻮﺍﻥ ﻣﺜﺎﻝ.
ﺑﺮﺍﻱ ﻳﻚ ﻧﺎﺣﻴﻪ ﭘﺮﺱ ﻭ ﺟﻮ ،ﺩﺭﺁﻥ ﻧﺎﺣﻴﻪ ﺑﻴﺸﺘﺮ ﺍﺯ ﭼﻨﺪ ﺗﺎ ﺑﺮگ ﻧﻴﺴﺖ(.
• ﻳﻚ ﺗﺮﺍﻛﻨﺶ Tiﻛﻪ ﺩﺭﺝ ﻣﻲ ﻛﻨﺪ ،ﻭﻳﺮﺍﻳﺶ ﻳﺎ ﺣﺬﻑ ﻣﻲ ﻛﻨﺪ ﭼﻨﺪ ﺗﺎ tiﺭﺍﺩﺭ ﻳﻚ ﺭﺍﺑﻄﻪ .r
94
ﺑﺎﻳﺪ ﺗﻤﺎﻡ ﺷﺎﺧﺺ ﻫﺎ ﺭﺍ ﺗﺎ rﻭﻳﺮﺍﻳﺶ ﻛﻨﺪ.
ﺑﺎﻳﺪ ﻗﻔﻞ ﻫﺎﻱ ﺍﻧﺤﺼﺎﺭﻱ ﺭﺍ ﺭﻭﻱ ﺗﻤﺎﻡ ﮔﺮﻩ ﻫﺎﻱ ﺑﺮگ ﺷﺎﺧﺺ ﺳﺎﺧﺘﮕﻲ ﺗﻮﺳﻂ
ﺩﺭﺝ/ﻭﻳﺮﺍﻳﺶ/ﺣﺬﻑ ﺑﻪ ﺩﺳﺖ ﺁﻭﺭﺩ.
ﺳﺎﺯﮔﺎﺭﻱ ﺩﺭﺟﻪ : 2ﺍﺧﺘﻼﻑ ﺍﺯ ﻗﻔﻞ 2ﻓﺎﺯ ﺩﺭ ﺍﻳﻦ ﻛﻪ s-lockﻣﻤﻜﻦ ﺩﺭ ﻫﺮ ﺯﻣﺎﻥ ﺁﺯﺍﺩ ﺷﻮﺩ ،ﻭ ﻗﻔﻞ
ﻫﺎﻳﻲ ﻛﻪ ﻣﻤﻜﻦ ﺩﺭ ﻫﺮ ﺯﻣﺎﻥ ﺑﻪ ﺩﺳﺖ ﺑﻴﺎﻳﻨﺪ.
• Serializabilityﺗﻀﻤﻴﻦ ﺷﺪﻩ ﻧﻴﺴﺖ ،ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺲ ﺑﺎﻳﺪ ﻣﻄﻤﺌﻦ ﺑﺎﺷﺪ ﻛﻪ ﻫﻴﭻ ﻭﻗﺖ ﺍﺷﺘﺒﺎﻫﻲ
ﺍﺯ ﭘﺎﻳﮕﺎﻩ ﺩﺍﺩﻩ ﺭﺥ ﻧﻤﻲ ﺩﻫﺪ.
• ﺑﺮﺍﻱ ﻣﺸﺎﻫﺪﻩ ،ﻫﺮ ﺗﺎﭘﻠﻲ ﻛﻪ ﻗﻔﻞ ﺷﺪﻩ ﺍﺳﺖ ،ﻣﻲ ﺧﻮﺍﻧﺪ ﻭ ﻓﻮﺭﺍً ﺁﻥ ﻗﻔﻞ ﺭﺍ ﺁﺯﺍﺩ ﻣﻲ ﻛﻨﺪ.
• ﺧﻮﺍﻧﺪﻥ ﺗﻜﺮﺍﺭﭘﺬﻳﺮ :ﺍﺟﺎﺯﻩ ﻣﻲ ﺩﻫﺪ ﺗﺎ ﺳﻮﺍﺑﻖ ﺗﻨﻬﺎ ﺧﻮﺍﻧﺪﻥ ﺭﺍ ﻗﺒﻮﻝ ﻛﻨﻨﺪ ،ﻭ ﺗﻜﺮﺍﺭ ﻛﻨﻨﺪ ﻳﻚ
ﺧﻮﺍﻧﺪﻥﻱ ﻛﻪ ﺑﺎﻳﺪ ﺑﻪ ﻫﻤﺎﻥ ﻣﻘﺪﺍﺭ ﺑﺮﮔﺮﺩﺩ)ﺑﻨﺎﺑﺮﺍﻳﻦ ﺧﻮﺍﻧﺪﻥ ﻗﻔﻞ ﻫﺎ ﺑﺎﻳﺪ ﺣﻒﻅ ﺷﻮﺩ (
95
ﺑﺎ ﺍﻳﻦ ﺣﺎﻝ ،ﭘﺪﻳﺪﻩ ﻱ ﻓﺎﻧﺘﻮﻡ ﻧﻴﺎﺯ ﺩﺍﺭﺩ ﻛﻪ ﻣﺎﻧﻊ ﺁﻥ ﻧﺸﻮﺩ.
– T1ﻣﻤﻜﻦ ﺑﺮﺧﻲ ﺍﺯ ﺳﻮﺍﺑﻖ ﻭﺍﺭﺩ ﺷﺪﻩ ﺗﻮﺳﻂ T2ﺭﺍ ﺑﺒﻴﻨﺪ ،ﺍﻣﺎ ﺍﻧﻮﺍﻉ ﺩﻳﮕﺮﻱ ﻛﻪ
ﺗﻮﺳﻂ T2ﻭﺍﺭﺩ ﺷﺪﻧﺪ ﺭﺍ ﻧﺒﻴﻨﺪ.
• ﺧﻮﺍﻧﺪﻩ ﺷﺪﻩ :ﻫﻤﺎﻥ ﺩﺭﺟﻪ 2ﺳﺎﺯﮔﺎﺭﻱ ،ﺍﻣﺎ ﺳﻴﺴﺘﻢ ﻫﺎ ﺑﺎﻳﺪ ﺁﻥ ﺭﺍ ﺑﻪ ﻋﻨﻮﺍﻥ ﻳﻚ ﻣﻜﺎﻥ ﻧﻤﺎﻱ
ﭘﺎﻳﺪﺍﺭ ﭘﻴﺎﺩﻩ ﺳﺎﺯﻱ ﻛﻨﻨﺪ.
• ﺧﻮﺍﻧﺪﻩ ﻧﺸﺪﻩ :ﺍﺟﺎﺯﻩ ﻣﻲ ﺩﻫﺪ ﺣﺘﻲ ﺩﺍﺩﻩ ﻏﻴﺮ ﻗﺎﺑﻞ ﻗﺒﻮﻝ ﺧﻮﺍﻧﺪﻩ ﺷﻮﺩ.
ﺩﺭ ﺑﺴﻴﺎﺭﻱ ﺍﺯ ﺳﻴﺴﺘﻢ ﻫﺎﻱ ﭘﺎﻳﮕﺎﻩ ﺩﺍﺩﻩ :ﺳﻄﺢ ﺛﺒﺎﺕ ﭘﻴﺶ ﻓﺮﺽ ﺭﺍ ﺑﻪ ﻃﻮﺭ ﻗﺎﺑﻞ ﻗﺒﻮﻝ ﻣﻲ ﺧﻮﺍﻧﺪ.
ﺩﻳﮓ ﻣﻮﺍﺭﺩ ﭘﺎﻳﮕﺎﻩ ﺩﺍﺩﻩ ﻛﻪ ﺗﻨﻬﺎ ﻛﺎﺭﺵ ﺑﺮﺍﻱ ﻛﻤﻚ ﺑﻪ ﺩﺳﺘﺮﺳﻲ ﺑﻪ ﺩﺍﺩﻩ ﻫﺎ ﻣﻲ ﺑﺎﺷﺪ.
ﺷﺎﺧﺺ ﺑﺮ ﺧﻼﻑ ﺭ
ﺷﺎﺧﺺ ﺳﺎﺧﺘﺎﺭﻫﺎ ﻣﻌﻤﻮﻻ ﺍﻏﻠﺐ ﺩﺭ ﺩﺳﺘﺮﺱ ،ﺧﻴﻠﻲ ﺑﻴﺸﺘﺮ ﺍﺯ ﺩﻳﮕﺮ ﻣﻮﺍﺭﺩ ﭘﺎﻳﮕﺎﻩ ﺩﺍﺩﻩ ﺍﺳﺖ.
• ﺩﺭﻣﺎﻥ ﺷﺎﺧﺺ ﺳﺎﺧﺘﺎﺭﻫﺎﻳﻲ ﻣﺎﻧﻨﺪ ﺩﻳﮕﺮ ﻡﻭﺍﺭﺩ ﭘﺎﻳﮕﺎﻩ ﺩﺍﺩﻩ ،ﺑﻪ ﻋﻨﻮﺍﻥ ﻣﺜﺎﻝ ﻓﺎﺯ 2ﻗﻔﻞ ﮔﺮﻩ ﻫﺎﻱ
ﺷﺎﺧﺺ ﻣﻲ ﺗﻮﺍﻧﺪ ﺑﻪ ﻫﻤﺰﻣﺎﻧﻲ ﻛﻢ ﻣﻨﺠﺮ ﺷﻮﺩ.
ﭼﻨﺪﻳﻦ ﭘﺮﻭﺗﻜﻞ ﻫﺎﻱ ﻫﻤﺰﻣﺎﻧﻲ ﺍﻭﻝ ﻛﻪ ﺩﺭ ﺁﻥ ﻕﻓﻞ ﺑﺮ ﺭﻭﻱ ﮔﺮﻩ ﻫﺎﻱ ﺩﺍﺧﻠﻲ ﺩﺭ ﺍﻭﻟﻲ ﺑﻪ ﺻﻮﺭﺕ ﺁﺯﺍﺩ ﻭﺟﻮﺩ
ﺩﺍﺭﺩ ،ﻭ ﻧﻪ ﺩ ﺭﻣﺪ ﺩﻭ ﻓﺎﺯ ﺍﺳﺖ.
• ﺁﻥ ﻗﺎﺑﻞ ﻗﺒﻮﻝ ﺍﺳﺖ ﺑﺮﺍﻱ ﺩﺳﺘﺮﺳﻲ ﻫﻤﺰﻣﺎﻥ nonserializableﺑﻪ ﻳﻚ ﺷﺎﺧﺺ ﻃﻮﻻﻧﻲ ﻛﻪ
ﺩﻗﺖ ﺷﺎﺧﺺ ﺣﻔﻆ ﺷﺪﻩ ﺍﺳﺖ.
ﺑﻪ ﻃﻮﺭ ﺧﺎﺹ ،ﺧﻮﺍﻧﺪﻥ ﻣﻘﺎﺩﻳﺮ ﺩﻗﻴﻖ ﺁﻥ ﺩﺭ ﻳﻚ ﮔﺮﻩ ﺩﺍﺧﻠﻲ ﺍﺯ ﻳﻚ ﺩﺭﺧﺖ B+ﺑﻲ ﺭﺑﻂ
ﺯﻣﻴﻦ ﺭﺍ ﺩﺭ ﮔﺮﻩ ﺑﺮگ ﺩﺭﺳﺖ ﻛﻨﻴﻢ.
ﻫﺴﺘﻨﺪ ﺗﺎ ﺯﻣﺎﻧﻲ ﻛﻪ ﻣﺎ ﻩ
96
ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ crabbingﺑﻪ ﺟﺎﻱ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﻗﻔﻞ 2ﻓﺎﺯ ﺑﺮ ﺭﻭﻱ ﮔﺮﻩ ﻫﺎﻱ B+ﺩﺭﺧﺖ ،ﺩﺭ ﻃﻮﻝ
ﺟﺴﺘﺠﻮ/ﺩﺭﺝ/ﺣﺬﻑ ﺑﻪ ﺷﺮﺡ ﺯﻳﺮ ﺍﺳﺖ :
• ﭘﺲ ﺍﺯ ﻗﻔﻞ ﻛﺮﺩﻥ ﺗﻤﺎﻡ ﻓﺮﺯﻧﺪﺍﻥ ﻣﻮﺭﺩ ﻧﻴﺎﺯ ﻳﻚ ﮔﺮﻩ ﺩﺭ ﺣﺎﻟﺖ ﻣﺸﺘﺮﻙ ،ﺍﻧﺘﺸﺎﺭ ﻗﻔﻞ ﺑﺮ ﺭﻭﻱ ﮔﺮﻩ
• ﺩﺭ ﻃﻮﻝ ﺩﺭﺝ /ﺣﺬﻑ ،ﺍﺭﺗﻘﺎء ﻗﻒﻝ ﻫﺎﻱ ﮔﺮﻩ ﺑﺮگ ﺑﻪ ﺣﺎﻟﺖ ﻫﺎﻱ ﻣﻨﺤﺼﺮ ﺑﻪ ﻓﺮﺩ
• ﻩ ﻧﮕﺎﻣﻲ ﻛﻪ ﺷﻜﺎﻑ ﻳﺎ coalescingﺑﺮﺍﻱ ﺗﻐﻴﻴﺮﺍﺕ ﻳﻚ ﻭﺍﻟﺪ ﻣﻮﺭﺩ ﻧﻴﺎﺯ ﺍﺳﺖ ،ﻗﻔﻞ ﻭﺍﻟﺪ ﺩﺭ ﺣﺎﻟﺖ
ﻣﻨﺤﺼﺮﺑﻪ ﻓﺮﺩ ﺍﺳﺖ.
• ﺁﻳﺎ ﻣﻲ ﺗﻮﺍﻧﻨﺪ ﺑﻲ ﻧﺘﻴﺠﻪ ﺑﻤﺎﻧﻨﺪ ﻭ ﺟﺴﺘﺠﻮ ﻛﻨﻨﺪ ﺭﺍﻩ ﺍﻧﺪﺍﺯﻱ ﻣﺠﺪﺩ ،ﺑﺪﻭﻥ ﺗﺎﺛﻴﺮ ﺑﺮ ﺗﺮﺍﻛﻨﺶ
ﭘﺮﻭﺗﻜﻞ ﻫﺎﻱ ﺑﻬﺘﺮ ﺩﺭ ﺩﺳﺘﺮﺱ ﻫﺴﺘﻨﺪ ،ﻧﮕﺎﻩ ﻛﻨﻴﺪ ﺑﻪ ﺑﺨﺶ 16.9ﺑﺮﺍﻱ ﻳﻚ ﭘﺮﻭﺗﻜﻞ ،ﭘﺮﻭﺗﻜﻞ ﺩﺭﺧﺖ B-
LINK
ﻭ ﻣﻘﺎﺑﻠﻪ ﺑﺎ ﺗﻐﻴﻴﺮﺍﺗﻲ ﻛﻪ ﻣﻤﻜﻦ ﺍﺳﺖ ﺑﻴﻦ ﺁﺯﺍﺩﻱ ﻗﻔﻞ ﻭ ﺑﻪ ﺩﺳﺖ ﺁﻭﺭﺩﻥ ﺍﺗﻔﺎﻕ ﺍﻓﺘﺎﺩﻩ
ﺑﺎﺷﺪ.
ﭘﺮﻭﺗﻜﻞ ﺷﺎﺧﺺ ﻗﻔﻞ ﺑﺮﺍﻱ ﺟﻠﻮﮔﻴﺮﻱ ﺍﺯ ﻓﺎﻧﺘﻮﻡ ﻣﻮﺭﺩ ﻧﻴﺎﺯ ﻗﻔﻞ ﻛﻞ ﺑﺮگ
• ﻣﻲ ﺗﻮﺍﻧﺪ ﺩﺭ ﻫﻤﺰﻣﺎﻧﻲ ﺿﻌﻴﻒ ﺷﻮﺩ ﺩﺭ ﺻﻮﺭﺗﻲ ﻛﻪ ﺩﺭﺝ ﻫﺎﻱ ﺑﺴﻴﺎﺭﻱ ﻭﺟﻮﺩ ﺩﺍﺭﺩ
97
• ﻗﻔﻞ ﻛﺮﺩﻥ ﺗﻤﺎﻡ ﺍﺭﺯﺵ ﻫﺎﻳﻲ ﻛﻪ ﻣﺮﺍﺟﻌﻪ ﺑﻪ ﺷﺎﺧﺺ ﺭﺍ ﺑﺮﺁﻭﺭﺩﻩ ﻣﻲ ﻛﻨﺪ)ﻣﻄﺎﺑﻘﺖ ﺑﺎ ﺍﺭﺯﺵ ﻣﺮﺍﺟﻌﻪ
ﻭ ﻳﺎ ﺳﻘﻮﻁ ﺩﺭ ﻣﺤﺪﻭﺩﻩ ﻣﺮﺍﺟﻌﻪ(
ﻣﺤﺪﻭﺩﻩ ﻧﻤﺎﻳﺶ ﺩﺍﺩﻩ ﺷﺪﻩ ﺩﺭ ﺗﻀﺎﺩ ﺑﺎ ﺩﺭﺝ /ﺣﺬﻑ /ﺑﻪ ﺭﻭﺯﺭﺳﺎﻧﻲ ﺭﺍ ﺗﻀﻤﻴﻦ ﻣﻲ ﻛﻨﺪ.
• ﺻﺮﻑ ﻧﻈﺮ ﺍﺯ ﺍﻳﻦ ﻛﻪ ﺍﺗﻔﺎﻕ ﻣﻲ ﺍﻓﺘﺪ ،ﺗﺎ ﺯﻣﺎﻧﻲ ﻛﻪ ﻫﺮﺩﻭ ﻫﻤﺰﻣﺎﻥ ﻫﺴﺘﻨﺪ
ﺍﺳﻼﻳﺪﻫﺎﻱ ﺍﺿﺎﻓﻲ
ﺟﺪﺍﺳﺎﺯﻱ ﻓﻮﺭﻱ
ﺍﻧﮕﻴﺰﻩ :ﭘﺸﺘﻴﺒﺎﻧﻲ ﻧﻤﺎﻳﺶ ﺩﺍﺩﻩ ﺷﺪﻩ ﺗﺼﻤﻴﻢ ﻣﻲ ﮔﻴﺮﺩ ﻛﻪ ﺧﻮﺍﻧﺪﻥ ﻣﻘﺪﺍﺭﻫﺎﻱ ﺯﻳﺎﺩﻱ ﺍﺯ ﺩﺍﺩﻩ ﺑﻪ ﻃﻮﺭ
ﻫﻤﺰﻣﺎﻥ ﺩﺭ ﺗﻀﺎﺩﻧﺪ ﺑﺎ ﺗﺮﺍﻛﻨﺶ ﻫﺎﻱ OLTPﻛﻪ ﭼﻨﺪ ﺭﺩﻳﻒ ﺭﺍ ﺑﻪ ﺭﻭﺯﺭﺳﺎﻧﻲ ﻣﻲ ﻛﻨﻨﺪ.
ﺭﺍﻩ ﺣﻞ : 1ﺩﺍﺩﻥ "ﻋﻜﺲ ﻓﻮﺭﻱ” ﻣﻨﻄﻘﻲ ﺍﺯ ﺣﺎﻟﺖ ﭘﺎﻳﮕﺎﻩ ﺩﺍﺩﻩ ﺗﻨﻬﺎ ﺑﺮﺍﻱ ﺧﻮﺍﻧﺪﻥ ﺗﺮﺍﻛﻨﺶ ﻫﺎ ،ﺧﻮﺍﻧﺪﻥ ﻭ
ﻧﻮﺷﺖﻥ ﺗﺮﺍﻛﻨﺶ ﻫﺎ ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﻗﻔﻞ ﻃﺒﻴﻌﻲ
• Multiversionﻗﻔﻞ 2ﻓﺎﺯ
• ﻛﺎﺭ ﻣﻲ ﻛﻨﻨﺪ ﺑﻪ ﺧﻮﺑﻲ ،ﺍﻣﺎ ﭼﮕﻮﻧﻪ ﺑﺎﻳﺪ ﺑﺪﺍﻥﻱﻡ ﻛﻪ ﻳﻚ ﺗﺮﺍﻛﻨﺶ ﻓﻘﻂ ﺧﻮﺍﻧﺪﻧﻲ ﺍﺳﺖ؟
ﺭﺍﻩ ﺣﻞ :2ﺗﺼﻮﻳﺮ ﻓﻮﺭﻱ ﺍﺯ ﺣﺎﻟﺖ ﭘﺎﻳﮕﺎﻩ ﺩﺍﺩﻩ ﺑﺮﺍﻱ ﻫﺮ ﺕﺭﺍﻛﻨﺶ ﺭﺍ ﻣﻲ ﺩﻫﺪ ،ﺑﻪ ﺭﻭﺯﺭﺳﺎﻧﻲ ﻫﺎ ﺗﻨﻬﺎ ﻣﻮﺭﺩ
ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﻗﻔﻞ 2ﻓﺎﺯ ﺑﻪ ﻣﺤﺎﻓﻈﺖ ﺩﺭ ﺑﺮﺍﺑﺮ ﺑﻪ ﺭﻭﺯﺭﺳﺎﻧﻲ ﻫﻤﺰﻣﺎﻥ ﻫﺴﺘﻨﺪ.
98
ﺍﻧﻮﺍﻉ ﺍﺟﺮﺍﻫﺎ ﺩﺭ ﺑﺴﻴﺎﺭﻱ ﺍﺯ ﺳﻴﺴﺘﻢ ﻫﺎﻱ ﭘﺎﻳﮕﺎﻩ ﺩﺍﺩﻩ
ﻣﻲ ﭘﺬﻳﺮﺩ ﺗﻨﻬﺎ ﺍﮔﺮ ﻫﻴﭻ ﺗﺮﺍﻛﻨﺶ ﻫﻤﺰﻣﺎﻥ ﺩﻳﮕﺮﻱ ﺩﺭ ﺣﺎﻝ ﺣﺎﺿﺮ ﻧﻮﺷﺘﻪ ﻧﺸﺪﻩ ﺍﺳﺖ ﺩﺍﺩﻩ
ﺍﻱ ﻛﻪ T1ﺑﺮﺍﻱ ﻧﻮﺷﺘﻦ ﺩﺭ ﻧﻈﺮ ﺩﺍﺭﺩ.
99
)W(Y := 1
Commit
Start
R(X) 0
R(Y) 1
)W(X:=2
)W(Z:=3
Commit
R(Z) 0
R(Y) 1
)W(X:=3
Commit-Req
ﻣﺰﺍﻳﺎﻱ SI
100
• ﺑﺪﻭﻥ ﺑﻪ ﺭﻭﺯﺭﺳﺎﻧﻲ ﺍﺯ ﺩﺳﺖ ﺭﻓﺘﻪ
ﻣﺸﻜﻼﺕ ﺑﺎ SI
ﺟﺪﺍﺳﺎﺯﻱ ﻓﻮﺭﻱ
• T1: x:=y
• ﻣﺜﺎﻝ :
101
ﻳﺎﻓﺘﻦ ﺣﺪﺍﻛﺜﺮ ﺗﻌﺪﺍﺩ ﺩﺳﺘﻮﺭﻫﺎ ﺩﺭ ﻣﻴﺎﻥ ﺗﻤﺎﻡ ﺩﺳﺘﻮﺭﺍﺕ
serializability SI ﺭﺍ ﻣﻲ ﺷﻜﻨﺪ ﺯﻣﺎﻧﻲ ﻛﻪ txnsﻫﺎ ﺁﻳﺘﻢ ﻫﺎﻱ ﻣﺨﺘﻠﻒ ﺭﺍ ﺗﻐﻴﻴﺮ ﻣﻲ ﺩﻫﻨﺪ ،ﻫﺮ ﻛﺪﺍﻡ
ﺑﺮﺍﺳﺎﺱ ﻳﻚ ﺣﺎﻟﺖ ﻗﺒﻠﻲ ﺍﺯ ﺗﻐﻴﻴﺮﺍﺕ ﺁﻳﺘﻢ ﺩﻳﮕﺮ
ﺯﻣﺎﻧﻲ ﻛﻪ txnsﺩﺭﮔﻴﺮ ﺍﺻﻼﺡ ﺩﺍﺩﻩ ﻫﺎﻱ ﻣﺨﺘﻠﻒ ﺍﺳﺖ ،ﻛﻪ ﻣﻌﻤﻮﻻ ﻫﺮ ﺩﻭ ﺁﻧﻬﺎ ﺭﻭﻱ ﻳﻚ
ﺁﻳﺘﻢ ﻣﺸﺘﺮﻙ ﺗﻐﻴﻴﺮ ﺩﺍﺭﻧﺪ ﻫﻤﭽﻨﻴﻦ )ﻣﺎﻧﻨﺪ ﻣﻘﺪﺍﺭ ﻛﻞ( SIﻳﻜﻲ ﺍﺯ ﺁﻧﻬﺎ ﺑﻲ ﻧﺘﻴﺠﻪ ﺧﻮﺍﻫﺪ
ﻣﺎﻧﺪ.
ﺗﻮﺳﻌﻪ ﺩﻫﻨﺪﮔﺎﻥ ﻧﺮﻡ ﺍﻓﺰﺍﺭ ﺑﺎﻳﺪ ﺩﺭ ﻣﻮﺭﺩ ﻧﻮﺷﺘﻦ ﻣﻮﺭﺏ ﻣﺮﺍﻗﺐ ﺑﺎﺷﻨﺪ.
SIﻧﻴﺰ ﻣﻲ ﺗﻮﺍﻧﺪ ﺑﺎﻋﺚ ﻧﺎﻫﻨﺠﺎﺭﻱ ﻓﻘﻂ ﺧﻮﺍﻧﺪﻧﻲ ﺗﺮﺍﻛﻨﺶ ﺷﻮﺩ ،ﻛﻪ ﺩﺭ ﺁﻥ ﺗﺮﺍﻛﻨﺶ ﻣﻤﻜﻦ ﺍﺳﺖ ﻳﻚ
ﺣﺎﻟﺖ ﻧﺎﻣﻨﺎﺳﺐ ﺣﺘﻲ ﺍﮔﺮ ﺑﻪ ﺭﻭﺯﺭﺳﺎﻧﻲ serializableﺑﺎﺷﺪ ﺭﺍ ﺑﺒﻴﻨﺪ.
102
• ﻗﺎﻧﻮﻥ ﭘﻴﺎﺩﻩ ﺳﺎﺯﻱ ﺍﻭﺭﺍﻛﻞ “ ﺍﻭﻟﻴﻦ ﺑﺮﻧﺪﮔﺎﻥ ﺑﻪ ﺭﻭﺯﺭﺳﺎﻧﻲ “)ﺍﻧﻮﺍﻉ ﻣﺨﺘﻠﻔﻲ ﺍﺯ “ ﺍﻭﻟﻴﻦ ﺑﺮﻧﺪﮔﺎﻥ
ﭘﺬﻳﺮﻓﺘﻪ ﺷﺪﻩ“ (
ﻧﻮﻳﺴﻨﺪﻩ ﻫﻤﺰﻣﺎﻥ ﺩﺭ ﺯﻣﺎﻥ ﻧﻮﺷﺘﻦ ﻋﻤﻞ ﭼﻚ ﻛﺮﺩﻥ ﺭﺍ ﺍﻧﺠﺎﻡ ﻣﻲ ﺩﻫﺪ ،ﻧﻪ ﺩﺭ ﺯﻣﺎﻥ ﺗﺄﻳﻴﺪ
ﺁﻳﺎ ﻣﻲ ﺗﻮﺍﻥ ﺭﺍﻩ ﻓﺮﺍﺭﻱ ﺑﺮﺍﻱ ﭘﺮﺱ ﻭ ﺟﻮﻱ ﺧﺎﺹ ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺁﻥ ﺭﺍ ...ﺑﺮﺍﻱ ﺑﻪ ﺭﻭﺯﺭﺳﺎﻧﻲ ﺩﺭ Oracleﻭ
PostgreSQLﺍﻧﺘﺨﺎﺏ ﻛﺮﺩ.
ﭘﺎﻳﺎﻥ ﻓﺼﻞ
ﺧﻮﺍﻧﺪﻥ ﻓﻮﺭﻱ
103
ﻧﻮﺷﺘﻦ ﻓﻮﺭﻱ :ﺍﻋﻤﺎﻝ ﻛﻨﻨﺪﻩ ﺍﻭﻟﻴﻦ ﭘﻴﺮﻭﺯﻱ
104
• ﮔﻮﻧﺎﮔﻮﻧﻲ :ﺍﻭﻟﻴﻦ ﺑﻪ ﺭﻭﺯﺭﺳﺎﻧﻲ ﻛﻪ ﺑﺮﻧﺪﻩ ﺷﺪ
ﺗﻔﺎﻭﺕ ﺗﻨﻬﺎ ﺩﺭ ﺯﻣﺎﻧﻲ ﻛﻪ ﺑﻲ ﻧﺘﻴﺠﻪ ﻣﻲ ﻣﺎﻧﺪ ،ﺩﺭ ﻏﻴﺮ ﺍﻳﻦ ﺻﻮﺭﺕ ﻣﻌﺎﺩﻝ ﺍﺳﺖ.
105
ﺟﺰﺋﻴﺎﺕ ﺯﻣﺎﻧﺒﻨﺪ ﺗﺤﺖ ﻗﻔﻞ 2ﻓﺎﺯ
106
ﺯﻣﺎﻧﺒﻨﺪ ﻧﺎﻗﺺ ﺑﺎ ﻗﻔﻞ ﺗﺒﺪﻳﻞ
107
ﻧﻤﻮﺩﺍﺭ ﭘﺎﻳﮕﺎﻩ ﺩﺍﺩﻩ ﺑﺎ ﺳﺎﺧﺘﺎﺭ ﺩﺭﺧﺖ
108
ﺯﻣﺎﻧﺒﻨﺪ 3
109
ﺯﻣﺎﻧﺒﻨﺪ 4
ﺳﺎﺯﮔﺎﺭﻱ ﺑﺎ ﻣﺎﺗﺮﻳﺲ
110
ﺯﻣﺎﻧﺒﻨﺪ nonserializableﺑﺎ ﺩﺭﺟﻪ ﺳﺎﺯﮔﺎﺭﻱ 2
111
ﻗﻔﻞ ﻣﺎﺗﺮﻳﺲ ﺳﺎﺯﮔﺎﺭﻱ
112
ﻓﺼﻞ :6
ﭘﺎﻳﮕﺎﻩ ﺩﺍﺩﻩ ﺗﻮﺯﻳﻊ ﺷﺪﻩ
113
ﺳﻴﺴﺘﻢ ﭘﺎﻳﮕﺎﻩ ﺩﺍﺩﻩ ﺗﻮﺯﻳﻊ ﺷﺪﻩ:
ﺳﻴﺴﺘﻢ ﭘﺎﻳﮕﺎﻩ ﺩﺍﺩﻩ ﺗﻮﺯﻳﻊ ﺷﺪﻩ ﻣﺘﺸﻜﻞ ﺍﺯ ﺳﺎﻳﺖ ﻫﺎﻱ ﺁﺯﺍﺩﺍﻧﻪ ﺟﻔﺖ ﺷﺪﻩ ﺍﻱ ﺍﺳﺖ ﻛﻪ ﺩﺭ ﻫﻴﭻ ﻣﻮﻟﻔﻪ
ﻓﻴﺰﻳﻜﻲ ﺍﺷﺘﺮﺍﻙ ﻧﺪﺍﺭﻧﺪ .ﺳﻴﺴﺘﻢ ﻫﺎﻱ ﭘﺎﻳﮕﺎﻩ ﺩﺍﺩﻩ ﻛﻪ ﺩﺭ ﻫﺮ ﺳﺎﻳﺖ ﺍﺟﺮﺍ ﻣﻲ ﺷﻮﺩ ،ﻣﺴﺘﻘﻞ ﺍﺯ
ﻳﻜﺪﻳﮕﺮ ﻣﻲ ﺑﺎﺷﺪ .ﺗﺮﺍﻛﻨﺶ ﻫﺎ ﻣﻤﻜﻦ ﺍﺳﺖ ﺩﺭ ﻳﻚ ﻳﺎ ﭼﻨﺪ ﺳﺎﻳﺖ ﺑﻪ ﺩﺍﺩﻩ ﻫﺎ ﺩﺳﺘﺮﺳﻲ ﺩﺍﺷﺘﻪ ﺑﺎﺷﺪ .
ﺑﺎ ﻳﻜﺪﻳﮕﺮ ﺁﺷﻨﺎﻳﻲ ﺩﺍﺭﻧﺪ ﻭ ﻣﻮﺍﻓﻖ ﻫﻤﻜﺎﺭﻱ ﺩﺭ ﺩﺭﺧﻮﺍﺳﺖ ﻫﺎﻱ ﻛﺎﺭﺑﺮ ﭘﺮﺩﺍﺯﺵ ﻫﺴﺘﻨﺪ .
ﻫﺮ ﺳﺎﻳﺖ ﺑﺨﺸﻲ ﺍﺯ ﺍﺳﺘﻘﻼﻝ ﺍﺵ ﺭﺍ ﺑﺮ ﺣﺴﺐ ﺣﻖ ﺗﻐﻴﻴﺮ ﻃﺮﺡ ﻫﺎ ﻳﺎ ﻧﺮﻡ ﺍﻓﺰﺍﺭ ﻭﺍﮔﺬﺍﺭ
ﻣﻲ ﻛﻨﺪ.
ﺳﺎﻳﺖ ﻫﺎﻱ ﻣﺘﻔﺎﻭﺕ ﻣﻤﻜﻦ ﺍﺳﺖ ﺍﺯ ﻧﺮﻡ ﺍﻓﺰﺍﺭ ﻭ ﻃﺮﺡ ﻫﺎﻱ ﻣﺨﺘﻠﻒ ﺍﺳﺘﻔﺎﺩﻩ ﻛﻨﻨﺪ .
ﺳﺎﻳﺖ ﻫﺎ ﻣﻤﻜﻦ ﻧﻴﺴﺖ ﺍﺯ ﻳﻜﺪﻳﮕﺮ ﺁﮔﺎﻫﻲ ﺩﺍﺷﺘﻪ ﺑﺎﺷﻨﺪ ﻭ ﻣﻤﻜﻦ ﺍﺳﺖ ﻓﻘﻂ ﺗﺴﻬﻴﻼﺕ ﻣﺤﺪﻭﺩ ﺭﺍ ﺑﺮﺍﻱ
ﻫﻤﻜﺎﺭﻱ ﺩﺭ ﭘﺮﺩﺍﺯﺵ ﺗﺮﺍﻛﻨﺶ ﻓﺮﺍﻫﻢ ﻛﻨﻨﺪ .
114
ﺫﺧﻴﺮﻩ ﺳﺎﺯﻱ ﺩﺍﺩﻩ ﺗﻮﺯﻳﻊ ﺷﺪﻩ:
ﺗﻜﺮﺍﺭ
• ﺳﻴﺴﺘﻢ ﻧﺴﺨﻪ ﻫﺎﻱ ﻣﺘﻌﺪﺩ ﺍﺯ ﺩﺍﺩﻩ ﺭﺍ ﺣﻔﻆ ﻣﻲ ﻛﻨﺪ،ﺩﺭ ﻣﺤﻞ ﻫﺎﻱ ﻣﺨﺘﻠﻒ ﺑﺮﺍﻱ
ﺑﺎﺯﻳﺎﺑﻲ ﺳﺮﻳﻌﺘﺮ ﻭ ﺗﻮﻟﺮﺍﻧﺲ ﺷﻜﺴﺖ ﻭ ﻋﻴﺐ ﺫﺧﻴﺮﻩ ﻣﻲ ﻛﻨﺪ .
ﺍﻓﺮﺍﺯ ﻛﺮﺩﻥ
• ﺍﺭﺗﺒﺎﻁ ﺑﻪ ﭼﻨﺪﻳﻦ ﺑﺨﺶ ﺫﺧﻴﺮﻩ ﺷﺪﻩ ﺩﺭ ﺳﺎﻳﺖ ﻫﺎﻱ ﻣﺸﺨﺺ ﻭ ﻣﺠﺰﺍ ﺍﻓﺮﺍﺯﻛﺮﺩﻥ ﻣﻲ
ﺷﻮﺩ.
• ﺍﺭﺗﺒﺎﻁ ﺑﻪ ﭼﻨﺪﻳﻦ ﺑﺨﺶ ﺍﻓﺮﺍﺯﻛﺮﺩﻥ ﻣﻲ ﺷﻮﺩ :ﺳﻴﺴﺘﻢ ﭼﻨﺪﻳﻦ ﻛﭙﻲ ﻳﻜﺴﺎﻥ ﺍﺯ ﭼﻨﻴﻦ
ﺑﺨﺸﻲ ﺭﺍ ﺣﻔﻆ ﻣﻲ ﻛﻨﺪ.
ﻛﭙﻲ ﺩﺍﺩﻩ:
ﻳﻚ ﺭﺍﺑﻄﻪ ﻳﺎ ﺑﺨﺸﻲ ﺍﺯ ﻳﻚ ﺭﺍﺑﻄﻪ ﻛﭙﻲ ﻣﻲ ﺷﻮﺩ ﺍﮔﺮ ﺑﻪ ﻃﻮﺭ ﺍ ﺿﺎﻓﻲ ﺩﺭ ﺩﻭ ﻳﺎ ﭼﻨﺪ ﺳﺎﻳﺖ ﺫﺧﻴﺮﻩ
ﺷﻮﺩ .ﻛﭙﻲ ﻛﺎﻣﻞ ﻳﻚ ﺭﺍﺑﻄﻪ ﻣﻮﺭﺩﻱ ﺍﺳﺖ ﻛﻪ ﺭﺍﺑﻄﻪ ﺩﺭ ﺗﻤﺎﻣﻲ ﺳﺎﻳﺖ ﻫﺎ ﺫﺧﻴﺮﻩ ﻣﻲ ﺷﻮﺩ .
ﭘﺎﻳﮕﺎﻩ ﻫﺎﻱ ﺩﺍﺩﻩ ﻛﺎﻣﻼ ﺩﺍﺭﺍﻱ ﺍﻃﻨﺎﺏ ﻭ ﺣﺸﻮ ،ﭘﺎﻳﮕﺎﻩ ﻫﺎﻳﻲ ﻫﺴﺘﻨﺪ ﻛﻪ ﻛﻪ ﺩﺭ ﺁﻥ ﻫﺮ ﺳﺎﻳﺖ ﺷﺎﻣﻞ
ﻧﺴﺨﻪ ﺍﻱ ﺍﺯ ﭘﺎﻳﮕﺎﻩ ﺩﺍﺩﻩ ﻛﻞ ﺍﺳﺖ.
ﻣﺰﺍﻳﺎﻱ ﻛﭙﻲ
ﻗﺎﺑﻠﻴﺖ ﺩﺳﺘﺮﺳﻲ :ﺷﻜﺴﺖ ﺳﺎﻳﺖ ﺷﺎﻣﻞ ﺭﺍﺑﻄﻪ rﺩﺭ ﺻﻮﺭﺕ ﻭﺟﻮﺩ ﻛﭙﻲ ﻣﻨﺠﺮﺑﻪ ﻋﺪﻡ
ﺩﺳﺘﺮﺳﻲ rﻧﻤﻲ ﺷﻮﺩ.
ﺗﺸﺎﺑﻪ ﻭ ﺗﻮﺍﺯﻱ :ﺳﻮﺍﻻﺕ ﺩﺭ rﻣﻤﻜﻦ ﺍﺳﺖ ﺗﻮﺳﻂ ﭼﻨﺪﻳﻦ ﮔﺮﻩ ﻣﻮﺍﺯﻱ ﭘﺮﺩﺍﺯﺵ ﺷﻮﺩ .
115
ﺍﻧﺘﻘﺎﻝ ﻛﺎﻫﺶ ﻳﺎﻓﺘﻪ ﺩﺍﺩﻩ :ﺭﺍﺑﻄﻪ rﺑﻪ ﻃﻮﺭ ﻣﺤﻠﻲ ﺩﺭ ﻫﺮ ﺳﺎﻳﺖ ﻣﺤﺘﻮﻱ ﻳﻚ ﻛﭙﻲ r
ﺩﺭﺩﺳﺘﺮﺱ ﻣﻲ ﺑﺎﺷﺪ.
ﻣﻌﺎﻳﺐ ﻛﭙﻲ
ﻫﺰﻳﻦﻩ ﺍﻓﺰﺍﻳﺶ ﻳﺎﻓﺘﻪ ﺑﻪ ﺭﻭﺯ ﺭﺳﺎ ﻧﻲ ﻫﺎ :ﻫﺮ ﻛﭙﻲ ﺭﺍﺑﻄﻪ rﺑﺎﻳﺴﺘﻲ ﺑﻪ ﺭﻭﺯ ﺷﻮﺩ.
ﭘﻲﭼﻴﺪﮔﻲ ﺍﻓﺰﺍﻳﺶ ﻳﺎﻓﺘﻪ ﻛﻨﺘﺮﻝ ﻫﻤﺰﻣﺎﻥ :ﺑﻪ ﺭﻭﺯﺭﺳﺎﻧﻲ ﻫﺎﻱ ﻫﻤﺰﻣﺎﻥ ﺗﻜﺮﺍﺭﻫﺎﻱ
ﻣﺸﺨﺺ ﻭ ﻣﺠﺰﺍ ﻣﻤﻜﻦ ﺍﺳﺖ ﻣﻨﺠﺮ ﺑﻪ ﺩﺍﺩﻩ ﺷﻮﺩ.
ﭘﻴﭽﻴﺪﮔﻲ ﺍﻓﺰﺍﻳﺶ ﻳﺎﻓﺘﻪ ﻛﻨﺘﺮﻝ ﻫﻤﺰﻣﺎﻥ :ﻛﭙﻲ ﻫﺎﻱ ﻣﺠﺰﺍ ﻭ ﻣﺸﺨﺺ ﺏﺭﻭﺯﺭﺳﺎﻧﻲ ﻫﺎﻱ
ﻫﻤﺰﻣﺎﻥ ﻣﻤﻜﻦ ﺍﺳﺖ ﻣﻨﺠﺮ ﺑﻪ ﺩﺍﺩﻩ ﻏﻴﺮ ﻣﺘﻨﺎﺳﺐ ﺷﻮﺩ ﻣﮕﺮﺁﻧﻜﻪ ﻣﻜﺎﻧﻴﺴﻢ ﻫﺎﻱ ﻛﻨﺘﺮﻝ
ﻫﻤﺰﻣﺎﻥ ﺧﺎﺹ ﺍﺟﺮﺍ ﺷﻮﺩ .
ﻳﻚ ﺭﺍﻩ ﺣﻞ :ﻳﻚ ﻧﺴﺨﻪ ﺭﺍ ﺑﻪ ﻋﻨﻮﺍﻥ ﻧﺴﺨﻪ ﺍﻭﻟﻴﻪ ﻭ ﺍﺻﻠﻲ ﺍﻧﺘﺨﺎﺏ ﻛﻨﻴﺪ ﻭ ﻋﻤﻠﻴﺎﺕ ﻛﻨﺘﺮﻝ ﻫﻤﺰﻣﺎﻥ ﺑﺮ
ﻧﺴﺨﻪ ﺍﻭﻟﻴﻪ ﺭﺍ ﺑﻜﺎﺭ ﺑﺮﻳﺪ.
ﺑﺨﺶ ﻋﻤﻮﺩﻱ :ﻃﺮﺡ ﺑﺮﺍﻱ ﺍﺭﺗﺒﺎﻁ rﺑﻪ ﻳﻚ ﻳﺎ ﭼﻨﺪﻳﻦ ﻃﺮﺡ ﻛﻮﭼﻜﺘﺮﺗﻌﻴﻴﻦ ﻣﻲ ﺷﻮﺩ .
)ﻳﺎ ﻣﻮﺭﺩ ﺑﺮﺗﺮ ( ﺟﻬﺖ ﺍﻃﻤﻴﻨﺎﻥ ﺍﺯ ﺗﻤﺎﻣﻲ ﻃﺮﺡ ﻫﺎ ﺑﺎﻳﺴﺘﻲ ﺷﺎﻣﻞ ﻳﻚ ﻣﻮﺭﺩ ﻣﻨﺘﺨﺐ ﻣﺸﺘﺮﻙ
ﻭﻳﮋﮔﻲ ﻣﺸﺘﺮﻙ ﺑﻲ ﺯﻳﺎﻥ ﺑﺎﺷﺪ .ﻭﻳﮋﮔﻲ ﺧﺎﺹ ،ﻭﻳﮋﮔﻲ ﺗﺎﭘﻞ ﻣﻤﻜﻦ ﺍﺳﺖ ﺑﻪ ﻫﺮ ﻃﺮﺡ ﺍﺿﺎﻓﻪ ﺷﻮﺩ
ﺗﺎ ﺑﻪ ﻋﻨﻮﺍﻥ ﻣﻮﺭﺩ ﻣﻨﺘﺨﺐ ﺑﻪ ﺧﺪﻣﺖ ﮔﺮﻓﺘﻪ ﺷﻮﺩ .
116
ﻣﺜﺎﻝ :ﻣﺤﺎﺳﺒﻪ ﺭﺍﺑﻄﻪ ﺑﺎ ﻃﺮﺡ ﺯﻳﺮ ،ﺣﺴﺎﺏ ) :ﻧﺎﻡ ﺷﻌﺒﻪ ،ﺷﻤﺎﺭﻩ ﺣﺴﺎﺏ ،ﻣﺎﻧﺪﻩ (
117
ﻣﺰﺍﻳﺎﻱ ﺍﻓﺮﺍﺯﻛﺮﺩﻥ
ﺍﻓﻘﻲ :ﺩﺭ ﺍﻳﻦ ﺣﺎﻟﺖ ﭘﺮﺩﺍﺯﺵ ﻣﻮﺍﺯﻱ ﺩﺭ ﺑﺨﺶ ﻫﺎﻱ ﻳﻚ ﺭﺍﺑﻄﻪ ﺭﺍ ﻣﺠﺎﺯ ﻣﻲ ﺳﺎﺯﺩ .ﺭﺍﺑﻄﻪ ﺭﺍ
ﻣﺠﺎﺯ ﺑﻪ ﺟﺪﺍﻳﻲ ﻭ ﺗﻘﺴﻴﻢ ﻣﻲ ﺳﺎﺯﺩ ﺗﺎ ﺟﺎﻳﻲ ﻛﻪ ﺗﺎﭘﻞ ﻫﺎ ﺩﺭ ﺟﺎﻳﻲ ﻭﺍﻗﻊ ﻣﻲ ﺷﻮﺩ ﻛﻪ ﻏﺎﻟﺒﺎ
ﻗﺎﺑﻞ ﺩﺳﺘﺮﺳﻲ ﻫﺴﺘﻨﺪ.
ﻋﻤﻮﺩﻱ :ﺩﺭ ﺍﻳﻨﺠﺎ ﺗﺎﭘﻞ ﻫﺎ ﺭﺍ ﻣﺠﺎﺯ ﺑﻪ ﺟﺪﺍﻳﻲ ﻣﻲ ﺳﺎﺯﺩ ﺗﺎ ﺟﺎﻳﻲ ﻛﻪ ﻫﺮ ﺑﺨﺶ ﺗﺎﭘﻞ ﺩﺭ ﺟﺎﻳﻲ
ﺫﺧﻴﺮﻩ ﻣﻲ ﺷﻮﺩ ﻛﻪ ﻏﺎﻟﺒﺎ ﻗﺎﺑﻞ ﺩﺳﺘﺮﺳﻲ ﺍﺳﺖ.
• ﻭﻳﮋﮔﻲ ﺗﺎﭘﻠﻲ ﺍﺗﺼﺎﻝ ﻣﻮﺛﺮ ﺑﺨﺶ ﻫﺎﻱ ﻋﻤﻮﺩﻱ ﺭﺍ ﻣﺠﺎﺯ ﻣﻲ ﺳﺎﺯﺩ .
• ﺑﺨﺶ ﻫﺎ ﻣﻤﻜﻦ ﺍﺳﺖ ﺑﻪ ﻃﻮﺭ ﻣﻮﻓﻘﻴﺖ ﺁﻣﻴﺰﻱ ﺑﻪ ﻋﻤﻖ ﺍﺧﺘﻴﺎﺭﻱ ﺍﻓﺮﺍﺯﻛﺮﺩﻥ ﺷﻮﺩ .
ﺷﻔﺎﻓﻴﺖ ﺩﺍﺩﻩ
ﺷﻔﺎﻓﻴﺖ ﺩﺍﺩﻩ ﺩﺭﺟﻪ ﺍﻱ ﻛﻪ ﻛﺎﺭﺑﺮ ﺳﻴﺴﺘﻢ ﻣﻤﻜﻦ ﺍﺳﺖ ﺍﺯ ﺟﺰﺋﻴﺎﺕ ﭼﮕﻮﻧﮕﻲ ﻭ ﺟﺎﻳﮕﺎﻩ ﺫﺧﻴﺮﻩ ﺍﻗﻼﻡ
ﺩﺍﺩﻩ ﺩﺭ ﺳﻴﺴﺘﻢ ﺗﻮﺯﻳﻊ ﺷﺪﻩ ﺑﻲ ﺍﻃﻼﻉ ﺑﺎﺷﺪ
ﺷﻔﺎﻓﻴﺖ ﺍﻓﺮﺍﺯﻛﺮﺩﻥ
ﺷﻔﺎﻓﻴﺖ ﺗﻜﺮﺍﺭ
ﺷﻔﺎﻓﻴﺖ ﻣﻮﻗﻌﻴﺖ
118
ﻣﻌﻴﺎﺭﻫﺎﻱ ﻧﺎﻣﮕﺬﺍﺭﻱ ﺍﻗﻼﻡ ﺩﺍﺩﻩ
ﺑﺎﻱ ﻧﺎﻡ ﻣﻨﺤﺼﺮ ﺑﻪ ﻓﺮﺩ ﮔﺴﺘﺮﺩﻩ ﺳﻴﺴﺘﻢ ﺭﺍ ﺩﺍﺷﺘﻪ ﺑﺎﺷﺪ .
ﻫﺮ ﻓﻘﺮﻩ ﺩﺍﺩﻩ ﺩ (1
ﻫﻤﭽﻨﻴﻦ ﺑﺎﻳﺴﺘﻲ ﺟﻬﺖ ﭘﻴﺪﺍ ﻛﺮﺩﻥ ﻣﻮﻗﻌﻴﺖ ﺍﻗﻼﻡ ﺩﺍﺩﻩ ﺑﻪ ﻃﻮﺭ ﻣﻮﺛﺮ ﻭ ﺳﻮﺩﻣﻨﺪ ﻋﻤﻠﻲ ﻭ (2
ﻣﻤﻜﻦ ﺑﺎﺷﺪ.
ﺟﻬﺖ ﺗﻐﻴﻴﺮ ﻣﻮﻗﻌﻴﺖ ﺍﻗﻼﻡ ﺩﺍﺩﻩ ﺑﻪ ﻃﻮﺭ ﺷﻔﺎﻑ ﻋﻤﻠﻲ ﻭ ﻣﻤﻜﻦ ﺑﺎﺷﺪ . (3
ﻫﻤﻴﻨﻄﻮﺭ ﻫﺮ ﺳﺎﻳﺖ ﺑﺎﻳﺴﺘﻲ ﻗﺎﺩﺭ ﺑﻪ ﺍﻳﺠﺎﺩ ﺍﻗﻼﻡ ﺩﺍﺩﻩ ﺟﺪﻳﺪ ﺑﻪ ﻃﻮﺭ ﻣﺴﺘﻘﻞ ﺑﺎﺷﺪ . (4
ﺳﺎﺧﺘﺎﺭ :ﺳﺮﻭﺭ ﻧﺎﻡ ﺑﺮﺍﻱ ﺗﻤﺎﻣﻲ ﺍﺳﺎﻣﻲ ﺗﻌﻴﻴﻦ ﻣﻲ ﺷﻮﺩ ﻭ ﻫﺮ ﺳﺎﻳﺖ ﺛﺒﺘﻲ ﺍﺯ ﺍﻗﻼﻡ ﺩﺍﺩﻩ ﻣﺤﻠﻲ
ﺭﺍ ﺍﻳﺠﺎﺩ ﻣﻲ ﻛﻨﺪ .ﺳﺎﻳﺖ ﻫﺎ ﺩﺭﺑﺎﺭﻩ ﺳﺮﻭﺭ ﻧﺎﻡ ﺑﺮﺍﻱ ﺗﻌﻴﻴﻦ ﻣﻮﻗﻌﻴﺖ ﺍﻗﻼﻡ ﺩﺍﺩﻩ ﻏﻴﺮﻣﺤﻠﻲ ﭘﺮﺱ
ﻭ ﺟﻮ ﻣﻲ ﻛﻨﻨﺪ.
ﻣﻌﺎﻳﺐ :ﻣﻌﻴﺎﺭ 4ﻧﺎﻣﮕﺬﺍﺭﻱ ﺭﺍ ﺑﺮﺁﻭﺭﺩﻩ ﻧﻤﻲ ﺳﺎﺯﺩ .ﺳﺮﻭﺭ ﻧﺎﻡ ﺑﻦ ﺑﺴﺖ ﻋﻤﻠﻜﺮﺩ ﺑﺎﻟﻘﻮﻩ ﺍﺳﺖ .
ﺳﺮﻭﺭ ﻧﺎﻡ ﻭﻳﮋﮔﻲ ﺧﺎﺹ ﺷﻜﺴﺖ ﺍﺳﺖ.
ﺭﺍﻩ ﺣﻞ :ﻣﺠﻤﻮﻋﻪ ﺍﻱ ﺍﺯ ﺍﺳﺎﻡ ﻱ ﻣﺴﺘﻌﺎﺭ ﺭﺍ ﺑﺮﺍﻱ ﺍﻗﻼﻡ ﺩﺍﺩﻩ ﺍﻳﺠﺎﺩ ﻣﻲ ﻛﻨﺪ؛ ﻧﮕﺎﺷﺖ ﻧﺎﻡ ﻫﺎﻱ ﻣﺴﺘﻌﺎﺭ
ﺑﻪ ﺍﺳﺎﻣﻲ ﻭﺍﻗﻌﻲ ﺩﺭ ﻫﺮ ﺳﺎﻳﺖ ﺭﺍ ﺫﺧﻴﺮﻩ ﻣﻲ ﻛﻨﺪ .ﻛﺎﺭﺑﺮ ﻣﻲ ﺗﻮﺍﻧﺪ ﺍﺯ ﻣﻮﻗﻌﻴﺖ ﻓﻴﺰﻳﻜﻲ ﺁﻳﺘﻢ ﺩﺍﺩﻩ ﻧﺎﺁﮔﺎﻩ
ﺑﺎﺷﺪ ﻭﺍﮔﺮ ﺁﻳﺘﻢ ﺩﺍﺩﻩ ﺍﺯ ﻳﻚ ﺳﺎﻳﺖ ﺑﻪ ﺳﺎﻳﺖ ﺩﻳﮕﺮ ﺣﺮﻛﺖ ﻛﻨﺪ ،ﺗﺤﺖ ﺗﺎﺛﻴﺮ ﻧﻤﻲ ﺑﺎﺷﺪ .
119
ﺗﺮﺍﻛﻨﺶ ﻫﺎﻱ ﺗﻮﺯﻳﻊ ﺷﺪﻩ :ﺗﺮﺍﻛﻨﺶ ﻫﺎ ﻣﻤﻜﻦ ﺍﺳﺖ ﺩﺭ ﭼﻨﺪ ﺳﺎﻳﺖ ﺑﻪ ﺩﺍﺩﻩ ﺩﺳﺘﺮﺳﻲ ﺩﺍﺷﺘﻪ
ﺑﺎﺵﻥﺩ .
ﻫﺮ ﺳﺎﻳﺖ ﻣﺪﻳﺮ ﺗﺮﺍﻛﻨﺶ ﻣﺤﻠﻲ ﻣﺴﺌﻮﻝ ﺭﺍ ﺩﺍﺭﺩ :ﺛﺒﺘﻲ ﺑﺮﺍﻱ ﺍﻫﺪﺍﻑ ﺑﻬﺒﻮﺩ ﺭﺍ ﺣﻔﻆ ﻣﻲ ﻛﻨﺪ .
ﺩﺭ ﻫﻤﺎﻫﻨﮓ ﻛﺮﺩﻥ ﺍﺟﺮﺍﻱ ﻫﻤﺰﻣﺎﻥ ﺗﺮﺍﻛﻨﺶ ﻫﺎ ﺍﺟﺮﺍﺷﺪﻩ ﺩﺭﺁﻥ ﺳﺎﻳﺖ ﻣﺸﺎﺭﻛﺖ ﻣﻲ ﻛﻨﺪ .
ﻫﺮ ﺳﺎﻳﺖ ﺩﺍﺭﺍﻱ ﻳﻚ ﻫﻤﺎﻫﻨﮓ ﻛﻨﻨﺪﻩ ﺗﺮﺍﻛﻨﺶ ﺍﺳﺖ ﻛﻪ ﻣﺴﺊﻭﻝ ﻣﻮﺍﺭﺩ ﺯﻳﺮ ﻣﻲ ﺑﺎﺷﺪ :
.2ﺗﺮﺍﻛﻨﺶ ﻫﺎ ﻓﺮﻋﻲ ﺩﺭ ﺳﺎﻳﺖ ﻫﺎﻱ ﻣﻨﺎﺳﺐ ﺑﺮﺍﻱ ﺍﺟﺮﺍ ﺭﺍ ﺗﻮﺯﻳﻊ ﻣﻲ ﻛﻨﺪ .
120
ﺷﻜﺴﺖ ﻳﻚ ﻟﻴﻨﻚ ﺍﺭﺗﺒﺎﻁ
• ﺑﺎ ﭘﺮﻭﺗﻜﻞ ﻫﺎﻱ ﺷﺒﻜﻪ ﺗﻮﺳﻂ ﭘﻴﺎﻡ ﻫﺎﻱ ﻣﺴﻴﺮﻳﺎﺑﻲ ﺍﺯﻃﺮﻳﻖ ﻟﻴﻨﻚ ﻫﺎﻱ
ﺟﺎﻳﮕﺰﻳﻦ ﻧﮕﻪ ﺩﺍﺷﺘﻪ ﻣﻲ ﺷﻮﺩ.
.ﺑﻪ ﻃﻮﺭﻛﻠﻲ ﺍﻓﺮﺍﺯﻛﺮﺩﻥ ﻭ *ﺗﺬﻛﺮ :ﺳﻴﺴﺘﻢ ﻓﺮﻋﻲ ﻣﻤﻜﻦ ﺍﺳﺖ ﻣﺘﺸﻜﻞ ﺍﺯ ﻳﻚ ﮔﺮﻩ ﺧﺎﺹ ﺑﺎﺷﺪ
ﺷﻜﺴﺖ ﻫﺎﻱ ﺳﺎﻳﺖ ﻏﻴﺮﻗﺎﺑﻞ ﺗﺸﺨﻴﺺ ﻣﻲ ﺑﺎﺷﺪ .
ﭘﺮﻭﺗﻜﻞ ﻫﺎﻱ ﺗﻌﻬﺪ :ﺍﻳﻦ ﭘﺮﻭﺗﻜﻞ ﻫﺎ ﺟﻬﺖ ﺍﻃﻤﻴﻨﺎﻥ ﺍﺯ ﻇﺮﻓﻴﺖ ﺍﺗﻤﻲ ﺩﺭ ﺳﺎﻳﺖ ﻫﺎ ﺍﺳﺘﻔﺎﺩﻩ ﻣﻲ
ﺷﻮﺩ .ﺗﺮﺍﻛﻨﺶ ﺍﻱ ﻛﻪ ﺩﺭ ﺳﺎﻳﺖ ﻫﺎﻱ ﻣﺘﻌﺪﺩ ﺍﺟﺮﺍ ﻣﻲ ﺷﻮﺩ ﺑﺎﻳﺴﺘﻲ ﺩﺭ ﺗﻤﺎﻣﻲ ﺳﺎﻳﺖ ﻫﺎ ﻭﺍﮔﺬﺍﺭ ﺷﻮﺩ ﻳﺎ
ﺩﺭ ﺗﻤﺎﻣﻲ ﺳﺎﻳﺖ ﻫﺎ ﻱ ﻧﺘﻴﺠﻪ ﺑﺎﺷﺪ .ﺩﺍﺷﺘﻦ ﻳﻚ ﺗﺮﺍﻛﻨﺶ ﻭﺍﮔﺬﺍﺭ ﺷﺪﻩ ﺩﺭ ﻳﻚ ﺳﺎﻳﺖ ﻭ ﺑﻲ ﻧﺘﻴﺠﻪ
ﺑﻮﺩﻥ ﺩﺭ ﺳﺎﻳﺖ ﺩﻳﮕﺮ ﻏﻴﺮ ﻗﺎﺑﻞ ﻗﺒﻮﻝ ﺍﺳﺖ .ﭘﺮﻭﺗﻜﻞ ﺗﻌﻬﺪ ﺩﻭﻓﺎﺯﻱ ) (2PCﺑﻪ ﻃﻮﺭﮔﺴﺘﺮﺩﻩ ﺍﻱ ﺍﺳﺘﻔﺎﺩﻩ
ﻣﻲ ﺷﻮﺩ .ﭘﺮﻭﺗﻜﻞ ﺗﻌﻬﺪ ﺳﻪ ﻓﺎﺯﻱ ) (3pcﭘﻴﭽﻴﺪﻩ ﺗﺮ ﻭ ﭘﺮﻫﺰﻳﻨﻪ ﺗﺮ ﺍﺳﺖ ﺍﻣﺎ ﻣﺎﻧﻊ ﭼﻨﺪ ﻋﻴﺐ ﭘﺮﻭﺗﻜﻞ
ﺗﻌﻬﺪ ﺩﻭﻓﺎﺯﻱ ﻣﻲ ﺷﻮﺩ .ﺍﻳﻦ ﭘﺮﻭﺗﻜﻞ ﺩﺭ ﻋﻤﻞ ﺍﺳﺘﻔﺎﺩﻩ ﻣﻲ ﺷﻮﺩ.
ﻓﺮﺽ ﻛﻨﻴﺪ ﺳﺎﻳﺖ ﻫﺎﻱ ﻧﺎﻛﺎﻡ ﺷﺪﻩ ﻣﺪﻝ ﻋﺪﻡ ﻣﻮﻓﻘﻴﺖ -ﺗﻮﻗﻒ ﻓﻘﻂ ﻛﺎﺭ ﺭﺍ ﻣﺘﻮﻗﻒ ﻣﻲ ﻛﻨﺪ ﻭ ﺑﺎﻋﺚ
ﻫﻴﭻ ﺁﺳﻴﺐ ﺩﻳﮕﺮ ﺍﺯﻗﺒﻴﻞ ﻓﺮﺳﺘﺎﺩﻥ ﭘﻴﺎﻡ ﻫﺎﻱ ﻧﺎﺩﺭﺳﺖ ﻳﻪ ﺩﻳﮕﺮ ﺳﺎﻳﺖ ﻫﺎ ﻧﻤﻲ ﺷﻮﺩ .ﺍﺟﺮﺍﻱ ﭘﺮﻭﺗﻚﻝﻱ
ﺗﻮﺳﻂ ﻫﻤﺎﻫﻨﮓ ﻛﻨﻨﺪﻩ ﺑﻌﺪ ﺍﺯ ﺁﺧﺮﻳﻦ ﻣﺮﺣﻠﻪ ﺩﺳﺘﺮﺳﻲ ﺑﻪ ﺗﺮﺍﻛﻨﺶ ﺷﺮﻭﻉ ﻣﻲ ﺷﻮﺩ .ﭘﺮﻭﺗﻜﻞ ﺷﺎﻣﻞ
ﺗﻤﺎﻣﻲ ﺳﺎﻳﺖ ﻫﺎﻱ ﻣﺤﻠﻲ ﺍﺳﺖ ﻛﻪ ﺩﺭ ﺁﻥ ﺗﺮﺍﻛﻨﺶ ﺍﺟﺮﺍ ﻣﻲ ﺷﻮﺩ .ﺍﺟﺎﺯﻩ ﺩﻫﻴﺪ Tﺗﺮﺍﻛﻨﺶ ﺷﺮﻭﻉ
ﺷﺪﻩ ﺩﺭ ﺳﺎﻳﺖ Siﻭ ﻫﻤﺎﻫﻨﮓ ﻛﻨﻨﺪﻩ ﺗﺮﺍﻛﻨﺶ ﺩﺭ Ci ،Siﺑﺎﺷﺪ.
ﻫﻤﺎﻫﻨﮓ ﻛﻨﻨﺪﻩ ﺩﺭﺑﺎﺭﻩ ﺗﻤﺎﻣﻲ ﺷﺮﻛﺖ ﻛﻨﻨﺪﮔﺎ ﻥ ﺑﺮﺍﻱ ﺁﻣﺎﺩﻩ ﺷﺪﻥ ﺩﺭ ﻭﺍﮔﺬﺍﺭﻱ ﺗﺮﺍﻛﻨﺶ Ti
ﭘﺮﺱ ﻭ ﺟﻮ ﻣﻲ ﻛﻨﺪ Ci .ﺛﺒﺖ ﻫﺎﻱ> <prepare Tﺭﺍ ﺑﻪ ﺛﺒﺖ ﺍﺿﺎﻓﻪ ﻡﻱ ﻛﻨﺪ ﻭ ﺛﺒﺖ ﺭﺍ ﻭﺍﺩﺍﺭ
121
ﺑﻪ ﺗﺜﺒﻴﺖ ﺫﺧﻴﺮﻩ ﺳﺎﺯﻱ ﻣﻲ ﻛﻨﺪ .ﭘﻴﺎﻡ ﻫﺎﻱ prepare Tﺭﺍ ﺑﻪ ﺗﻤﺎﻣﻲ ﺳﺎﻳﺖ ﻫﺎﻳﻲ ﻣﻲ
ﻓﺮﺳﺘﺪ ﻛﻪ Tﺍﺟﺮﺍ ﻣﻲ ﺷﻮﺩ.
ﺑﺎ ﺩﺭﻳﺎﻓﺖ ﭘﻴﺎﻡ ،ﻣﺪﻳﺮ ﺗﺮﺍﻛﻨﺶ ﺩﺭ ﺳﺎﻳﺖ ﺗﻌﻴﻴﻦ ﻣﻲ ﻛﻨﺪ ﻛﻪ ﺁﻳﺎ ﻣﻲ ﺗﻮﺍﻧﺪ ﺗﺮﺍﻛﻨﺶ ﺭﺍ ﻭﺍﮔﺬﺍﺭ
ﻛﻨﺪ .ﺍﮔﺮ ﻧﺘﻮﺍﻧﺪ ﻭﺍﮔﺬﺍﺭ ﻛﻨﺪ ،ﺛﺒﺖ > <no Tﺭﺍ ﺑﻪ ﺛﺒﺖ ﺍﺿﺎﻓﻪ ﻣﻲ ﻛﻨﺪ ﻭ ﻭﭘﻴﺎﻡ abort Tﺭﺍ
ﺑﻪ Ciﻣﻲ ﻓﺮﺳﺘﺪ .ﺍﮔﺮ ﺗﺮﺍﻛﻨﺶ ﺑﺘﻮﺍﻧﺪ ﻭﺍﮔﺬﺍﺭ ﺷﻮﺩ ،ﺳﭙﺲ:
• ﺗﻤﺎﻣﻲ ﺛﺒﺖ ﻫﺎ ﺑﺮﺍﻱ Tﺭﺍ ﻭﺍﺩﺍﺭ ﺑﻪ ﺫﺥﻳﺮﻩ ﺳﺎﺯﻱ ﺛﺎﺑﺖ ﻣﻲ ﻛﻨﺪ .
T ﻣﻲ ﺗﻮﺍﻧﺪ ﺍﺯ Ciﻣﺘﻌﻬﺪ ﺑﻪ ﭘﻴﺎﻡ ready Tﺩﺭﻳﺎﻓﺖ ﺷﺪﻩ ﺍﺯ ﺗﻤﺎﻣﻲ ﺳﺎﻳﺖ ﻫﺎﻱ ﻣﺸﺎﺭﻛﺘﻲ
ﺷﻮﺩ :ﺩﺭﻏﻴﺮﺍﻳﻨﺼﻮﺭﺕ Tﺑﺎﻳﺴﺘﻲ ﺑﻲ ﻧﺘﻴﺠﻪ ﺑﺎﺷﺪ.
ﻫﻤﺎﻫﻨﮓ ﻛﻨﻨﺪﻩ ﺛﺒﺖ ﺗﺼﻤﻴﻢ , <commit T> or <abort T>,ﺭﺍ ﺑﻪ ﺛﺒﺖ ﺍﺿﺎﻓﻪ ﻣﻲ
ﻛﻨﺪ ﻭ ﺛﺒﺖ ﺭﺍ ﻭﺍﺩﺍﺭ ﺑﻪ ﺫﺧﻴﺮﻩ ﺳﺎﺯﻱ ﻣﻘﺎﻭﻡ ﻣﻲ ﻛﻨﺪ .ﺑﻪ ﻫﻨﮕﺎﻡ ﺫﺧﻴﺮﻩ ﺱﺍﺯ ﻣﻘﺎﻭﻡ ﺛﺒﺖ ،ﻏﻴﺮ
ﻗﺎﺑﻞ ﻓﺴﺦ ﺍﺳﺖ)ﺣﺘﻲ ﺍﮔﺮ ﺷﻜﺴﺖ ﺭﻭﻱ ﺩﻫﺪ(.
)ﺗﻌﻬﺪ ﻳﺎ ﺑﻲ ﻧﺘﻴﺠﻪ ( ﻣﻲ ﻫﻤﺎﻫﻨﮓ ﻛﻨﻨﺪﻩ ﭘﻴﺎﻣﻲ ﺭﺍ ﺑﻪ ﻫﺮ ﺷﺮﻛﺖ ﻛﻨﻨﺪﻩ ﻣﻄﻠﻊ ﺍﺯ ﺗﺼﻤﻴﻢ
ﻓﺮﺳﺘﺪ .
122
ﻣﺪﻝ ﻫﺎﻱ ﺟﺎﻳﮕﺰﻳﻦ ﺗﺮﺍﻛﻨﺶ ﻫﺎ ﺭﺍ ﺑﺎ ﻓﺮﺳﺘﺎﺩﻥ ﭘﻴﺎﻡ ﻫﺎ ﺍﻧﺠﺎﻡ ﻣﻲ ﺩﻫﺪ .ﻛﺪ ﺟﻬﺖ ﻧﮕﻪ ﺩﺍﺷﺘﻦ
ﭘﻴﺎﻡ ﻫﺎ ﺑﺎﻳﺴﺘﻲ ﺑﻪ ﺩﻗﺖ ﺟﻬﺖ ﺍﻃﻤﻴﻨﺎﻥ ﺩﻫﻲ ﻗﺎﺑﻠﻴﺖ ﺗﺪﺍﻭﻡ ﻭﻳﮋﮔﻲ ﻫﺎ ﺑﺮﺍﻱ ﺑﻪ ﺭﻭﺯﺭﺳﺎﻧﻲ ﻫﺎ
ﻃﺮﺍﺣﻲ ﺷﻮﺩ .ﺟﺪﺍﻳﻲ ﻧﻤﻲ ﺗﻮﺍﻧﺪ ﺿﻤﺎﻧﺖ ﺷﻮﺩ ،ﺩﺭ ﻣﺮﺍﺣﻞ ﻣﻴﺎﻧﻲ ﻗﺎﺑﻞ ﻣﺸﺎﻫﺪﻩ ﺍﺳﺖ ،ﺍﻣﺎ ﻛﺪ
ﺑﺎﻳﺴﺘﻲ ﻫﻴﭻ ﻧﺘﻴﺠﻪ ﻏﻴﺮﻣﺘﻨﺎﺳﺐ ﺑﻌﻠﺖ ﻫﻤﮕﺎﻫﻲ ﺭﺍ ﺍﻃﻤﻴﻨﺎﻥ ﺩﻫﺪ .ﺳﻴﺴﺘﻢ ﻫﺎﻱ ﭘﻴﺎﻡ ﺩﻫﻲ
ﺛﺎﺑﺖ ،ﺳﻴﺴﺘﻢ ﻫﺎﻳﻲ ﻫﺴﺘﻨﺪ ﻛﻪ ﻭﻳﮋﮔﻲ ﻫﺎﻱ ﻣﻌﺎﻣﻼﺗﻲ ﺭﺍ ﺑﻪ ﭘﻴﺎﻡ ﻫﺎ ﺭﺍ ﺍﺭﺍﺋﻪ ﻣﻲ ﺩﻫﺪ .ﭘﻴﺎﻡ ﻫﺎ
ﺿﻤﺎﻧﺖ ﻣﻲ ﺷﻮﺩ ﺗﺎ ﺩﻗﻴﻘﺎ ﻳﻜﺒﺎﺭ ﺍﺭﺍﺋﻪ ﺷﻮﻧﺪ .
ﻣﺜﺎﻝ :ﺗﺤﺮﻳﻚ ﻛﻨﻨﺪﻩ :ﺍﻧﺘﻘﺎﻝ ﻭﺟﻮﻩ ﺑﻴﻦ ﻭﺍﮔﺬﺍﺭﻱ ﺩﻭ ﻣﺮﺣﻠﻪ ﺍﻱ ﺩﻭ ﺑﺎﻧﻚ ﭘﺘﺎﻧﺴﻴﻠﻲ ﺟﻬﺖ
ﺭﻭﺯ ﺭﺳﺎﻧﻲ ﻫﺎ ﺩﺭ ﺣﺴﺎﺏ ﻫﺎﻱ ﺷﺎﻣﻞ ﺷﺪﻩ ﺩﺭ ﺍﻧﺘﻘﺎﻝ ﻭﺟﻮﻩ ﺧﻮﺍﻫﺪ ﺩﺍﺷﺖ .
ﻣﺴﺪﻭﺩﻛﺮﺩﻥ ﺏ
– ﭘﻮﻝ ﺑﺪﻫﻲ ﺍﺯ ﻣﻨﺒﻊ ﻣﺤﺎﺳﺒﻪ ﻣﻲ ﺷﻮﺩ ﻭ ﭘﻴﺎﻣﻲ ﺭﺍ ﺑﻪ ﺳﺎﻳﺖ ﺩﻳﮕﺮ ﻣﻲ ﻓﺮﺳﺘﺪ .
• ﭘﻴﺎﻡ ﺩﻫﻲ ﺍﺯ ﻣﺪﺗﻬﺎ ﻗﺒﻞ )ﺣﺘﻲ ﻗﺒﻞ ﺍﺯ ﺍﺧﺘﺮﺍﻉ ﺭﺍﻳﺎﻧﻪ ﻫﺎ ( ﺑﺮﺍﻱ ﺗﺮﺍﻛﻨﺶ ﻫﺎ ﺗﻮﺯﻳﻊ ﺷﺪﻩ
ﺍﺳﺘﻔﺎﺩﻩ ﺷﺪﻩ ﺍﺳﺖ.
ﻣﻮﺿﻮﻉ ﺍﺗﻤﻴﺴﻴﺘﻲ
• ﺯﻣﺎﻧﻲ ﻛﻪ ﺗﺮﺍﻛﻨﺶ ﭘﻴﺎﻣﻲ ﺭﺍ ﻣﻲ ﻓﺮﺳﺘﺪ ،ﻭﺍﮔﺬﺍﺭ ﻣﻲ ﺷﻮﺩ .ﭘﻴﺎﻡ ﺑﺎﻳﺴﺘﻲ ﺑﺮﺍﻱ ﺍﺭﺍﺋﻪ
ﺿﻤﺎﻧﺖ ﺷﻮﺩ.
ﺭﻱ ﭘﻴﺎﻡ ﻫﺎﻱ ﻳﺮ ﺿﻤﺎﻧﺖ ﻣﺎﺩﺍﻣﻲ ﻛﻪ ﺳﺎﻳﺖ ﻣﻘﺼﺪ ﺑﻪ ﺭﻭﺯ ﻭ ﻗﺎﺑﻞ ﺩﺳﺘﺮﺳﻲ ﺍﺳﺖ ،ﻛﺪ ﺟﻬﺖ ﻧﮕﻬﺪﺍ
ﻗﺎﺑﻞ ﺗﺤﻮﻳﻞ ﺑﺎﻳﺴﺖﻱ ﻫﻤﭽﻨﻴﻦ ﺩﺭﺩﺳﺘﺮﺱ ﺑﺎﺷﺪ.
ﺑﻪ ﻋﻨﻮﺍﻥ ﻣﺜﺎﻝ :ﭘﻮﻝ ﺍﻋﺘﺒﺎﺭ ﺑﺮﮔﺸﺘﻲ ﺑﻪ ﺣﺴﺎﺏ ﻣﻨﺒﻊ :ﺍﮔﺮ ﻓﺮﺳﺘﺎﺩﻥ ﺗﺮﺍﻛﻨﺶ ﺑﻲ ﻧﺘﻴﺠﻪ ﺷﻮﺩ ،ﭘﻴﺎﻡ
ﻧﺒﺎﻳﺪ ﻓﺮﺳﺘﺎﺩﻩ ﺷﻮﺩ.
123
ﻣﺪﻳﺮ ﻣﺎﻧﻊ ﺗﻮﺯﻳﻊ ﺷﺪﻩ
∆ ﺩﺭ ﺍﻳﻦ ﺭﻭﻳﻜﺮﺩ ،ﻋﻤﻠﻜﺮﺩ ﻗﻔﻞ ﺗﻮﺳﻂ ﻣﺪﻳﺮﺍﻥ ﻣﺎﻧﻊ ﺩﺭ ﻫﺮ ﺳﺎﻳﺖ ﺍﺟﺮﺍ ﻣﻲ ﺷﻮﺩ .ﻣﺪﻳﺮﺍﻥ ﻣﺎﻧﻊ
ﺩﺳﺘﺮﺳﻲ ﺑﻪ ﺍﻗﻼﻡ ﺩﺍﺩﻩ ﻣﺤﻠﻲ ﺭﺍ ﻛﻨﺘﺮﻝ ﻣﻲ ﻛﻨﻨﺪ .ﺍﻣﺎ ﻛﻨﺘﺮﻝ ﻫﺎﻱ ﺧﺎﺹ ﻣﻤﻜﻦ ﺍﺳﺖ ﺑﺮﺍﻱ
ﺗﻜﺮﺍﺭﻫﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺷﻮﺩ.
∆ ﻣﺰﻳﺖ :ﻛﺎﺭ ﺗﻮﺯﻳﻊ ﻣﻲ ﺷﻮﺩ ﻭ ﻣﻲ ﺗﻮﺍﻧﺪ ﺩﺭ ﺷﻜﺴﺖ ﻫﺎ ﺟﺪﻱ ﺍﻧﺠﺎﻡ ﺷﻮﺩ .
∆ ﭼﻨﺪﻳﻦ ﺗﻐﻴﻴﺮ ﺑﻪ ﺍﻳﻦ ﺭﻭﻳﻜﺮﺩ :ﺭﻭﻧﻮﺷﺖ ﺍﻭﻟﻴﻪ ،ﭘﺮﻭﺗﻜﻞ ﺍﻛﺜﺮﻳﺖ ،ﭘﺮﻭﺗﻜﻞ ﺑﺎﻳﺎﺱ ﺷﺪﻩ ﻭ ﻣﻮﺍﻓﻘﺖ
ﻋﻤﻮﻣﻲ ﺣﺪﻧﺼﺎﺏ
ﺭﻭﻧﻮﺷﺖ ﺍﻭﻟﻴﻪ
ﻳﻚ ﻛﭙﻲ ﺁﻳﺘﻢ ﺩﺍﺩﻩ ﺭﺍ ﺍﻧﺘﺨﺎﺏ ﻛﻨﻴﺪ ﺗﺎ ﺭﻭﻧﻮﺷﺖ ﺍﻭﻟﻴﻪ ﺑﺎﺷﺪ .ﺳﺎﻳﺖ ﺷﺎﻣﻞ ﻛﭙﻲ ﺳﺎﻳﺖ ﺍﻭﻟﻴﻪ ﺑﺮﺍﻱ ﺁﻥ
ﺁﻳﺘﻢ ﺩﺍﺩﻩ ﻧﺎﻣﻴﺪﻩ ﻣﻲ ﺷﻮﺩ .ﺁﻳﺘﻢ ﻫﺎﻱ ﻣﺘﻔﺎﻭﺕ ﺩﺍﺩﻩ ﻣﻲ ﺗﻮﺍﻧﻨﺪ ﺳﺎﻳﺖ ﻫﺎﻱ ﺍﻭﻟﻴﻪ ﻣﺘﻔﺎﻭﺕ ﺩﺍﺷﺘﻪ
ﺑﺎﺷﻨﺪ .ﺯﻣﺎﻧﻲ ﻛﻪ ﻳﻚ ﺗﺮﺍﻛﻨﺶ ﺑﺎﻳﺴﺘﻲ ﺁﻳﺘﻢ Qﺩﺍﺩﻩ ﺭﺍ ﻣﺴﺪﻭﺩ ﻛﻨﺪ،ﻗﻔﻞ ﻱ ﺩﺭ ﺳﺎﻳﺖ ﺍﻭﻟﻴﻪ Qﺭﺍ
ﺩﺭﺧﻮﺍﺳﺖ ﻣﻲ ﻛﻨﺪ .ﺑﻄﻮﺭ ﺿﻤﻨﻲ ﺩﺭ ﺗﻤﺎﻣﻲ ﺗﻜﺮﺍﺭﻫﺎﻱ ﺍﻳﺘﻢ ﺩﺍﺩﻩ ﻣﺴﺪﻭﺩ ﻣﻲ ﺷﻮﺩ .
• ﻓﺎﻳﺪﻩ :ﻛﻨﺘﺮﻝ ﻫﻤﺰﻣﺎﻥ ﺩﺍﺩﻩ ﺗﻜﺮﺍﺭﺷﺪﻩ ﺑﻪ ﺳﺎﺩﮔﻲ ﺑﻪ ﺍﺟﺮﺍﻱ ﺳﺎﺩﻩ -ﺩﺍﺩﻩ ﺗﻜﺮﺍﺭﻧﺸﺪﻩ ﻧﮕﻪ ﺩﺍﺷﺘﻪ
ﻣﻲ ﺷﻮﺩ.
• ﻋﻴﺐ :ﺍﮔﺮ ﺳﺎﻳﺖ ﺍﻭﻟﻴﻪ Qﻣﻮﻓﻖ ﻧﺸﻮﺩ Q ،ﻏﻴﺮﻗﺎﺑﻞ ﺩﺱﺗﺮﺳﻲ ﺍﺳﺖ ﺣﺘﻲ ﮔﺮﭼﻪ ﺩﻳﮕﺮ ﺳﺎﻳﺖ
ﻫﺎﻱ ﺷﺎﻣﻞ ﻳﻚ ﻛﭙﻲ ﻣﻤﻜﻦ ﺍﺳﺖ ﻗﺎﺑﻞ ﺩﺳﺘﺮﺳﻲ ﺑﺎﺷﻨﺪ .
ﭘﺮﻭﺗﻜﻞ ﺍﻛﺜﺮﻳﺖ
ﻣﺪﻳﺮ ﻗﻔﻞ ﻣﺤﻠﻲ ﺩﺭ ﻫﺮ ﺳﺎﻳﺖ ﺩﺭﺧﻮﺍﺳﺖ ﻫﺎﻱ ﺑﺪﻭﻥ ﻗﻔﻞ ﻭ ﻗﻔﻞ ﺭﺍ ﺑﺮﺍﻱ ﺁﻳﺘﻢ ﻫﺎﻱ ﺫﺧﻴﺮﻩ ﺷﺪﻩ ﺩﺭ
ﺳﺎﻳﺖ ﺍﺟﺮﺍ ﻣﻲ ﻛﻨﺪ .ﺯﻣﺎﻧﻲ ﻛﻪ ﻳﻚ ﺗﺮﺍﻛﻨﺶ ﺗﻤﺎﻳﻞ ﺑﻪ ﻗﻔﻞ ﺍﻳﺘﻢ Qﺩﺍﺩﻩ ﻛﭙﻲ ﻧﺸﺪﻩ ﺑﺎﻗﻲ ﻣﺎﻧﺪﻩ ﺩﺭ
ﺳﺎﻳﺖ Siﺩﺍﺭﺩ ،ﭘﻴﺎﻣﻲ ﺑﻪ ﻣﺪﻳﺮ ﻗﻔﻞ Siﻓﺮﺳﺘﺎﺩﻩ ﻣﻲ ﺷﻮﺩ .ﺍﮔﺮ Qﺩﺭ ﺣﺎﻟﺖ ﻧﺎﺳﺎﺯﮔﺎﺭ ﻣﺴﺪﻭﺩ ﺷﻮﺩ ،
ﺳﭙﺲ ﺩﺭﺧﻮﺍﺳﺖ ﺗﺎ ﺯﻣﺎﻧﻲ ﻛﻪ ﺑﺘﻮﺍﻧﺪ ﺍﻋﻄﺎ ﺷﻮﺩ ،ﺑﻪ ﺗﺎﺧﻴﺮ ﻣﻲ ﺍﻓﺘﺪ .ﺯﻣﺎﻧﻴﻜﻪ ﺩﺭﺧﻮﺍﺳﺖ ﻗﻔﻞ ﻣﻲ ﺗﻮﺍﻧﺪ
124
ﺍﻋﻄﺎ ﺷﻮﺩ ﻣﺪﻳﺮ ﻗﻔﻞ ﭘﻴﺎﻣﻲ ﺭﺍ ﺑﻪ ﺁﻏﺎﺯﮔﺮ ﺑﺎﺯﭘﺲ ﻣﻲ ﻓﺮﺳﺘﺪ ؛ ﻧﺸﺎﻥ ﻣﻲ ﺩﻫﺪ ﻛﻪ ﺩﺭﺧﻮﺍﺳﺖ ﻗﻔﻞ ﺍﻋﻄﺎ
ﺷﺪﻩ ﺍﺳﺖ.
ﺩﺭﻣﻮﺭﺩ ﺩﺍﺩﻩ ﻛﭙﻲ ﺷﺪﻩ :ﺍﮔﺮ Qﺩﺭ nﺳﺎﻳﺖ ﻛﭙﻲ ﺷﻮﺩ ،ﺳﭙﺲ ﭘﻴﺎﻡ ﺩﺭﺧﻮﺍﺳﺖ ﻗﻔﻞ ﺑﺎﻳﺴﺘﻲ
ﺑﻪ ﺑﻴﺶ ﺍﺯﻧﻴﻤﻲ ﺍﺯ nﺳﺎﻳﺖ ﻓﺮﺳﺘﺎﺩﻩ ﺷﻮﺩ ﻛﻪ ﺩﺭ ﺍﻥ Qﺫﺧﻴﺮﻩ ﻣﻲ ﺷﻮﺩ .ﺗﺮﺍﻛﻨﺶ ﺩﺭ Qﻋﻤﻞ
ﻧﻤﻲ ﻛﻨﺪ ﺗﺎ ﺯﻣﺎﻧﻴﻜﻪ ﻗﻔﻞ ﺩﺭ ﺍﻛﺜﺮﻳﺖ ﺗﻜﺮﺍﺭﻫﺎﻱ Qﺭﺍ ﺑﺪﺳﺖ ﺁﻭﺭﺩﻩ ﺑﺎﺷﺪ .ﺑﻪ ﻫﻨﮕﺎﻡ ﻧﻮﺷﺘﻦ
ﺁﻳﺘﻢ ﺩﺍﺩﻩ ،ﺗﺮﺍﻛﻨﺶ ﺛﺒﺖ ﻫﺎﻳﻲ ﺭﺍ ﺩﺭ ﺗﻤﺎﻣﻲ ﺗﻜﺮﺍﺭﻫﺎ ﺍﻧﺠﺎﻡ ﻣﻲ ﺩﻫﺪ .
.ﺟﺰﺋﻴﺎﺕ ﻓﺎﻳﺪﻩ :ﺣﺘﻲ ﺯﻣﺎﻧﻲ ﻛﻪ ﭼﻨﺪ ﺳﺎﻳﺖ ﺩﺭﺩﺳﺘﺮﺱ ﻧﻤﻲ ﺑﺎﺷﺪ ،ﻣﻴﺘﻮﺍﻧﺪ ﺍﺳﺘﻔﺎﺩﻩ ﺷﻮﺩ
ﺩﺭﺑﺎﺭﻩ ﭼﮕﻮﻧﮕﻲ ﻧﮕﻬﺪﺍﺭﻱ ﺛﺒﺖ ﻫﺎ ﺩﺭ ﺣﻀﻮﺭ ﺷﻜﺴﺖ ﺳﺎﻳﺖ ﺑﻌﺪﺍ ﺍﺭﺍﺋﻪ ﻣﻲ ﺷﻮﺩ .
ﻋﻴﺐ :ﺑﻪ ) 2(n/2 + 1ﭘﻴﺎﻡ ﺑﺮﺍﻱ ﻧﮕﻪ ﺩﺍﺷﺘﻦ ﺩﺭﺧﻮﺍﺳﺖ ﻫﺎﻱ ﻗﻔﻞ ﻭ )(n/2 + 1ﭘﻴﺎﻡ ﺑﺮﺍﻱ
ﻧﮕﻪ ﺩﺍﺷﺘﻦ ﺩﺭﺧﻮﺍﺳﺖ ﻫﺎﻱ ﻏﻴﺮﻣﺴﺪﻭﺩ ﻧﻴﺎﺯ ﺩﺍﺭﺩ .ﺍﻣﻜﺎﻥ ﺑﺎﻟﻘﻮﻩ ﺍﻱ ﺑﺮﺍﻱ ﻭﻗﻔﻪ ﺣﺘﻲ ﺑﺎ ﺁﻳﺘﻢ
ﺧﺎﺹ ﻭﺟﻮﺩ ﺩﺍﺭﺩ ،ﺑﻪ ﻋﻨﻮﺍﻥ ﻣﺜﺎﻝ ﻫﺮ ﻳﻚ ﺍﺯ ﺳﻪ ﺗﺮﺍﻛﻨﺶ ﻣﻤﻜﻦ ﺍﺳﺖ ﻗﻔﻞ ﻫﺎﻳﻲ ﺩﺭ 1/3rd
ﺗﻜﺮﺍﺭﻫﺎﻱ ﺩﺍﺩﻩ ﺩﺍﺷﺘﻪ ﺑﺎﺷﻨﺪ.
ﻗﻔﻞ ﻫﺎﻱ ﺍﻧﺤﺼﺎﺭﻱ :ﺯﻣﺎﻧﻴﻜﻪ ﺗﺮﺍﻛﻨﺶ ﺑﺎﻳﺴﺘﻲ ﺁﻳﺘﻢ Qﺩﺍﺩﻩ ﺭﺍ ﻣﺴﺪﻭﺩ ﻛﻨﺪ ،ﻗﻔﻞﻱ ﺑﺮ Qﺍﺯ
ﻣﺪﻳﺮ ﻗﻔﻞ ﺩﺭ ﺗﻤﺎﻣﻲ ﺳﺎﻳﺖ ﻫﺎﻱ ﻣﺤﺘﻮﻱ ﻛﭙﻲ Qﺭﺍ ﺩﺭﺧﻮﺍﺳﺖ ﻣﻲ ﻛﻨﺪ
125
ﭘﺮﻭﺗﻜﻞ ﻣﻮﺍﻓﻘﺖ ﻋﻤﻮﻣﻲ ﺣﺪﻧﺼﺎﺏ
ﻋﻤﻮﻡﺍ ﭘﺮﻭﺗﻜﻞ ﻫﺎﻱ ﺍﻛﺜﺮﻳﺖ ﻭ ﺑﺎﻳﺎﺱ ﺷﺪﻩ ﻫﺮ ﺳﺎﻳﺖ ﺑﺎ ﻳﻚ ﻭﺯﻥ ﺗﻌﻴﻴﻦ ﻣﻲ ﺷﻮﺩ .ﺍﺟﺎﺯﻩ ﺩﻫﻴﺪ Sﻭﺯﻥ
ﺗﻤﺎﻣﻲ ﺳﺎﻳﺖ ﻫﺎ ﺑﺎﺷﺪ .ﺩﻭﻣﻘﺪﺍﺭﺣﺪﻧﺼﺎﺏ ﺧﻮﺍﻧﺪﻧﻲ Qrﻭ ﺣﺪﻧﺼﺎﺏ ﺛﺒﺖ Qwﺭﺍ ﺍﻧﺘﺨﺎﺏ ﻛﻨﻴﺪ .
ﭼﻨﺎﻧﭽﻪ Qr + Qw > Sﻭ ، 2 * Qw > Sﺣﺪﻧﺼﺎﺏ ﻫﺎ ﻣﻲ ﺗﻮﺍﻧﺪ ﺑﻪ ﻃﻮﺭ ﻣﺠﺰﺍ ﺑﺮﺍﻱ ﻫﺮ ﺁﻳﺘﻢ
ﺍﻧﺘﺨﺎﺏ ﺷﻮﺩ )ﻭ Sﻣﺤﺎﺳﺒﻪ ﺷﻮﺩ ( ،ﻫﺮ ﺧﻮﺍﻧﺪﻥ ﺑﺎﻳﺪ ﺗﻜﺮﺍﺭﻫﺎﻱ ﻛﺎﻓﻲ ﺭﺍ ﻣﺴﺪﻭﺩﻛﻨﺪ ﻛﻪ ﻣﺠﻤﻮﻉ ﻭﺯﻥ
ﻫﺎﻱ ﺳﺎﻳﺖ ﺑﻴﺸﺘﺮ ﻳﺎ ﻣﺴﺎﻭﻱ Qrﺍﺳﺖ .ﻫﺮ ﺧﻮﺍﻧﺪﻥ ﺑﺎﻳﺪ ﺗﻜﺮﺍﺭﻫﺎﻱ ﻛﺎﻓﻲ ﺭﺍ ﻣﺴﺪﻭﺩﻛﻨﺪ ﻛﻪ ﻣﺠﻤﻮﻉ
ﻭﺯﻥ ﻫﺎﻱ ﺳﺎﻳﺖ ﺑﻴﺸﺘﺮ ﻳﺎ ﻣﺴﺎﻭﻱ Qwﺍﺳﺖ .ﺩﺭ ﺣﺎﻝ ﺣﺎ ﺿﺮ ﻓﺮﺽ ﻣﻲ ﻛﻨﻴﻢ ﻛﻪ ﺗﻤﺎﻣﻲ ﺗﻜﺮﺍﺭﻫﺎ
ﻣﻜﺘﻮﺏ ﻣﻲ ﺑﺎﺷﺪ .ﺑﺴﻂ ﻫﺎﻳﻲ ﺟﻬﺖ ﻣﺠﺎﺯ ﻛﺮﺩﻥ ﭼﻨﺪ ﺳﺎﻳﺖ ﺑﺎ ﺭﺍﻱ ﻏﻴﺮ ﻗﺎﺑﻞ ﺩﺳﺘﺮﺱ ﺑﻮﺩﻥ ﺑﻌﺪﺍ
ﺗﻮﺻﻴﻒ ﻣﻲ ﺷﻮﺩ.
ﻧﺸﺎﻥ ﺯﻣﺎﻧﻲ
ﭘﺮﻭﺗﻜﻞ ﻫﺎﻱ ﻛﻨﺘﺮﻝ ﻫﻤﮕﺎﻫﻲ ﻣﺒﺘﻨﻲ ﺑﺮﻧﺸﺎﻥ ﺯﻣﺎﻧﻲ ﻣﻲ ﺗﻮﺍﻧﺪ ﺩﺭ ﺳﻴﺴﺘﻢ ﻫﺎﻱ ﺗﻮﺯﻳﻊ ﺷﺪﻩ ﺍﺳﺘﻔﺎﺩﻩ
ﺷﻮﺩ .ﻫﺮ ﺗﺮﺍﻛﻨﺶ ﺑﺎﻳﺴﺘﻲ ﻧﺸﺎﻥ ﺯﻣﺎﻧﻲ ﻣﻨﺤﺼﺮ ﺑﻪ ﻓﺮﺩﻱ ﺭﺍ ﺍﺭﺍﺋﻪ ﺩﻫﺪ .
– ﻧﺸﺎﻥ ﺯﻣﺎﻧﻲ ﻣﻨﺤﺼﺮ ﺑﻪ ﻓﺮﺩ ﺟﻬﺎﻧﻲ ﺑﺎ ﺍﻟﺤﺎﻕ ﻛﺮﺩﻥ ﻧﺸﺎﻥ ﺯﻣﺎﻧﻲ ﻣﺤﻠﻲ ﻣﻨﺤﺼﺮ ﺑﻪ ﻓﺮﺩ
ﺑﺎ ﺷﻨﺎﺳﺎﮔﺮ ﻣﻨﺤﺼﺮ ﺑﻪ ﻓﺮﺩ ﺑﺪﺳﺖ ﻣﻲ ﺁﻳﺪ.
126
ﺳﺎﻳﺘﻲ ﺑﺎ ﺳﺎﻋﺖ ﺁﻫﺴﺘﻪ ﻧﺸﺎﻥ ﻫﺎﻱ ﺯ ﻣﺎﻧﻲ ﻛﻮﭼﺘﺮ ﺭﺍ ﺗﻌﻴﻴﻦ ﺧﻮﺍﻫﺪ ﻛﺮﺩ .ﺍﻣﺎ ﺍﺯ ﻝﺣﺎﻅ ﻣﻨﻄﻘﻲ ﺩﺭﺳﺖ :
ﻫﻨﻮﺯﻗﺎﺑﻠﻴﺖ ﺳﺮﻳﺎﻟﻲ ﺷﺪﻥ ﺗﺤﺖ ﺗﺎﺛﻴﺮ ﻧﻴﺴﺖ .
♦ ﺩﺭ ﻣﺤﺪﻭﺩﻩ ﻫﺮ ﺳﺎﻳﺖ Siﺳﺎﻋﺖ ﻣﻨﻄﻘﻲ ) (LCiﺭﺍ ﺗﻌﺮﻳﻒ ﻛﻨﻴﺪ ﻛﻪ ﻧﺸﺎﻥ ﺯﻣﺎﻧﻲ ﻣﺤﻠﻲ
ﻣﻨﺤﺼﺮ ﺑﻪ ﻓﺮﺩﻱ ﺭﺍ ﺍﻳﺠﺎﺩ ﻣﻲ ﻛﻨﺪ .
ﻛﭙﻲ ﻫﺎ ﺑﺎﻳﺴﺘﻲ ﺭﻭﻧﻮﺷﺖ ﻟﺤﻈﻪ ﺍﻱ ﺳﺎﺯﮔﺎﺭ ﺑﺎ ﺗﺮﺍﻛﻨﺶ ﺍﺯ ﭘﺎﻳﮕﺎﻩ ﺩﺍﺩﻩ ﺭﺍ ﻣﺸﺎﻫﺪﻩ ﻛﻨﻨﺪ .ﻳﻌﻨﻲ ﺣﺎﻟﺘﻲ
ﺍﺯ ﭘﺎﻳﮕﺎﻩ ﺩﺍﺩﻩ ﺑﺎﺯﺗﺎﺏ ﺩﻫﻨﺪﻩ ﺗﻤﺎﻣﻲ ﺍﺛﺮﺍﺕ ﺗﻤﺎﻣﻲ ﺗﺮﺍﻛﻨﺶ ﻫﺎ ﺗﺎ ﭼﻨﺪ ﻣﺮﺣﻠﻪ ﺩﺭ ﺗﺮﺗﻴﺐ ﺳﺮﻳﺎﻟﻲ ﻭ
ﻫﻴﭻ ﺗﺎﺙﻳﺮﻱ ﺍﺯ ﺩﻳﮕﺮ ﺗﺮﺍﻛﻨﺶ ﻫﺎﻱ ﺑﻌﺪﻱ ،ﺑﻪ ﻋﻨﻮﺍﻥ ﻣﺜﺎﻝ :ﺍﻭﺭﺍﻛﻞ ﺟﻤﻠﻪ ﺍﻳﺠﺎﺩ ﺭﻭﻧﻮﺷﺖ ﻟﺤﻈﻪ ﺍﻱ ﺭﺍ
ﺑﺮﺍﻱ ﺍﻳﺠﺎﺩ ﺭﻭﻧﻮﺷﺖ ﻟﺤﻈﻪ ﺍﻱ ﺍﺯ ﻳﻚ ﺍﺭﺗﺒﺎﻁ ﻳﺎ ﻣﺠﻤﻮﻋﻪ ﺍﻱ ﺍﺯ ﺍﺭﺗﺒﺎﻃﺎﺕ ﺩﺭ ﺳﺎﻳﺖ ﺩﻭﺭ ﻓﺮﺍﻫﻢ ﻣﻲ
ﺁﻭﺭﺩ .ﺭﻭﻧﻮﺷﺖ ﻟﺤﻈﻪ ﺍﻱ ﺑﺎ ﻣﺤﺎﺳﺒﻪ ﻣﺠﺪﺩ ﻳﺎ ﺑﺎ ﺑﻪ ﺭﻭﺯ ﺭﺳﺎﻧﻲ ﺍﻓﺰﺍﻳﺸﻲ ﻣﺠﺪﺩﺍ ﺗﺎﺯﻩ ﻣﻲ ﺷﻮﺩ .
127
ﮔﺮﺩﺍﻧﺶ ﺑﻦ ﺑﺴﺖ
ﺩﻭ ﺗﺮﺍﻛﻨﺶ ﺯﻳﺮ ﻭ ﭘﻴﺸﻴﻨﻪ ﺍﻱ ﺑﺎ ﺁﻳﺘﻢ Xﻭ ﺗﺮﺍﻛﻨﺶ T1ﺩﺭﺳﺎﻳﺖ 1ﻭ ﺁﻳﺘﻢ yﻭ ﺗﺮﺍﻛﻨﺶ T2ﺩﺭ ﺳﺎﻳﺖ
2ﺭﺍ ﺩﺭ ﻧﻈﺮ ﺑﮕﻴﺮﻳﺪ.
ﻧﺘﻴﺠﻪ :ﺑﻦ ﺑﺴﺘﻲ ﻛﻪ ﻧﻤﻲ ﺗﻮﺍﻧﺪ ﺑﻪ ﻃﻮﺭ ﻣﺤﻠﻲ ﺩﺭ ﻫﺮ ﺳﺎﻳﺖ ﺷﻨﺎﺳﺎﻳﻲ ﺷﻮﺩ .
ﭘﻴﻜﺮﺑﻨﺪﻱ ﻣﺠﺪﺩ
ﻣﺘﻮﻗﻒ ﻛﺮﺩﻥ ﺗﻤﺎﻣﻲ ﺗﺮﺍﻛﻨﺶ ﻫﺎﻳﻲ ﻛﻪ ﺩﺭ ﺳﺎﻳﺖ ﺧﺮﺍﺏ ﺷﺪﻩ ﻓﻌﺎﻝ ﺑﻮﺩ .ﺍﻧﺘﻈﺎﺭ ﺁﻧﻬﺎ ﻣﻲ ﺗﻮﺍﻧﺴﺖ ﺑﺎ
ﺩﻳﮕﺮ ﺗﺮﺍﻛﻨﺶ ﻫﺎ ﻣﺪﺍﺧﻠﻪ ﻛﻨﺪ ﭼﺮﺍ ﻛﻪ ﺁﻧﻬﺎ ﻣﻤﻜﻦ ﺍﺳﺖ ﻗﻔﻞ ﻫﺎﻳﻲ ﺑﻪ ﺩﻳﮕﺮ ﺳﺎﻳﺖ ﻫﺎ ﺭﺍ ﻧﮕﻪ ﺩﺍﺭﻧﺪ .ﺑﺎ
ﻭﺟﻮﺩ ﺍﻳﻦ ﺩﺭ ﻣﻮﺭﺩﻱ ﻛﻪ ﻓﻘﻂ ﭼﻨﺪ ﻛﭙﻲ ﺍﺯ ﻳﻚ ﺁﻳﺘﻢ ﺩﺍﺩﻩ ﺷﻜﺴﺖ ﻣﻲ ﺧﻮﺭﺩ ،ﻣﻤﻜﻦ ﺍﺳﺖ ﺟﻬﺖ
ﺍﺩﺍﻣﻪ ﺩﺍﺩﻥ ﺗﺮﺍﻛﻨﺶ ﻫﺎﻳﻲ ﻋﻤﻠﻲ ﻭ ﻣﻤﻜﻦ ﺑﺎﺷﺪ ﻛﻪ ﺩﺭ ﺳﺎﻳﺖ ﺧﺮﺍﺏ ﺷﺪﻩ ﺑﻪ ﺩﺍﺩﻩ ﺩﺳﺖ ﻳﺎﻓﺘﻪ ﺍﺳﺖ .
ﺍﮔﺮ ﺍﻳﺘﻢ ﻫﺎﻱ ﺩﺍﺩﻩ ﺗﻜﺮﺍﺭ ﺷﺪﻩ ﺩﺭ ﺳﺎﻳﺖ ﺧﺮﺍﺏ ﺷﺪﻩ ﺑﺎﺷﺪ ،ﻛﺎﺗﺎﻟﻮگ ﺳﻴﺴﺘﻢ ﺟﻬﺖ ﺭﻓﻊ ﺍﻧﻬﺎ ﺍﺯ ﻟﻴﺴﺖ
ﻛﭙﻲ ﻫﺎ ﺑﻪ ﺭﻭﺯ ﻣﻲ ﺷﻮﺩ .ﺯﻣﺎﻧﻲ ﻛﻪ ﺳﺎﻳﺖ ﺧﺮﺍﺏ ﺷﺪﻩ ﺑﻬﺒﻮﺩ ﻣﻲ ﻳﺎﺑﺪ ،ﺑﺎﻳﺴﺘﻲ ﺑﺮﻋﻜﺲ ﺷﻮﺩ ﺍﻣﺎ ﺩﻗﺖ
ﺍﺿﺎﻓﻲ ﺑﺎﻳﺴﺘﻲ ﺑﺮﺍﻱ ﺑﻪ ﺭﻭﺯ ﻛﺮﺩﻥ ﻣﻘﺎﺩﻳﺮ ﺍﻧﺠﺎﻡ ﺷﻮﺩ .ﺍﮔﺮ ﺳﺎﻳﺖ ﺧﺮﺍﺏ ﺵﺩﻩ ﺳﺮﻭﺭ ﻣﺮﻛﺰﻱ ﺑﺮﺍﻱ ﭼﻨﺪ
ﺳﻴﺴﺘﻢ ﺑﺎﺷﺪ ﺟﻬﺖ ﺗﻌﻴﻴﻦ ﺳﺮﻭﺭ ﺟﺪﻳﺪ ﺑﺎﻳﺴﺘﻲ ﮔﺰﻳﻨﺶ ﺩﺍﺷﺖ .ﺑﻪ ﻋﻨﻮﺍﻥ ﻣﺜﺎﻝ ﺳﺮﻭﺭ ﻧﺎﻡ ،ﻫﻤﺎﻫﻨﮓ
ﻛﻨﻨﺪﻩ ﻫﻤﮕﺎﻫﻲ ،ﺷﻨﺎﺳﺎﻳﻲ ﻛﻨﻨﺪﻩ ﺑﻦ ﺑﺴﺖ ﺟﻬﺎﻧﻲ .
128
ﺍﺯ ﺁﻧﺠﺎ ﻛﻪ ﺍﻓﺮﺍﺯ ﻛﺮﺩﻥ ﺷﺒﻜﻪ ﻣﻤﻜﻦ ﻧﻴﺴﺖ ﺍﺯ ﺷﻜﺴﺖ ﺳﺎﻳﺖ ﻗﺎﺑﻞ ﺗﺸﺨﻴﺺ ﺑﺎﺷﺪ ،ﻣﻮﻗﻌﻴﺖ ﻫﺎﻱ ﺯﻳﺮ
ﺑﺎﻳﺴﺘﻲ ﺍﺟﺘﻨﺎﺏ ﺷﻮﺩ:
♦ ﺩﻭ ﻳﺎ ﭼﻨﺪ ﺳﺮﻭﺭ ﻣﺮﻛﺰﻱ ﺍﻧﺘﺨﺎﺏ ﺷﺪﻩ ﺩﺭ ﺍﻓﺮﺍﺯ ﻫﺎﻱ ﻣﺠﺰﺍﻭ ﻣﺸﺨﺺ .
ﺭﻭﺯﺭﺳﺎﻧﻲ ﻫﺎ ﺑﺎﻳﺴﺘﻲ ﻗﺎﺩﺭ ﺑﻪ ﺍﺩﺍﻣﻪ ﺩﺍﺩﻥ ﺑﺎﺷﺪ ﺣﺘﻲ ﺍﮔﺮ ﭼﻨﺪ ﺳﺎﻳﺖ ﺍﺯﻛﺎﺭﺍﻓﺘﺎﺩﻩ ﺑﺎﺷﺪ .
ﺏ
ﺟﺎﻳﮕﺰﻳﻦ " ﺧﻮﺍﻧﺪﻥ ﻳﻚ ﺛﺒﺖ ﻛﺎﻣﻼ ﺩﺭﺩﺳﺘﺮﺱ " ﺁﺯﺍﺭ ﻣﻲ ﺑﻴﻨﺪ ﺍﻣﺎ ﺑﺎﻋﺚ ﻣﺸﻜﻼﺗﻲ ﻣﻲ ﺷﻮﺩ .
– ﺩﺭﺧﻮﺍﺳﺖ ﻗﻔﻞ ﺑﻪ ﺣﺪﺍﻗﻞ ﻧﺼﻒ ﺳﺎﻳﺖ ﻫﺎﻳﻲ ﻓﺮﺳﺘﺎﺩﻩ ﻣﻲ ﺷﻮﺩ ﻛﻪ ﺩﺭ ﺍﻥ ﻛﭙﻲ ﻫﺎﻱ
ﺁﻳﺘﻢ ﺫﺧﻴﺮﻩ ﻣﻲ ﺷﻮﺩ ﻭ ﻋﻤﻠﻴﺎﺕ ﻓﻘﻂ ﺯﻣﺎﻧﻲ ﺍﺩﺍﻣﻪ ﻣﻲ ﻳﺎﺑﺪ ﻛﻪ ﻳﻚ ﻗﻔﻞ ﺩﺭ ﺍﻛﺜﺮﻳﺖ
ﺳﺎﻳﺖ ﻫﺎ ﺑﺪﺳﺖ ﻣﻲ ﺁﻳﺪ.
ﺑﺎ – ﻋﻤﻠﻴﺎﺕ ﺧﻮﺍﻧﺪﻥ ﺗﻤﺎﻣﻲ ﻛﭙﻲ ﻫﺎﻱ ﻗﻔﻞ ﺷﺪﻩ ﺭﺍ ﺑﺮﺭﺳﻲ ﻣﻲ ﻛﻨﺪ ﻭ ﻣﻘﺪﺍﺭ ﺍﺯ ﻛﭙﻲ
ﺑﺰﺭﮔﺘﺮﻳﻦ ﺷﻤﺎﺭﻩ ﻧﺴﺨﻪ ﺭﺍ ﻣﻲ ﺧﻮﺍﻧﺪ .ﻣﻤﻜﻦ ﺍﺳﺖ ﺍﻳﻦ ﻣﻘﺪﺍﺭ ﺭﺍ ﺑﻨﻮﻳﺴﺪ ﻭ ﺷﻤﺎﺭﻩ
ﻧﺴﺨﻪ ﺑﻪ ﻛﭙﻲ ﻫﺎﻳﻲ ﺑﺎ ﺷﻤﺎﺭﻩ ﻫﺎﻱ ﻧﺴﺨﻪ ﻛﻤﺘﺮ )ﺑﺪﻭﻥ ﻧﻴﺎﺯ ﺑﻪ ﻛﺴﺐ ﻗﻔﻞ ﻫﺎ ﺩﺭ
ﺗﻤﺎﻣﻲ ﻛﭙﻲ ﻫﺎ ﺑﺮﺍﻱ ﺍﻳﻦ ﻛﺎﺭ ( ﺑﺮﻣﻲ ﮔﺮﺩﺩ.
– ﺛﺒﺖ ﻋﻤﻠﻴﺎﺕ :ﺑﺎﻻﺗﺮﻳﻦ ﺷﻤﺎﺭﻩ ﻧﺴﺨﻪ ﻣﺎﻧﻨﺪ ﺧﻮﺍﻧﺪﻥ ﺭﺍ ﭘﻴﺪﺍ ﻛﻨﻴﺪ ﻭ ﺷﻤﺎﺭﻩ ﻧﺴﺨﻪ
ﺟﺪﻳﺪ ﺑﻪ ﺑﺎﻻﺗﺮﻳﻦ ﻧﺴﺨﻪ ﻗﺪﻳﻤﻲ 1+ﺭﺍﺗﻌﻴﻴﻦ ﻛﻨﻴﺪ .ﺳﭙﺲ ﺛﺒﺖ ﻫﺎ ﺩﺭ ﺗﻤﺎﻣﻲ ﻛﭙﻲ
129
ﻫﺎﻱ ﻗﻔﻞ ﺷﺪﻩ ﺍﻧﺠﺎﻡ ﻣﻲ ﺷﻮﺩ ﻭ ﺷﻤﺎﺭﻩ ﻧﺴﺨﻪ ﺩﺭ ﺍﻳﻦ ﻛﭙﻲ ﻫﺎ ﺑﻪ ﺷﻤﺎﺭﻩ ﻧﺴﺨﻪ ﺟﺪﻳﺪ
ﺗﻌﻴﻴﻦ ﻣﻲ ﺷﻮﺩ.
– ﺷﻜﺴﺖ ﻫﺎ )ﺷﺒﻜﻪ ﻭ ﺳﺎﻳﺖ ( ﺑﺎﻋﺚ ﺑﺮﻭﺯ ﻣﺸﻜﻞ ﻧﻤﻲ ﺷﻮﺩ ﻣﺎﺩﺍﻣﻲ ﻛﻪ :ﺳﺎﻳﺖ ﻫﺎ ﺩﺭ
ﻭﺍﮔﺬﺍﺭﻱ ﺷﺎﻣﻞ ﺍﻛﺜﺮﻳﺖ ﻛﭙﻲ ﻫﺎ ﺍﺯ ﻫﺮ ﺁﻱ ﺗﻢ ﺩﺍﺩﻩ ﺑﻪ ﺭﻭﺯ ﺷﺪﻩ ﻣﻲ ﺑﺎﺷﺪ .ﺩﺭﻃﻲ
ﺧﻮﺍﻧﺪﻥ ،ﺍﻛﺜﺮﻳﺖ ﻛﭙﻲ ﻫﺎ ﺟﻬﺖ ﭘﻴﺪﺍ ﻛﺮﺩﻥ ﺷﻤﺎﺭﻩ ﻫﺎﻱ ﻧﺴﺨﻪ ﺩﺭﺩﺳﺘﺮﺱ ﻣﻲ ﺑﺎﺷﺪ .
ﻣﻮﺿﻮﻋﻲ ﺑﻪ ﺑﺎﻻ ،ﻭﺍﮔﺬﺍﺭﻱ ﺩﻭﻓﺎﺯﻱ ﻣﻲ ﺗﻮﺍﻧﺪ ﺟﻬﺖ ﺑﻪ ﺭﻭﺯ ﻛﺮﺩﻥ ﻛﭙﻲ ﻫﺎ ﺍﺳﺘﻔﺎﺩﻩ
ﺷﻮﺩ.
ﺗﺬﻛﺮ:ﺧﻮﺍﻧﺪﻥ ﻫﺎ ﺟﻬﺖ ﻣﺸﺎﻫﺪﻩ ﺁﺧﺮﻳﻦ ﻧﺴﺨﻪ ﺁﻳﺘﻢ ﺩﺍﺩﻩ ﺿﻤﺎﻧﺖ ﻣﻲ ﺷﻮﺩ .ﻳﻜﭙﺎﺭﭼﮕﻲ ﻣﺠﺪﺩ ﺑﺪﻱﻫﻲ
ﺍﺳﺖ :ﻫﻴﭻ ﭼﻴﺰ ﻧﺒﺎﻳﺪ ﺍﻧﺠﺎﻡ ﺷﻮﺩ.
ﺍﻟﮕﻮﺭﻳﺘﻢ Bully
Θﺍﮔﺮ ﺳﺎﻳﺖ Siﺩﺭﺧﻮﺍﺳﺘﻲ ﺭﺍ ﺑﻔﺮﺳﺘﺪ ﻛﻪ ﺍﻟﺒﺘﻪ ﺗﻮﺳﻂ ﻫﻤﺎﻫﻨﮓ ﻛﻨﻨﺪﻩ ﺩﺭﻣﺤﺪﻭﺩﻩ ﻓﺎﺻﻠﻪ ﺯﻣﺎﻧﻲ
Tﭘﺎﺳﺦ ﺩﺍﺩﻩ ﻧﻤﻲ ﺷﻮﺩ ،ﻓﺮﺽ ﻛﻨﻴﺪ ﻛﻪ ﻫﻤﺎﻫﻨﮓ ﻛﻨﻨﺪﻩ Siﺭﺍ ﺷﻜﺴﺖ ﺩﺍﺩﻩ ﺍﺳﺖ ،ﺳﻌﻲ
ﻣﻲ ﻛﻨﺪ ﺗﺎ ﺧﻮﺩﺵ ﺭﺍ ﺑﻪ ﻋﻨﻮﺍﻥ ﻫﻤﺎﻫﻨﮓ ﻛﻨﻨﺪﻩ ﺟﺪﻳﺪ ﺍﻧﺘﺨﺎﺏ ﻛﻨﺪ .
Si Θﭘﻴﺎﻡ ﺍﻧﺘﺨﺎﺏ ﺭﺍ ﺑﻪ ﻫﺮ ﺳﺎﻳﺖ ﺑﺎ ﻋﺪﺩ ﺷﻨﺎﺳﺎﻳﻲ ﺑﺎﻻﺗﺮ ﻣﻲ ﻓﺮﺳﺘﺪ ،ﺳﭙﺲ Siﻣﻨﺘﻈﺮ ﻫﺮ ﻳﻚ
ﺍﺯ ﺍﻳﻦ ﻓﺮﺍﻳﻨﺪ ﻫﺎ ﺑﺮﺍﻱ ﭘﺎﺳﺦ ﺩﺍﺩﻥ ﺩﺭ ﻣﺤﺪﻭﺩﻩ Tﻣﻲ ﻣﺎﻧﺪ.
Θﺍﮔﺮ ﻫﻴﭻ ﭘﺎﺳﺨﻲ ﺩﺭﻣﺤﺪﻭﺩﻩ Tﻭﺟﻮﺩ ﻧﺪﺍﺷﺘﻪ ﺑﺎﺷﺪ ،ﺑﭙﺬﻳﺮﻳﺪ ﻛﻪ ﺗﻤﺎﻣﻲ ﺳﺎﻳﺖ ﻫﺎﻳﻲ ﺑﺎ ﻋﺪﺩ
ﺑﻴﺸﺘﺮ ﺍﺯ iﺷﻜﺴﺖ ﺧﻮﺭﺩﻩ ﺍﻧﺪ Si ،ﺧﻮﺩﺵ ﺭﺍ ﻫﻤﺎﻫﻨﮓ ﻛﻨﻨﺪﻩ ﺟﺪﻳﺪ ﺍﻧﺘﺨﺎﺏ ﻣﻲ ﻛﻨﺪ .
Θﺍﮔﺮ ﭘﺎﺳﺦ ﺩﺭﻳﺎﻓﺖ ﺷﻮﺩ Si ،ﻓﺎﺻﻠﻪ ﺯﻣﺎﻧﻲ Tﺭﺍ ﺷﺮﻭﻉ ﻣﻲ ﻛﻨﺪ ،ﻣﻨﺘﻈﺮ ﺩﺭﻳﺎﻓﺖ ﭘﻴﺎﻣﻲ ﻣﻲ ﻣﺎﻧﺪ
ﻛﻪ ﺳﺎﻳﺖ ﺑﺎ ﻋﺪﺩ ﺷﻨﺎﺳﺎﻳﻲ ﺑﺎﻻﺗﺮ ﺍﻧﺘﺨﺎﺏ ﻛﺮﺩﻩ ﺍﺳﺖ.
130
Θﺍﮔﺮ ﻫﻴﭻ ﭘﻴﺎﻣﻲ ﺩﺭﻡ ﺣﺪﻭﺩﻩ Tﻓﺮﺳﺘﺎﺩﻩ ﻧﺸﻮﺩ ،ﺑﭙﺬﻳﺮﻳﺪ ﻛﻪ ﺳﺎﻳﺘﻲ ﺑﺎ ﻋﺪﺩ ﺑﺎﺍﻻﺗﺮ ﺷﻜﺴﺖ
ﺧﻮﺭﺩﻩ ﺍﺳﺖ ؛ Siﺍﻟﮕﻮﺭﻳﺘﻢ ﺭﺍ ﻣﺠﺪﺩﺍ ﺷﺮﻭﻉ ﻣﻲ ﻛﻨﺪ.
Θﺑﻌﺪ ﺍﺯ ﺍﻧﻜﻪ ﺳﺎﻳﺖ ﺷﻜﺴﺖ ﺧﻮﺭﺩﻩ ﺑﻬﺒﻮﺩ ﻣﻲ ﻳﺎﺑﺪ ،ﻓﻮﺭﺍ ﺍﺟﺮﺍﻱ ﺍﻟﮕﻮﺭﻳﺘﻢ ﻣﺸﺎﺑﻪ ﺭﺍ ﺷﺮﻭﻉ ﻣﻲ
ﻛﻨﺪ.
Θﺍﮔﺮ ﻫﻴﭻ ﺳﺎﻳﺖ ﻓﻌﺎﻟﻲ ﺑﺎ ﺍﻋﺪﺍﺩ ﺑﺎﻻﺗﺮ ﻭﺟﻮﺩ ﻧﺪﺍﺷﺘﻪ ﺑﺎﺷﺪ ،ﺳﺎﻳﺖ ﺑﻬﺒﻮﺩﻳﺎﻓﺘﻪ ﺗﻤﺎﻣﻲ ﻓﺮﺍﻳﻨﺪﻫﺎ ﺍ
ﺍﻋﺪﺍﺩﻛﻤﺘﺮ ﺭﺍ ﻭﺍﺩﺍﺭ ﻣﻲ ﻛﻨﺪ ﺗﺎ ﺁﻧﺮﺍ ﻣﺠﺎﺯ ﻛﻨﺪ ﻳﻚ ﺳﺎﻳﺖ ﻫﻤﺎﻫﻨﮓ ﻛﻨﻨﺪﻩ ﺑﺎﺷﺪ ،ﺣﺘﻲ ﺍﮔﺮ
ﻫﻤﺎﻫﻨﮓ ﻛﻨﻨﺪﻩ ﺩﺭ ﺣﺎﻝ ﺣﺎﺿﺮ ﻓﻌﺎﻝ ﺑﺎ ﺍﻋﺪﺍﺩ ﻛﻤﺘﺮ ﻭﺟﻮﺩ ﺩﺍﺷﺘﻪ ﺑﺎﺷﺪ .
ﺳﻮﺩ ﺑﺎﻟﻘﻮﻩ ﺩﺭ ﻋﻤﻠﻜﺮﺩ ﺍﺯ ﺩﺍﺷﺘﻦ ﭼﻨﺪﻳﻦ ﺳﺎﻳﺖ ،ﺑﺨﺶ ﻫﺎﻱ ﭘﺮﺱ ﻭ ﺟﻮ ﺩﺭ ﺗﻮﺍﺯﻱ ﺭﺍ
ﭘﺮﺩﺍﺯﺵ ﻣﻲ ﻛﻨﺪ .
lﺑﺎﻳﺴﺘﻲ ﺟﻬﺖ ﺳﺎﺧﺘﺎﺭﺑﻨﺪﻱ ﺭﺍﺑﻄﻪ rﺍﺯ ﺑﺨﺶ ﻫﺎﻳﺶ ﻋﻤﻠﻲ ﻭ ﻣﻤﻜﻦ ﺑﺎﺷﺪ .
lﺭﺍﺑﻄﻪ rﺭﺍ ﺑﺎ ﻋﺒﺎﺭﺗﻲ ﺟﻬﺖ ﺳﺎﺧﺘﺎﺭﺑﻨﺪﻱ ﺭﺍﺑﻄﻪ rﺍﺯ ﺑﺨﺶ ﻫﺎﻳﺶ ﺟﺎﻳﮕﺰﻳﻦ ﻛﻨﻴﺪ .
131
ﭘﺮﺱ ﻭ ﺟﻮ ” σ branch _name = “Hillsideﺑﺼﻮﺭﺕ ﺯﻳﺮ ﻣﻲ ﺷﻮﺩ :
ﺍﺳﺘﺮﺍﺗﮋﻱ ﻧﻬﺎﻳﻲ ﺑﺮﺍﻱ ﺳﺎﻳﺖ Hillsideﺟﻬﺖ ﺑﺎﺯﮔﺮﺩﺍﻧﺪﻥ account1ﺑﻪ ﻋﻨﻮﺍﻥ ﻧﺘﻴﺠﻪ ﭘﺮﺱ
ﻭ ﺟﻮ ﺍﺳﺖ.
• ﺷﻌﺒﻪ ﺩﺭ S 3
• ﺑﺮﺍﻱ ﭘﺮﺱ ﻭ ﺟﻮ ﻣﻨﺘﺸﺮ ﺷﺪﻩ ﺩﺭ ﺳﺎﻳﺖ ، Sﺳﻴﺴﺘﻢ ﺑﻪ ﺍﻳﺠﺎﺩ ﻧﺘﻴﺠﻪ ﺩﺭ ﺳﺎﻳﺖ SIﻧﻴﺎﺯ ﺩﺍﺭﺩ.
132
ﭘﺎﻳﮕﺎﻩ ﻫﺎﻱ ﺩﺍﺩﻩ ﺗﻮﺯﻳﻊ ﺷﺪﻩ ﻧﺎﻫﻤﮕﻦ
ﭼﻨﺪﻳﻦ ﺑﺮﻧﺎﻣﻪ ﻛﺎﺭﺑﺮﺩﻱ ﭘﺎﻳﮕﺎﻩ ﺩﺍﺩﻩ ﺑﻪ ﺩﺍﺩﻩ ﺍﺯ ﻣﺠﻤﻮﻋﻪ ﭘﺎﻳﮕﺎﻩ ﻫﺎﻱ ﺩﺍﺩﻩ ﭘﻴﺶ ﻣﻮﺟﻮﺩ ﻭﺍﻗﻊ ﺷﺪﻩ ﺩﺭ
ﻣﺠﻤﻮﻋﻪ ﻧﺎﻫﻤﮕﻦ ﺳﻜﻮﻫﺎﻱ ﺳﺨﺖ ﺍﻓﺰﺍﺭ ﻭ ﻧﺮﻡ ﺍﻓﺰﺍﺭ ﻧﻴﺎﺯ ﺩﺍﺭﺩ .ﻣﺪﻝ ﻫﺎﻱ ﺩﺍﺩﻩ ﻣﻤﻜﻦ ﺍﺳﺖ )ﺳﻠﺴﻠﻪ
ﻣﺮﺍﺗﺒﻲ ،ﺍﺭﺗﺒﺎﻃﻲ ﻭ ﻏﻴﺮﻩ ( ﻣﺘﻔﺎﻭﺕ ﺑﺎﺷﻨﺪ .ﭘﺮﻭﺗﻜﻞ ﻫﺎﻱ ﻭﺍﮔﺬﺍﺭﻱ ﺗﺮﺍﻛﻨﺶ ﻣﻤﻜﻦ ﺍﺳﺖ ﻧﺎﺳﺎﺯﮔﺎﺭ
ﺑﺎﺷﺪ .ﻛﻨﺘﺮﻝ ﻩ ﻣﮕﺎﻫﻲ ﻣﻤﻜﻦ ﺍﺳﺖ ﻣﺒﺘﻨﻲ ﺑﺮ ﺗﻜﻨﻴﻚ ﻫﺎﻱ ﻣﺘﻔﺎﻭﺕ ) ﻗﻔﻞ ﻛﺮﺩﻥ ،ﻧﺸﺎﻥ ﺯﻣﺎﻧﻲ ﻭ
ﻏﻴﺮﻩ ( ﺑﺎﺷﺪ .ﺟﺰﺋﻴﺎﺕ ﺳﻄﺢ ﺳﻴﺴﺘﻢ ﺗﻘﺮﻳﺒﺎ ﺑﻪ ﻃﻮﺭ ﻣﺸﺨﺺ ﻛﺎﻣﻼ ﻧﺎﺳﺎﺯﮔﺎﺭ ﺍﺳﺖ .
ﺳﻴﺴﺘﻢ ﭼﻨﺪ ﭘﺎﻳﮕﺎﻩ ﺩﺍﺩﻩ ﺍﻱ ﻳﻚ ﻻﻳﻪ ﻧﺮﻡ ﺍﻓﺰﺍﺭ ﺩﺭ ﺑﺎﻻﻱ ﺳﻴﺴﺘﻢ ﻫﺎﻱ ﭘﺎﻳﮕﺎﻩ ﺩﺍﺩﻩ ﻛﻨﻮﻧﻲ ﺍﺳﺖ ﻛﻪ
ﺟﻬﺖ ﺩﺳﺘﻜﺎﺭﻱ ﺍﻃﻼﻋﺎﺕ ﺩﺭ ﭘﺎﻳﮕﺎ ﻩ ﻫﺎﻱ ﺩﺍﺩﻩ ﻧﺎﻫﻤﮕﻦ ﻃﺮﺍﺣﻲ ﻣﻲ ﺷﻮﺩ .
ﻣﺰﺍﻳﺎ
ﺣﻔﻆ ﺳﺮﻣﺎﻳﻪ ﮔﺬﺍﺭﻱ ﺩﺭ ﺍﻳﻦ ﻣﻮﺍﺭﺩ :ﺳﺨﺖ ﺍﻓﺰﺍﺭﻱ ،ﻧﺮﻡ ﺍﻓﺰﺍﺭ ﺳﻴﺴﺘﻢ ،ﺑﺮﻧﺎﻣﻪ ﻫﺎﻱ ﻛﺎﺭﺑﺮﺩﻱ
– ﭘﺎﻳﮕﺎﻩ ﻫﺎﻱ ﺩﺍﺩﻩ ﻣﺤﻠﻲ ﺗﻤﺎﻳﻞ ﺑﻪ ﺣﻔﻆ ﺍﺳﺘﻘﻼﻝ ﺑﻴﺸﺘﺮ ﺩﺍﺭﺩ .
133
ﺳﻴﺴﺘﻢ ﻫﺎﻱ ﺗﻌﺪﻳﻞ ﻛﻨﻨﺪﻩ
ﺳﻴﺴﺘﻢ ﻫﺎﻱ ﺗﻌﺪﻳﻞ ﻛﻨﻨﺪﻩ ،ﺳﻴﺴﺘﻢ ﻫﺎﻳﻲ ﻫﺴﺘﻨﺪ ﻛﻪ ﻣﻨﺎﺑﻊ ﺩﺍﺩﻩ ﻧﺎﻫﻤﮕﻦ ﻣﺘﻌﺪﺩ ﺭﺍ ﺑﺎ ﺍﺭﺍﺋﻪ ﻛﺮﺩﻥ
ﺩﻳﺪﮔﺎﻩ ﺟﻬﺎﻧﻲ ﻳﻜﭙﺎﺭﭼﻪ ﺷﺪﻩ ﻳﻜﭙﺎﺭﭼﻪ ﻣﻲ ﻛﻨﻨﺪ ﻭ ﺗﺴﻬﻴﻼﺕ ﭘﺮﺱ ﻭ ﺟﻮ ﺩﺭ ﺩﻳﺪﮔﺎﻩ ﺟﻬﺎﻧﻲ ﺭﺍ
ﺍﺭﺍﺋﻪ ﻣﻲ ﺩﻫﻨﺪ .ﺑﺮﺧﻼﻑ ﺳﻴﺴﺘﻢ ﻫﺎﻱ ﭘﺎﻳﮕﺎﻩ ﺩﺍﺩﻩ ﻛﺎﻣﻼ ، fledgedﺑﻪ ﻃﻮﺭﻛﻠﻲ ﺗﻌﺪﻳﻞ ﻛﻨﻨﺪﻩ
ﻫﺎ ﺩﺭﺑﺎﺭﻩ ﭘﺮﺩﺍﺯﺵ ﺗﺮﺍﻛﻨﺶ ﺁﺳﻴﺐ ﻧﻤﻲ ﺑﻴﻨﻨﺪ .ﺍﻣﺎ ﺍﺻﻼﺣﺎﺕ ﺗﻌﺪﻳﻞ ﻛﻨﻨﺪﻩ ﻭ ﭼﻨﺪ ﭘﺎﻳﮕﺎﻩ ﺩﺍﺩﻩ ﺍﻱ
ﮔﺎﻫﻲ ﺍﻭﻗﺎﺕ ﺑﻪ ﻃﻮﺭ ﻗﺎﺑﻞ ﺗﻌﻮﻳﻀﻲ ﺍﺳﺘﻔﺎﺩﻩ ﻣﻲ ﺷﻮﺩ .ﺍﺻﻄﻼﺡ ﭘﺎﻳﮕﺎﻩ ﺩﺍﺩﻩ ﻣﺠﺎﺯﻱ ﺟﻬﺖ ﺍﺷﺎﺭﻩ ﺑﻪ
ﺳﻴﺴﺘﻢ ﻫﺎﻱ ﭼﻨﺪ ﭘﺎﻳﮕﺎﻩ ﺩﺍﺩﻩ ﺗﻌﺪﻳﻞ ﻛﻨﻨﺪﻩ ﺍﺳﺘﻔﺎﺩﻩ ﻣﻲ ﺷﻮﺩ.
lﺍﻃﻼﻋﺎﺕ ﻛﺎﺭﻣﻨﺪ ﺍﺯﻗﺒﻴﻞ ﻧﺎﻡ ،ﺷﻤﺎﺭﻩ ﺷﻨﺎﺳﺎﻳﻲ ،ﺍﻳﻤﻴﻞ ،ﺗﻠﻔﻦ ،ﺁﺩﺭﺱ ﺍﺩﺍﺭﻩ
ﺻﻔﺤﺎﺕ ﺳﻔﻴﺪ
ﺑﻪ ﻣﻌﻨﻲ ﺟﺴﺘﺠﻮﻱ ﺑﻴﺸﺘﺮ ﺟﻬﺖ ﭘﻴﺪﺍ ﻛﺮﺩﻥ ﺍﻃﻼﻋﺎﺕ ﺑﻴﺸﺘﺮ ﺩﺭﺑﺎﺭﻩ ﻳﻚ ﺛﺒﺖ
ﺻﻔﺤﺎﺕ ﺯﺭﺩ
lﺑﺮﺍﻱ ﺟﺴﺘﺠﻮﻱ ﻣﻌﻜﻮﺱ ﺟﻬﺖ ﭘﻴﺪﺍﻛﺮﺩﻥ ﺛﺒﺖ ﻫﺎﻱ ﺗﻄﺒﻴﻖ ﺩﻫﻨﺪﻩ ﻣﻘﺘﻀﻴﺎﺕ ﺧﺎﺹ
134
ﺭﺍﻳﺞ ﺗﺮﻳﻦ پﺭﻭﺗﻜﻞ ﺩﺳﺘﺮﺳﻲ ﻓﻬﺮﺳﺖ ﻣﻮﺭﺩ ﺍﺳﺘﻔﺎﺩﻩ )LDAP :ﭘﺮﻭﺗﻜﻞ ﺩﺳﺘﺮﺳﻲ ﻓﻬﺮﺳﺖ
ﺳﺒﻚ ﻭﺯﻥ ( ﻛﻪ ﺳﺎﺩﻩ ﺷﺪﻩ ﺍﺯ ﭘﺮﻭﺗﻜﻞ X.500ﺍﻭﻟﻴﻪ
ﺳﻮﺍﻝ :ﭼﺮﺍ ﺍﺯ ﭘﺮﻭﺗﻜﻞ ﻫﺎﻱ ﭘﺎﻳﮕﺎﻩ ﺩﺍﺩﻩ ﻣﺎﻧﻨﺪ ODBC/JDBCﺍﺳﺘﻔﺎﺩﻩ ﻧﻤﻲ ﻛﻨﻴﻢ ؟
ﻣﺎﻧﻨﺪ ﺳﺮﻭﺭﻫﺎﻱ ﻣﺨﺘﻠﻒ ﺑﺮﺍﻱ Bell Labs Murray Hill and Bell Labs Bangalore
ﻓﻬﺮﺳﺖ ﻫﺎ ﻣﻤﻜﻦ ﺍﺳﺖ ﺍﺯ ﭘﺎﻳﮕﺎﻩ ﻫﺎﻱ ﺩﺍﺩﻩ ﺑﻪ ﻋﻨﻮﺍﻥ ﻣﻜﺎﻧﻴﺴﻢ ﻗﻮﻱ ﺍﺳﺘﻔﺎﺩﻩ ﻛﻨﻨﺪ .
ﺍﺭﺟﺎﻋﻲ ﻫﺎ ﻋﺎﻣﻞ ﺍﺻﻠﻲ ﺩﺭ ﻳﻜﭙﺎﺭﭼﻪ ﻛﺮﺩﻥ ﻣﺠﻤﻮﻋﻪ ﺗﻮﺯﻳﻊ ﺷﺪﻩ ﻓﻬﺮﺳﺖ ﻫﺎ ﻫﺴﺘﻨﺪ .ﺯﻣﺎﻧﻴﻜﻪ ﻳﻚ
ﺳﺮﻭﺭ ﺑﻪ ﭘﺮﺱ ﻭ ﺟﻮ ﻗﺎﺑﻞ ﺩﺳﺘﺮﺳﻲ ﺑﻪ ﻳﻚ ﮔﺮﻩ ﺍﺭﺟﺎﻋﻲ ﺩﺳﺖ ﻣﻲ ﻳﺎﺑﺪ ،ﻣﻤﻜﻦ ﺍﺳﺖ ﭘﺮﺱ ﻭ ﺟﻮ
ﺟﻠﻮﻳﻲ ﺑﻪ DITﺍﺭﺟﺎﻉ ﺩﺍﺩﻩ ﺷﺪﻩ ﻭ ﭘﺎﺳﺦ ﺑﺮﮔﺸﺘﻲ ﺑﻪ ﻣﺮﺍﺟﻌﻪ ﻛﻨﻨﺪﻩ ﺑﺎﺷﺪ ،ﻳﺎ ﺑﺮﮔﺸﺖ ﺍﺭﺟﺎﻋﻲ ﺑﻪ
135
DITﺍﺭﺟﺎﻉ ﺩﺍﺩﻩ ﺷﺪﻩ )ﺑﺪﻭﻥ ﻣﺮﺍﺟﻌﻪ ﻛﻨﻨﺪﻩ ﺍﻱ ﺭﺍ ﺍﺭﺍﺋﻪ ﺩﻫﻴﺪ ﻛﻪ ﺑﻄﻮﺭ ﺷﻔﺎﻑ ﭘﺮﺱ ﻭ ﺟﻮﻳﻲ ﺑﻪ
ﻣﺪﺍﺧﻠﻪ ﻛﺎﺭﺑﺮ( ﻣﻲ ﻓﺮﺳﺘﺪ.
ﻓﺎﺯ : 1ﻛﻪ ﺷﺎﻣﻞ ﻳﻚ ﺗﺼﻤﻴﻢ ﻣﻘﺪﻣﺎﺗﻲ ﺍﺳﺖ ﻳﻌﻨﻲ ﺷﻨﺎﺳﺎﻳﻲ 2PCﺩﺭ ﻓﺎﺯ ﻳﻚ.
ﻫﺮ ﺳﺎﻳﺘﻲ ﻣﻴﺘﻮﺍﻧﺪ ﻋﻤﻞ ﺧﻮﺍﻧﺪ ﺭﻭﻱ ﺩﺳﺘﻮﺭﺍﺕ ﭘﺬﻳﺮﺵ ﺷﺪﻩ ﺭﺍ ﺍﻧﺠﺎﻡ ﺩﻫﺪ .
ﻓﺎﺯ : 2ﺍﻳﻦ ﻓﺎﺯ ﺑﻪ ﺩﻭ ﻓﺎﺯ ﺷﻜﺴﺘﻪ ﻣﻴﺸﻮﺩ ،ﻓﺎﺯ 2ﻭ ﻓﺎﺯ 3ﺑﺮﺍﻱ 3PC
ﺗﺤﺖ ﻧﻈﺮ ،3PCﺗﺼﻤﻴﻢ ﻫﻤﺎﻫﻨﮓ ﻛﻨﻨﺪﻩ ﻣﻴﺘﻮﺍﻧﺪ ﺣﺘﻲ ﺩﺭ ﺻﻮﺭﺕ ﻭﺟﻮﺩ ﺧﻄﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺷﻮﺩ .
ﻣﻌﺎﻳﺐ:
136
ﻓﺼﻞ :7
ﭘﺮﺩﺍﺯﺵ ﭘﺮﺱ ﻭ ﺟﻮ
137
ﻟﻴﺴﺖ ﻣﻄﺎﻟﺐ:
ﭘﻴﺶ ﻧﻤﺎﻳﺶ
ﻋﻤﻠﻴﺎﺕ ﺍﻧﺘﺨﺎﺏ
ﻣﺮﺗﺐ ﺳﺎﺯﻱ
ﺗﺎﺭﻳﺦ ﻋﻤﻠﻴﺎﺕ
ﺩﻳﮕﺮ ﻋﻤﻠﻴﺎﺕ
ﺍﺭﺯﻳﺎﺑﻲ ﻋﺒﺎﺭﺍﺕ
(2ﺑﻬﻴﻨﻪ ﺳﺎﺯﻱ
(3ﺍﺭﺯﻳﺎﺑﻲ
138
ﺗﺠﺰﻳﻪ ﻭ ﺍﻧﺘﻘﺎﻝ
• Queryﺩﺭ ﻋﻤﻠﻴﺎﺕ ﺩﺍﺧﻠﻲ ﺑﻪ ﺍﻳﻦ ﻣﻌﻨﻲ ﺳﺖ.
• ﺗﺠﺰﻳﻪ ﻛﻨﻨﺪﻩ ،ﭼﻚ ﻛﺮﺩﻥ )syntaxﭼﻚ ﻛﺮﺩﻥ ﻣﺤﺘﻮﺍﻱ ﻣﺘﻨﻲ( ،ﺗﺎﺋﻴﺪ ،ﺭﻭﺍﺑﻂ.
• ﺩﺭﺣﻘﻴﻘﺖ ﺩﺍﺧﻞ ﻳﻚ ﻋﻤﻠﻴﺎﺕ ﭘﺮﺱ ﻭ ﺟﻮ ﺗﻤﺎﻡ ﺍﻳﻦ ﻛﺎﺭﻫﺎ ﺍﻧﺠﺎﻡ ﻣﻲ ﺷﻮﺩ ﻭ ﻧﺘﻴﺠﻪ
ﻋﻤﻠﻴﺎﺕ Queryﻣﻮﺭﺩ ﻧﻈﺮ ﻛﺎﺭﺑﺮ ﺍﺳﺖ.
ﺍﺭﺯﻳﺎﺑﻲ
• ﺩﺭ ﺍﺟﺮﺍﻱ ﻃﺮﺡ ﭘﺮﺱ ﻭ ﺟﻮ ﻋﻤﻠﻴﺎﺕ ﺍﺭﺯﻳﺎﺑﻲ ﺑﻪ ﻃﻮﻝ ﻣﻲ ﺍﻧﺠﺎﻣﺪ ﭼﺮﺍﻛﻪ ﻃﺮﺡ ﺑﺎﻳﺪ
ﺍﺟﺮﺍ ﻭ ﭘﺎﺳﺦ ﻫﺎ ﺑﻪ ﭘﺮﺱ ﻭ ﺟﻮ ﺑﺮﮔﺮﺩﺍﻧﺪﻩ ﺷﻮﺩ.
♦ ﻳﻚ ﻋﺒﺎﺭﺕ ﻳﺎ ﺭﺍﺑﻄﻪ ﺟﺒﺮﻱ ﻣﻤﻜﻦ ﺍﺳﺖ ﺩﺍﺭﺍﻱ ﭼﻨﺪ ﻋﺒﺎﺭﺕ ﺍﺭﺯﻳﺎﺑﻲ ﺑﺎﺷﺪ.
ﻣﺜﺎﻝ:
ﻣﺘﻘﺎﺑﻼ ﻳﻚ ﻋﺒﺎﺭﺕ ﺟﺒﺮﻱ ﻧﻴﺰ ﺍﺯ ﺟﻬﺎﺕ ﻣﺨﺘﻠﻒ ﻣﻲ ﺗﻮﺍﻧﺪ ﻣﻮﺭﺩ ﺍﺭﺯﻳﺎﺑﻲ ﻗﺮﺍﺭ ﺑﮕﻴﺮﺩ .
♦ ﺍﺭﺯﻳﺎﺑﻲ ﻃﺮﺡ
ﺑﻌﻨﻮﺍﻥ ﻣﺜﺎﻝ ﻣﻲ ﺗﻮﺍﻥ ﺑﺮﺍﻱ ﭘﻴﺪﺍ ﻛﺮﺩﻥ ﻣﺪﺭﺳﺎﻥ ﺑﺎ ﺣﻘﻮﻕ ﻛﻤﺘﺮ ﺍﺯ 75000ﺍﺯﺷﺎﺧﺺ
)ﺷﺮﻁ( salary<75000ﺍﺳﺘﻔﺎﺩﻩ ﻛﺮﺩ.
139
ﻳﺎ ﻣﻲ ﺗﻮﺍﻥ ﺑﺎ ﺟﺴﺘﺠﻮ ﻭ ﺍﺳﻜﻦ ﻣﺪﺭﺳﺎﻥ ﺑﺎ ﺣﻘﻮﻕ ﺑﺎﻻﻱ 75000ﺭﺍ ﺣﺬﻑ ﻛﺮﺩ ﺗﺎ
ﻣﺪﺭﺳﺎﻥ ﺑﺎ ﺣﻘﻮﻕ ﻛﻤﺘﺮﺍﺯ 75000ﻣﺸﺨﺺ ﺷﻮﻧﺪ.
ﭼﮕﻮﻧﮕﻲ ﺗﺮﻛﻴﺐ ﺍﻟﮕﻮ ﺭﻳﺘﻢ ﻫﺎ ﺑﺮﺍﻱ ﻋﻤﻠﻴﺎﺕ ﻫﺎﻱ ﻓﺮﺩﻱ ﺏ ﻣﻨﻈﻮﺭ ﺍ ﺭﺯﻳﺎﺑﻲ ﻛﺎﻣﻞ ﻳﻚ
ﻋﺒﺎﺭﺕ.
♦ ﻓﺼﻞ ﭼﻬﺎﺭﺩﻫﻢ
ﺑﻬﻴﻨﻪ ﺳﺎﺯﻱ ﭘﺮﺱ ﻭﺟﻮﻫﺎﻱ ﺍﻧﺠﺎﻡ ﺷﺪﻩ ﻭ ﭼﮕﻮﻧﻪ ﭘﻴﺪﺍ ﻛﻨﻴﻢ ﺭﻭﺵ ﺍﺭﺯﻳﺎﺑﻲ ﻛﻪ ﻛﻤﺘﺮﻳﻦ
ﻫﺰﻳﻨﻪ ﺭﺍ ﺩﺍﺭﺩ.
ﻣﻌﻤﻮﻻ ﺩﺳﺘﺮﺳﻲ ﺑﻪ ﺩﻳﺴﻚ ﻫﺰﻳﻨﻪ ﻏﺎﻟﺐ ﺍﺳﺖ ﻭ ﻧﺴﺒﺘﺎ ﺁﺳﺎﻥ ﺑﺮﺁﻭﺭﺩﻣﻲ ﺷﻮﺩ ﻭ ﺍﻧﺪﺍﺯﮔﻴﺮﻱ ﺑﺎ
ﺗﻮﺟﻪ ﺑﻪ:
140
∆ ﺗﻌﺪﺍﺩ ﺟﺴﺘﺠﻮ* ﻣﺘﻮﺳﻂ ﻫﺰﻳﻨﻪ ﺟﺴﺘﺠﻮ
ﺯﻣﺎﻥ ﻧﻮﺷﺘﻦ ﻳﻚ ﺑﻠﻮﻙ ﺍﺯ ﺯﻣﺎﻥ ﺷﺮﻭﻉ ﺑﻪ ﻧﻮﺷﺘﻦ ﺗﺎ ﺣﺼﻮﻝ ﺍﻃﻤﻴﻨﺎﻥ ﺍﺯ ﺻﺤﺖ ﻧﻮﺷﺘﻦ
ﺍﻃﻼﻋﺎﺕ ﻣﻲ ﺑﺎﺷﺪ.
ﺑﺮﺍﻱ ﺳﺎﺩﮔﻲ ،ﻓﻘﻂ ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺗﻌﺪﺍﺩﻱ ﺑﻼﻙ ﻫﺎﻱ ﻣﻨﺘﻘﻞ ﺷﺪﻩ ﺍﺯ ﺩﻳﺴﻚ ﻭ ﺗﻌﺪﺍﺩ ﺍﺯ
ﺟﺴﺘﺠﻮﻫﺎ ﻫﺰﻳﻨﻪ ﻫﺎ ﺭﺍ ﻣﺤﺎﺳﺒﻪ ﻣﻲ ﻛﻨﻴﻢ .
ﻧﻜﺘﻪ :ﺩﺭ ﺳﻴﺴﺘﻢ ﻫﺎﻱ ﻭﺍﻗﻌﻲ ﻫﺰﻳﻨﻪ ﻫﺎﻱ CPUﺣﺘﻤﺎ ﺑﻪ ﺣﺴﺎﺏ ﻣﻲ ﺁﻳﺪ.
ﺑﺮﺍﻱ ﻧﻮﺷﺘﻦ ﺧﺮﻭﺟﻲ ﺭﻭﻱ ﺩﻳﺴﻚ ﻫﺰﻳﻨﻪ ﺍﻱ ﺭﺍ ﺩﺭ ﻓﺮﻣﻮﻝ ﻫﺰﻳﻨﻪ ﻫﺎ ﺑﻪ ﺣﺴﺎﺏ ﻧﻤﻲ ﺁﻭﺭﻳﻢ .
ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﻓﻀﺎﻱ ﺍﺿﺎﻓﻲ ﺑﺎﻓﺮ ﻣﻲ ﺗﻮﺍﻥ ﻫﺰﻳﻨﻪ ﻩ ﺍﻱ ﻭﺭﻭﺩ ﻭ ﺧﺮﻭﺝ ﺍﻃﻼﻋﺎﺕ ﺑﻪ ﺩﻳﺴﻚ ﺭﺍ
ﻛﺎﻫﺶ ﺩﺍﺩ .
ﻣﻘﺪﺍﺭ ﻭﺍﻗﻌﻲ ﺣﺎﻓﻈﻪ ﺑﺎﻓﺮ ﻗﺎﺑﻞ ﺩﺳﺘﺮﺱ ﺑﺴﺘﮕﻲ ﺑﻪ ﻓﺮﺁﻳﻨﺪﻫﺎﻱ ﻫﻤﺰﻣﺎﻥ ﻭ ﺷﻨﺎﺧﺘﻪ
ﺷﺪﻩ ﺩﺭ ﺣﻴﻦ ﺍﺟﺮﺍﻱ ﺳﻴﺴﺘﻢ ﻋﺎﻣﻞ ﺩﺍﺭﺩ .
141
ﺍﻏﻠﺐ ﺑﺪﺗﺮﻳﻦ ﺑﺮﺁﻭﺭﺩ ﻣﻤﻜﻦ ﺭﺍ ﺩﺭ ﻧﻈﺮ ﻣﻲ ﮔﻴﺮﻳﻢ ﻛﻪ ﺣﺪﺍﻗﻞ ﻣﻘﺪﺍﺭ ﺣﺎﻓﻈﻪ
ﻣﻮﺭﺩ ﻧﻴﺎﺯ ﺑﺮﺍﻱ ﻋﻤﻠﻴﺎﺕ ﺩﺭ ﺩﺳﺘﺮﺱ ﺍﺳﺖ
ﺩﺍﺩﻩ ﻫﺎﻱ ﻣﻮﺭﺩ ﻧﻴﺎﺯ ﻣﻤﻜﻦ ﺍﺳﺖ ﺩﺭ ﺣﺎﻝ ﺣﺎﺿﺮ ﺩﺭ ﺑﺎﻓﺮ ﻗﺮﺍﺭ ﺑﮕﻴﺮﻧﺪ ﻭ ﺍﺯ ﺧﻮﺍﻧﺪﻥ ﻳﺎ ﻧﻮﺷﺘﻦ
ﺭﻭﻱ ﺩﻳﺴﻚ ﺍﺟﺘﻨﺎﺏ ﻛﻨﻨﺪ
ﺍﻣﺎ ﻫﺎﺭﺩ ﺩﻳﺴﻚ ﺯﻣﺎﻥ ﺭﺍ ﺑﺮﺍﻱ ﺑﺮﺁﻭﺭﺩ ﻫﺰﻳﻨﻪ ﻫﺎﺩﺭ ﻧﻈﺮ ﻣﻲ ﮔﻴﺮﺩ .
ﻋﻤﻠﻴﺎﺕ ﺍﻧﺘﺨﺎﺑﻲ
ﺍﺳﻜﻦ ﻓﺎﻳﻞ:
ﺍ ﺍﻟﮕﻮﺭﻳﺘﻢ)1ﺟﺴﺘﺠﻮﻱ ﺧﻄﻲ ( ﺗﻤﺎﻡ ﻓﺎﻳﻞ ﺭﺍ ﻣﻮﺭﺩ ﺟﺴﺘﺠﻮ ﻗﺮﺍﺭ ﺩﺍﺩﻩ ﻭ ﺗﻤﺎﻡ ﺭﻛﻮﺭﺩﻫﺎ ﺭﺍ ﺏ
ﺷﺮﻁ ﺗﻌﻴﻴﻦ ﺷﺪﻩ ﺗﺴﺖ ﻣﻲ ﻛﻨﺪ ﺗﺎ ﺷﺮﻁ ﺩﺭﻫﺮ ﺭﻛﻮﺭﺩ ﺻﺪﻕ ﻛﻨﺪ ﻭ ﺍﻥ ﺭﺍ ﻧﻤﺎﻳﺶ ﻣﻲ ﺩﻫﺪ
ﻣﺘﻮﻗﻒ ﺍﮔﺮ ﺍﻧﺘﺨﺎﺏ ﺩﺭ ﻳﻚ ﻭﻳﮋﮔﻲ ﻛﻠﻴﺪﻱ ﺍﺳﺖ ،ﻣﻲ ﺗﻮﺍﻧﺪ ﺩﺭ ﭘﻴﺪﺍ ﻛﺮﺩﻥ ﺭﻛﻮﺭﺩ ﺭﺍ
ﻛﻨﺪ
ﺷﺮﺍﻳﻂ ﺍﻧﺘﺨﺎﺏ
ﺟﺴﺘﺠﻮﻱ ﺩﻭﺩﻭﻳﻲ ﺑﺮﺍﻱ ﺩﺍﺩﻩ ﻫﺎﻳﻲ ﻛﻪ ﺑﺼﻮﺭﺕ ﻣﺮﺗﺐ ﺫﺧﻴﺮﻩ ﻧﺸﺪﻩ ﺍﻧﺪ ﻣﻌﻨﺎﻳﻲ ﻧﺨﻮﺍﻫﺪ
ﺩﺍﺷﺖ ﺑﺠﺰ ﺯﻣﺎﻧﻲ ﻛﻪ ﺍﻳﻨﺪﻛﺲ ﻫﺎ ﻗﺎﺑﻞ ﺩﺳﺘﺮﺳﻲ ﺑﺎﺷﻨﺪ .
142
Selections Using Indices
ﺷﺮﺍﻳﻂ ﺍﻧﺘﺨﺎﺏ ﺑﺮﺍﻱ ﺟﺴﺘﺠﻮ ﺑﺎﻳﺪ ﺑﺮ ﺭﻭﻱ ﻛﻠﻴﺪ ﺷﺎﺧﺺ ﺑﺎﺷﺪ .
143
ﻣﺮﺗﺐ ﺳﺎﺯﻱ ﺍﺩﻏﺎﻣﻲ ﺧﺎﺭﺟﻲ
N .1ﺑﻼﻙ ﺣﺎﻓﻈﻪ ﺑﺮﺍﻱ ﺑﺎﻓﺮ ﻭﺭﻭﺩﻱ ﻭ ﻳﻚ ﺑﻼﻙ ﺑﺮﺍﻱ ﺑﺎﻓﺮ ﺧﺮﻭﺟﻲ ﺩﺭ ﻧﻈﺮ
ﮔﺮﻓﺘﻪ ﻣﻲ ﺷﻮﺩ .ﺍﻭﻟﻴﻦ ﺑﻼﻙ ﻫﺮ ﺻﻔﺤﻪ ﺑﺎﻓﺮ ﺧﻮﺍﻧﺪﻩ ﻣﻲ ﺷﻮﺩ.
.2ﺗﻜﺮﺍﺭ
.3ﺣﺬﻑ ﺭﻛﻮﺭﺩ ﺍﺯ ﺑﺎﻓﺮ ﻭﺭﻭﺩﻱ ﺍﻟﺒﺘﻪ ﺩﺭ ﺻﻮﺭﺗﻴﻜﻪ ،ﺻﻔﺤﻪ ﺑﺎﻓﺮ ﺧﺎﻟﻲ ﺷﺪﻩ ﺑﺎﺷﺪ
ﺳﭙﺲ ﺑﻼﻙ ﺑﻌﺪﻱ ﺍﺟﺮﺍ ﺷﺪﻩ ﺩﺭ ﺑﺎﻓﺮ ﺧﻮﺍﻧﺪﻩ ﺷﺪﻩ ﺑﺎﺷﺪ .
144
ﺍﮔﺮ N ≥ Mﭼﻨﺪ ﻣﺮﺣﻠﻪ ﺑﺎﻳﺪ ﺍﻧﺠﺎﻡ ﺷﻮﺩ:
ﺩﺭ ﻫﺮ ﭘﺎﺱ ﻓﺎﻛﺘﻮﺭﻱ ﺍﺯ Mﺑﺎ ﺍﺟﺮﺍﻱ M-1ﺗﻮﻟﻴﺪ ﻣﻲ ﺷﻮﺩ ﻭ ﺍﺟﺮﺍ ﺑﺎ ﻓﺎﻛﺘﻮﺭﻱ ﻛﻪ
ﺗﻮﻟﻴﺪ ﺷﺪﻩ ﺍﺩﺍﻣﻪ ﭘﻴﺪﺍ ﻣﻲ ﻛﻨﺪ ) .ﻣﻘﺪﺍﺭ Mﺑﺮﺍﻱ ﻣﺮﺣﻠﻪ ﺑﻌﺪ ﻳﻜﻲ ﻛﻢ ﻣﻲ ﺷﻮﺩ (.
Θﺑﻌﻨﻮﺍﻥ ﻣﺜﺎﻝ ،ﺍﮔﺮ M=11ﺑﺎﺷﺪ ،ﻭ 90ﺍﺟﺮﺍ ﺍﻧﺠﺎﻡ ﺷﻮﺩ ،ﻳﻚ ﭘﺎﺱ ﺗﻌﺪﺍﺩ
ﺍﺟﺮﺍﻫﺎ ﺭﺍ ﺑﻪ 9ﻛﺎﻫﺶ ﺩﺍﺩﻩ ،ﻛﻪ ﻫﺮ ﻛﺪﺍﻡ 10ﺑﺮﺍﺑﺮ ﺍﺟﺮﺍﻱ ﺍﻭﻟﻴﻪ ﺍﺳﺖ.
ﭘﺎﺱ ﻫﺎ ﭘﺸﺖ ﺳﺮﻫﻢ ﻭ ﻣﻜﺮﺭﺍ ﺍﺟﺮﺍ ﺷﺪﻩ ﺗﺎ ﻫﻤﻪ ﺑﺎ ﻫﻢ ﺍﺩﻏﺎﻡ ﺷﻮﻧﺪ .
ﺑﺮﺁﻭﺭﺩ ﻫﺰﻳﻨﻪ:
145
ﺩﺭ ﺍﺯﺍﻱ ﺍﺳﺘﻔﺎﺩﻩ bbﺑﻠﻮﻙ ﻫﺎﻱ ﺑﺎﻓﺮ ﺩﺭ ﻫﺮ ﺍﺟﺮﺍ )ﺧﻮﺍﻧﺪﻥ ﻭ ﻧﻮﺷﺘﻦ bb
ﺑﻠﻮﻙ ﺩﺭ ﻳﻚ ﺯﻣﺎﻥ (.
ﺑﻠﻮﻙ ﻫﺎﻱ ﻣﻨﺘﻘﻞ ﺷﺪﻩ ﺑﺮﺍﻱ ﺍﺟﺮﺍﻱ ﺍﻭﻟﻴﻪ ﻫﺮ ﭘﺎﺱ 2brﺍﺳﺖ .
ﺑﻨﺎﺑﺮﺍﻳﻦ ﺗﻌﺪﺍﺩ ﻛﻞ ﻧﻘﻞ ﻭﺍﻧﺘﻘﺎﻻﺕ ﺑﺮﺍﻱ ﺍﻳﻦ ﻧﻮﻉ ﻣﺮﺗﺐ ﺳﺎﺯﻱ ﺧﻮﺍﻫﺪ ﺑﻮﺩ .
)br ( 2 log M/bb–1 (br / M) + 1
ﻫﺰﻳﻨﻪ ﻫﺎﻱ ﺟﺴﺘﺠﻮ:
ﺩﺭ ﻃﻮﻝ ﺍﺟﺮﺍ :ﺩﺭ ﻫﺮ ﺍﺟﺮﺍﻳﻚ ﺟﺴﺘﺠﻮ ﺑﺮﺍﻱ ﺧﻮﺍﻧﺪﻥ ﻭ ﻳﻚ ﺟﺴﺘﺠﻮ ﺑﺮﺍﻱ ﻧﻮﺷﺘﻦ
ﻭﺟﻮﺩ ﺩﺍﺭﺩ
ﻃﻮﻝ ﻓﺎﺯ ﺍﺩﻏﺎﻡ ﻧﻴﺎﺯ ﺩﺍﺭﺩ ﺑﻪ 2 br / bbﺟﺴﺘﺠﻮ ﺑﺮﺍﻱ ﻫﺮ ﺍﺩﻏﺎﻡ ﺩﺭ ﻫﺮﭘﺎﺱ )ﺑﺠﺰ
ﻣﺮﺣﻠﻪ ﻧﻬﺎﻳﻲ ﻛﻪ ﻧﻴﺎﺯﻱ ﺑﻪ ﻧﻮﺷﺘﻦ ﻧﻴﺴﺖ (
146
ﺍﻟﮕﻮﺭﻳﺘﻢ ﺑﻠﻮﻙ ﻫﺎﻱ ﺣﻠﻘﻪ ﻫﺎﻱ ﺗﻮﺩﺭﺗﻮ
147
5000 ∗ 400 + 100 = 2,000,100 block transfers, n
5000 + 100 = 5100 seeks n
ﻣﺪﺗﻲ ﻛﻪ ﺭﺍﺑﻄﻪ ﺧﺎﺭﺟﻲ ﺑﻪ ﻃﻮﻝ ﻣﻲ ﺍﻧﺠﺎﻣﺪ
ﻧﻮﻉ ﺩﻳﮕﺮ ﺍﺯ ﺣﻠﻘﻪ ﻫﺎﻱ ﺗﻮ ﺩﺭ ﺗﻮ ﭘﻴﻮﺳﺘﻦ ﺍﺳﺖ ﻛﻪ ﺩﺭ ﺁﻥ ﻫﺮ ﺑﻠﻮﻙ ﺍﺯ ﺭﺍﺑﻄﻪ ﺩﺭﻭﻧﻲ ﺑﺎ
ﻫﺮ ﺑﻠﻮﻙ ﺍﺯ ﺭﺍﺑﻄﻪ ﺑﻴﺮﻭﻧﻲ ﻳﻚ ﺯﻭﺝ ﻣﻲ ﺷﻮﻧﺪ.
148
ﺑﻬﺘﺮﻳﻦ ﺑﺮﺁﻭﺭﺩ ﺧﻮﺍﻫﺪ ﺑﻮﺩ :
lﺩﺭ ﺑﻠﻮﻙ ﺣﻠﻘﻪ ﺗﻮ ﺩﺭ ﺗﻮ ،ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ M — 2ﺑﻠﻮﻙ ﺩﻳﺴﻚ ﻭﺍﺣﺪ ﺭﻭﺍﺑﻂ ﺑﻴﺮﻭﻧﻲ
ﻣﺴﺪﻭﺩ ﻣﻲ ﺷﻮﺩ ،ﻛﻪ ﺩﺭ ﺁﻥ = Mﺍﻧﺪﺍﺯﻩ ﺑﻠﻮﻙ ﻫﺎﻱ ﺣﺎﻓﻈﻪ؛ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺩﻭ ﺑﻠﻮﻙ ﺑﺎﻗﻲ
ﻣﺎﻧﺪﻩ ﺑﺮﺍﻱ ﺑﺎﻓﺮ ﺭﺍﺑﻄﻪ ﺩﺭﻭﻧﻲ ﻭ ﺧﺮﻭﺟﻲ
lﺣﺮﻛﺖ)ﺍﺟﺮﺍﻱ( ﻣﺘﻨﺎﻭﺏ ﺣﻠﻘﻪ ﺩﺭﻭﻧﻲ ﺭﻭ ﺑﻪ ﺟﻠﻮ ﻭ ﻋﻘﺐ ،ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺑﻠﻮﻙ ﻫﺎﻱ ﺑﺎﻗﻲ
ﻣﺎﻧﺪﻩ ﺩﺭ ﺑﺎﻓﺮ )ﺑﺎ ﺟﺎﻳﮕﺰﻳﻨﻲ .(LRU
lﻣﺸﺨﺼﻪ ﭘﻴﻮﻧﺪ ﻗﺎﺑﻞ ﺩﺳﺘﺮﺱ ﺑﻮﺩﻥ ﻳﻚ ﺷﺎﺧﺺ ﺭﻭﻱ ﺍﺭﺗﺒﺎﻁ ﺩﺭﻭﻧﻲ ﺍﺳﺖ .
nﺑﺮﺍﻱ ﻫﺮ ﺗﺎﭘﻞ TRﺩﺭ ﺭﺍﺑﻄﻪ ﻱ ﺑﻴﺮﻭﻧﻲ ،Rﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺷﺎﺧﺺ ﺑﺮﺍﻱ ﻣﺮﺍﺟﻌﻪ ﺑﻪ ﺗﺎﭘﻞ ﻫﺎ ﺩﺭ s
ﻛﻪ ﺷﺮﺍﻳﻂ ﭘﻴﻮﺳﺘﻦ ﺑﻪ ﺗﺎﭘﻞ TRﺑﺮﺁﻭﺭﺩ ﺷﺪﻩ ﺍﺳﺖ .
149
nﺑﺪﺗﺮﻳﻦ ﺣﺎﻟﺖ :ﻓﻀﺎﻳﺎﻓﺮ ﻓﻘﻂ ﺑﻪ ﺍﻧﺪﺍﺯﻩ ﻳﻚ ﺻﻔﺤﻪ ﺍﺯ rﺑﺎﺷﺪﻭﺑﺮﺍﻱ ﻫﺮﺗﺎﭘﻞ ﺩﺭ rﻣﺎ ﺑﻪ ﺷﺎﺧﺺ
ﻣﺮﺍﺟﻌﻪ ﻛﻨﻴﻢ.
Cﻣﻲ ﺗﻮﺍﻧﺪ ﺑﺮﺁﻭﺭﺩ ﻫﺰﻳﻨﻪ ﺷﻮﺩ ﺍﺯ ﺗﻨﻬﺎ ﻳﻚ ﺍﻧﺘﺨﺎﺏ ﺭﻭﻱ ﺗﺎﭘﻞ sﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺷﺮﺍﻳﻂ ﭘﻴﻮﻧﺪ.
nﺍﮔﺮﺷﺎﺧﺺ ﻫﺎﻱ ﻗﺎﺑﻞ ﺩﺳﺘﺮﺱ ﺗﺎﭘﻞ rﻭ sﺩﺍﺭﻱ ﻭﻳﮋﮔﻲ ﻫﺎﻱ ﭘﻴﻮﻧﺪ ﺑﺎﺷﻨﺪ ﺍﺯ ﺍﺭﺗﺒﺎﻁ ﺑﺎ ﺗﺎﭘﻞ
ﻫﺎﻱ ﻛﻤﺘﺮﻱ ﺑﻪ ﻋﻨﻮﺍﻥ ﺍﺭﺗﺒﺎﻁ ﺑﻴﺮﻭﻧﻲ ﺍﺳﺘﻔﺎﺩﻩ ﻣﻲ ﻛﻨﻨﺪ .
IDﺑﺎ ﺳﻪ ﺷﺎﺧﺺ ﻛﻪ ﺩﺭ ﻫﺮ ﺍﺟﺎﺯﻩ ﺩﻫﻴﺪ B+ﺑﻪ ﻋﻨﻮﺍﻥ ﻛﻠﻴﺪ ﺍﺻﻠﻲ ﮔﺮﻓﺘﻪ ﺷﻮﺩ ﺭﻭﻱ ﻓﻴﻠﺪ
ﻣﺮﺣﻠﻪ 20ﻭﺭﻭﺩﻱ ﺩﺍﺭﺩ.
ﺍﺯ ﺁﻧﺠﺎﻛﻪ ﺩﺳﺘﺮﺳﻲ ﺑﻪ 10000ﺗﺎﭘﻞ ﺑﺎ ﺍﺭﺗﻔﺎﻉ ﺩﺭﺧﺖ 4ﺯﻣﺎﻧﺒﺮ ﺍﺳﺖ ﻭ ﺑﻴﺸﺘﺮ ﺩﺳﺘﺮﺳﻲ ﺑﻪ
ﺩﺍﺩﻩ ﺍﺻﻠﻲ ﻣﻮﺭﺩ ﻧﻴﺎﺯ ﺍﺳﺖ.
150
100 + 5000 * 5 = 25,100 block transfers and seeks.
ﻫﺰﻳﻨﻪ ﻫﺎﻱ CPUﺑﻪ ﺗﻈﺮ ﻣﻴﺮﺳﺪ ﻛﻪ ﻛﻤﺘﺮﺍﺯ ﭘﻴﻮﻧﺪ ﺑﻠﻮﻙ ﺣﻠﻘﻪ ﻫﺎﻱ ﺗﻮ ﺩﺭ ﺗﻮﺳﺖ .
.1ﮔﺎﻡ ﭘﻴﻮﻧﺪ ﺷﺒﻴﻪ ﺑﻪ ﺍﺩﻏﺎﻡ ﺩﺭ ﺍﻟﮕﻮﺭﻳﺘﻢ ﻣﺮﺗﺐ ﺳﺎﺯﻱ ﺍﺩﻏﺎﻣﻲ ﺍﺳﺖ .
.2ﺍﺧﺘﻼﻑ ﺍﺻﻠﻲ ﺩﺭ ﻫﻨﺪﻝ ﻛﺮﺩﻥ ﻣﻘﺎﺩﻳﺮ ﺷﺒﻴﻪ ﺑﻪ ﻫﻢ ﺩﺭ ﻓﺎﻳﻞ ﭘﻴﻮﺳﺘﮕﻲ ﺍﺳﺖ ،ﻫﺮﺟﻔﺖ
ﺩﺭ ﻓﺎﻳﻞ ﭘﻴﻮﺳﺘﮕﻲ ﺑﺎﻳﺪ ﺩﺍﺭﺍﻱ ﻣﻘﺎﺩﻳﺮ ﻳﻜﺴﺎﻥ ﺑﺎﺵﻧﺪ .
ﺍﻳﻦ ﺭﻭﺵ ﻣﻲ ﺗﻮﺍﻧﺪ ﺍﺳﺘﻔﺎﺩﻩ ﺷﻮﺩ ﻓﻘﻂ ﺑﺮﺍﻱ ﭘﻴﻮﻧﺪﻫﺎﻱ ﻃﺒﻴﻌﻲ ﻭ ﭘﻴﻮﻧﺪﻫﺎﻱ ﻣﻌﺎﺩﻝ ﺑﺎﺷﻨﺪ .
ﻫﺮ ﺑﻠﻮﻙ ﻧﻴﺎﺯ ﺑﻪ ﺗﻨﻬﺎ ﻳﻚ ﺑﺎﺭ ﺧﻮﺍﻧﺪﻩ ﺷﺪﻥ ﺩﺍﺭﺩ )ﻓﺮﺽ ﺗﻤﺎﻡ ﺗﺎﭘﻞ ﻫﺎﺑﺮﺍﻳﮕﺮﻓﺘﻦ ﻫﺮ
ﻣﻘﺪﺍﺭﻣﺸﺨﺺ ﺍﺯ ﻓﻴﻠﺪ ﭘﻴﻮﺳﺘﮕﻲ ﺩﺭﺣﺎﻓﻈﻪ ﻗﺮﺍﺭ ﻣﻲ ﮔﻴﺮﺩ (.
151
:hybrid merge-join ﺍﮔﺮﺭﺍﺑﻄﻪ ﺍﻱ ﻣﺮﺗﺐ ﺷﺪﻩ ﻭ ﺍﺯ ﺳﻮﻱ ﺩﻳﮕﺮ secondary B+-
tree indexﺭﻭﻱ ﻓﺎﻳﻞ ﭘﻴﻮﺳﺘﮕﻲ ﺍﺳﺖ.
ﻣﺮﺗﺐ ﺳﺎﺯﻱ ﻧﺘﻴﺠﻪ ﺑﺮﺭﻭﻱ ﺍﺩﺭﺳﻲ ﺍﺯ ﺗﺎﭘﻞ ﺭﺍﺑﻄﻪ ﻣﺮﺗﺐ ﻧﺸﺪﻩ .
ﺍﺳﻜﻦ ﺍﺭﺗﺒﺎﻁ ﻫﺎﻱ ﻧﺎﻣﺮﺗﺐ ﺑﺮﺍﻱ ﻧﻈﻢ ﺁﺩﺭﺱ ﻓﻴﺰﻳﻜﻲ ﻭ ﺍﺩﻏﺎﻡ ﺑﺎ ﻧﺘﻴﺠﻪ ﻗﺒﻠﻲ ،ﺑﺮﺍﻱ
ﺟﺎﻳﮕﺰﻳﻨﻲ ﺁﺩﺭﺱ ﺗﻮﺳﻂ ﺗﺎﭘﻞ ﻭﺍﻗﻌﻲ.
:Hash - Join
Hash-Join :ﺍﻟﮕﻮﺭﻳﺘﻢ
152
.1ﭘﺎﺭﺗﻴﺸﻦ ﺑﻨﺪﻱ ﺭﺍﺑﻄﻪ sﺍﺯ ﺗﺎﺑﻊ ﻫﺶ hﺍﺳﺘﻔﺎﺩﻩ ﻣﻲ ﻛﻨﺪ .ﺩﺭ ﻫﻨﮕﺎﻡ ﭘﺎﺭﺗﻴﺸﻦ ﺑﻨﺪﻱ ﻳﻚ
ﺭﺍﺑﻄﻪ ،ﻳﻚ ﺑﻠﻮﻙ ﺍﺯ ﺣﺎﻓﻈﻪ ﺑﻌﻨﻮﺍﻥ ﺑﺎﻓﺮ ﺧﺮﻭﺟﻲ ﺑﺮﺍﻱ ﻫﺮ ﭘﺎﺭﺗﻴﺸﻦ ﻣﺤﻔﻮﻅ ﻣﻲ ﺑﺎﺷﺪ .
.3ﺑﺮﺍﻱ ﻫﺮ :i
hashﺑﺮ ﺭﻭﻱ ﺣﺎﻓﻈﻪ ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ • ﻓﺮﺍﺧﻮﺍﻧﻲ sﺑﻪ ﺣﺎﻓﻈﻪ ﻭ ﺍﻳﺠﺎﺩ ﺷﺎﺧﺺ
ﻭﻳﮋﮔﻲ)ﻓﻴﻠﺪ( ﭘﻴﻮﺳﺘﮕﻲ.
• ﻓﺮﺍﺧﻮﺍﻧﻲ tubleﻫﺎ ﺩﺭ riﺍﺯ ﺩﻳﺴﻚ ﻳﻜﻲ ﻳﻜﻲ ﺍﻧﺠﺎﻡ ﻣﻲ ﺷﻮﺩ .ﺑﺮﺍﻱ ﻫﺮ tuple tr
ﻣﺤﻠﻲ ﻣﻄﺎﺑﻖ ﺑﺎ tuple tsﺩﺭ siﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺷﺎﺧﺺ hashﺣﺎﻓﻈﻪ ﻗﺮﺍﺭ ﻣﻲ ﮔﻴﺮﺩ .
ﺧﺮﻭﺟﻲ ﺗﺮﻛﻴﺒﻲ ﺍﺯ ﻭﻳﮋﮔﻲ ﻫﺎﻱ )ﻓﻴﻠﺪﻫﺎﻱ( ﺁﻧﻬﺎﺳﺖ.
ﻣﻘﺪﺍﺭ nﻭ ﺗﺎﺑﻊ ﻫﺶ hﻃﻮﺭﻱ ﺍﻧﺘﺨﺎﺏ ﻣﻲ ﺷﻮﻧﺪ ﻛﻪ siﺑﺎﻳﺪ ﺩﺭ ﺣﺎﻓﻈﻪ ﻣﺘﻨﺎﺳﺐ ﻗﺮﺍﺭ ﺑﮕﻴﺮﺩ.
• ﻣﻌﻤﻮﻻ nﺍﻧﺘﺨﺎﺏ ﻣﻲ ﺷﻮﺩ ﺍﺯ bs/M * fﺟﺎﻫﺎﻳﻲ ﻛﻪ fﺩﺭ ﻓﺮﻣﻮﻝ ﻗﺮﺍﺭ ﺩﺍﺭﺩ ﻳﻚ
” “fudge factorﺍﺳﺖ ﻛﻪ ﻋﺪﺩ ﺭﻧﺪﻱ ﺣﺪﻭﺩ 1.2ﻣﻲ ﺑﺎﺷﺪ.
ﭘﺎﺭﺗﻴﺸﻦ ﺑﻨﺪﻱ Mﺍﺯ ﺣﺎﻓﻈﻪ ﺑﺎﺷﺪ ،ﻧﻴﺎﺯ ﺑﻪ ﺍﮔﺮ ﺗﻌﺪﺍﺩ ﭘﺎﺭﺗﻴﺸﻦ nﺑﻴﺸﺘﺮ ﺍﺯ ﺗﻌﺪﺍﺩ ﺻﻔﺤﺎﺕ
ﺑﺎﺯﮔﺸﺘﻲ ﺍﺳﺖ.
:Handling of Overflows
ﺍﮔﺮﺑﺮﺧﻲ ﭘﺎﺭﺗﻴﺸﻦ ﻫﺎ ﺗﺎﭘﻞ ﻫﺎﻱ ﺑﻴﺸﺘﺮﻱ ﻧﺴﺒﺖ ﺑﻪ ﺑﺮﺧﻲ ﺩﻳﮕﺮ ﺩﺍﺷﺘﻪ ﺑﺎﺷﻨﺪ ﭘﺎﺭﺗﻴﺸﻦ
ﻧﺎﻣﺘﻮﺍﺯﻥ ﻣﻲ ﺷﻮﺩ.
ﺗﻌﺪﺍﺩﻱ ﺍﺯ ﺗﺎﭘﻞ ﻫﺎﻱ sﺩﺭ ﻓﻴﻠﺪ ﭘﻴﻮﺳﺘﮕﻲ ﺩﺍﺭﺍﻱ ﺍﺭﺯﺵ ﻳﻜﺴﺎﻥ ﻫﺴﺘﻨﺪ .
ﺗﺎﺑﻊ ﻫﺶ ﺑﺪ.
154
ﻫﺰﻳﻨﻪ ﻫﺎﻱ : Hash-Join
ﺍﮔﺮ ﭘﺎﺭﺗﻴﺸﻦ ﺑﻨﺪﻱ ﺑﺎﺯﮔﺸﺘﻲ ﻣﻮﺭﺩ ﻧﻴﺎﺯ ﻧﺒﺎﺷﺪ ﻫﺰﻳﻨﻪ hash joinﺧﻮﺍﻫﺪ ﺑﻮﺩ.
sﺑﺮﺍﻱ ﺣﺪﺍﻗﻞ Mﺑﻼﻙ ﺍﺯﻫﺮ ﭘﺎﺭﺗﻴﺸﻦ ﺗﻌﺪﺍﺩﭘﺎﺱ ﻫﺎﻱ ﻣﻮﺭﺩ ﻧﻴﺎﺯ ﺑﺮﺍﻱ ﭘﺎﺭﺗﻴﺸﻦ ﺳﺎﺧﺖ ﺍﺭﺗﺒﺎﻁ
ﺧﻮﺍﻫﺪ ﺑﻮﺩ:
logM/bb–1(bs/M)
ﺍﻧﺘﺨﺎﺏ ﺭﺍﺑﻄﻪ ﻛﻮﭼﻜﺘﺮ ﺑﻪ ﻋﻨﻮﺍﻥ ﺭﺍﺑﻄﻪ ﺳﺎﺧﺖ ﻭ ﺳﺎﺯ ﺑﻬﺘﺮﻳﻦ ﺍﻧﺘﺨﺎﺏ ﺍﺳﺖ.
ﺍﮔﺮﺗﻤﺎﻡ ﻭﺭﻭﺩﻱ ﻫﺎﻱ ﺳﺎﺧﺖ ﻭﺳﺎﺯ ﺑﺘﻮﺍﻧﺪ ﺩﺭ ﺣﺎﻓﻈﻪ ﺍﺻﻠﻲ ﻧﮕﻬﺪﺍﺭﻱ ﺷﻮﺩ ﻧﻴﺎﺯﻱ ﺑﻪ ﻫﻴﭻ
ﭘﺎﺭﺗﻴﺸﻦ ﺑﻨﺪﻱ ﻧﻴﺴﺖ.
155
ﺳﺎﺯﻧﺪﻩ ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ،build inputﭘﺎﺭﺗﻴﺸﻦ ﻫﺎﻱ ﺭﺍ ﺑﻪ 5ﻗﺴﻤﺖ ﺑﺎ ﺳﺎﻳﺰ 20ﺑﻼﻛﻲ
ﺗﻘﺴﻴﻢ ﻣﻴﻜﻨﺪ ،ﻛﻪ ﭘﺎﺭﺗﻴﺸﻦ ﻫﺎ ﻣﻲ ﺗﻮﺍﻧﺪ ﺩﺭ ﻳﻚ ﮔﺬﺭﮔﺎﻩ ﻳﺎ ﭘﺎﺱ ﺍﺟﺮﺍ ﺷﻮﻧﺪ.
seeks 3(100 + 400) = 1500 block transfers +2( 100/3 + 400/3) = 336
Hybrid Hash–Join:
ﺑﻬﺘﺮﻳﻦ ﺍﺳﺘﻔﺎﺩﻩ ﺯﻣﺎﻧﻲ ﺍﺳﺖ ﻛﻪ ﺣﺎﻓﻈﻪ ﺑﻪ ﺍﻧﺪﺍﺯﻩ ﻛﺎﻓﻲ ﺑﺰﺭگ ﺍﺳﺖ ﻭ ﺳﺎﺧﺖ ﻭ ﺳﺎﺯ ﻭﺭﻭﺩﻱ ﻫﺎ
ﺑﺰﺭﮔﺘﺮ ﺍﺯ ﺣﺎﻓﻈﻪ ﺍﺳﺖ.
ﺑﻌﻨﻮﺍﻥ ﻣﺜﺎﻝ ،ﺣﺎﻓﻈﻪ ﺍﻱ ﺑﺎ 25ﺑﻼﻙ ،ﻛﻪ ﺳﺎﺯﻧﺪﻩ ﻣﻴﺘﻮﺍﻧﺪ ﺁﻧﺮﺍ ﺑﻪ 5ﭘﺎﺭﺗﻴﺸﻦ 20ﺑﻼﻛﻲ
ﺗﻘﺴﻴﻢ ﺑﻨﺪﻱ ﻛﻨﺪ.
4ﭘﺎﺭﺗﻴﺸﻦ ﺩﻳﮕﺮ ﺍﺳﺘﻔﺎﺩﻩ ﻣﻲ ﻳﻚ ﺑﻠﻮﻙ ﺑﺮﺍﻱ ﻭﺭﻭﺩﻱ ﻭﻫﺮﺑﻠﻮﻙ ﺑﺮﺍﻱ ﺑﺎﻓﺮ
ﺷﻮﺩ .
ﻧﻜﺘﻪ ﺁﻣﻮﺯﺵ :ﺍﻳﻨﻜﻪ ﭘﺎﺭﺗﻴﺸﻦ ﻫﺎ ﺑﻪ ﺻﻮﺭﺕ ﻳﻜﺴﺎﻥ ﺑﻪ 5ﭘﺎﺭﺗﻴﺸﻦ ﺑﺎ ﺳﺎﻳﺰ 80ﺗﻘﺴﻴﻢ ﺷﺪﻩ
ﺍﻧﺪ.
156
♦ ﺑﺮﺍﻱ ﺍﻭﻟﻴﻦ ﺑﺎﺭ ﺍﺯ ﺭﻭﺵ ﺟﺴﺘﺠﻮ ﺑﻪ ﺟﺎﻱ ﻧﻮﺷﺘﻦ ﺍﺳﺘﻔﺎﺩﻩ ﻣﻲ ﺷﻮﺩ.
Hybrid hash-join ﺑﻴﺸﺘﺮ ﻣﻮﺭﺩ ﺍﺳﺘﻔﺎﺩﻩ ﻗﺮﺍﺭ ﻣﻲ ﮔﻴﺮﺩ ﺍﮔﺮM >> :
ﻋﻤﻠﻴﺎﺕ ﺩﻳﮕﺮ:
ﺩﺭ ﻣﺮﺗﺐ ﺳﺎﺯﻱ ﺩﻭﻧﺴﺨﻪ ﺍﻱ ،ﻫﺮ ﻧﺴﺨﻪ ﺍﺯ ﻳﻚ ﻣﺠﻤﻮﻋﻪ ﻗﺎﺑﻞ ﺣﺬﻑ ﻣﻲ ﺑﺎﺷﺪ .
ﺑﻬﻴﻨﻪ ﺳﺎﺯﻱ :ﻧﺴﺨﻪ ﻫﺎ ﺣﻴﻦ ﺍﺟﺮﺍ ﻗﺎﺑﻞ ﺣﺬﻑ ﺷﺪﻥ ﻫﺴﺘﻨﺪ ،ﻛﻪ ﺑﻪ ﺧﻮﺑﻲ ﻣﺮﺍﺣﻞ
ﻣﺮﺗﺐ ﺳﺎﺯﻱ ﺩﺭ ﻣﺮﺗﺐ ﺳﺎﺯﻱ ﺍﺩﻏﺎﻣﻲ ﺍﺳﺖ .
) Aggregation. ﻣﺠﺘﻤﻊ ﺑﻮﺩﻥ( :ﻣﻲ ﺗﻮﺍﻧﺪ ﺗﻮﺳﻂ ﻳﻚ ﺭﻭﺵ ﻣﺸﺎﺑﻪ ﺭﻭﺵ ﭘﻴﺎﺩﻩ ﺳﺎﺯﻱ
ﺷﻮﺩ.
ﻣﺮﺗﺐ ﺳﺎﺯﻱ ﻭ Hashingﻣﻲ ﺗﻮﺍﻧﻨﺪ ﻣﻮﺭﺩ ﺍﺳﺘﻔﺎﺩﻩ ﺗﺎﭘﻞ ﻫﺎﻳﻲ ﻛﻪ ﺩﺭﻭﻥ ﻳﻚ ﮔﺮﻭﻩ
ﻣﺸﺎﺑﻪ ﻫﺴﺘﻨﺪ ،ﺑﺎﺷﻨﺪ ،ﻭ ﻣﺠﺘﻤﻊ ﺑﻮﺩﻥ ﺗﻮﺍﺑﻊ ﻣﻲ ﺗﻮﺍﻧﺪ ﺑﺮﺍﻱ ﻫﺮ ﮔﺮﻭﻩ ﺩﺭ ﻧﻈﺮ ﮔﺮﻓﺘﻪ
ﺷﻮﺩ.
ﺑﻬﻴﻨﻪ ﺳﺎﺯﻱ :ﺗﺮﻛﻴﺐ ﺗﺎﭘﻞ ﻫﺎ ﺩﺭ ﻳﻚ ﮔﺮﻭﻩ ﻣﺸﺎﺑﻪ ،ﻃﻲ ﺍﺟﺮﺍﻱ ﻋﻤﻠﻴﺎﺕ ﺻﻮﺭﺕ ﻣﻲ
ﮔﻴﺮﺩ ،ﻛﻪ ﺍﻳﻦ ﺑﻮﺳﻴﻠﻪ ﻣﻴﺰﺍﻥ ﺑﺮﺁﻭﺭﺩ ﺷﺪﻩ ﺍﺯ ﻣﺠﺘﻤﻊ ﺑﻮﺩﻥ ﺁﻧﻬﺎ ﺗﻌﻌﻴﻦ ﻣﻲ ﺷﻮﺩ.
157
ﺑﺮﺍﻱ ﺷﻤﺎﺭﺵ ،ﺣﺪﺍﻗﻞ ،ﺣﺪﺍﻛﺜﺮ ،ﻣﺠﻤﻮﻉ :ﻣﻴﺰﺍﻥ ﻣﺠﺘﻤﻊ ﺑﻮﺩﻥ ﻧﮕﺪﺍﺭﻱ ﺷﺪﻩ
ﺑﺮﻭﻱ ﺗﺎﭘﻞ ﻫﺎﺳﺖ.
ﺑﺮﺍﻱ ﻣﻴﺎﻧﮕﻴﻦ :ﻣﻘﺎﺩﻳﺮ ﺷﻤﺎﺭﺵ ﺷﺪﻩ ﺟﻤﻊ ﺷﺪﻩ ﻭ ﺑﺮ ﺗﻌﺪﺍﺩ ﺷﻤﺎﺭﺵ ﻫﺎ ﺗﻘﺴﻴﻢ
ﻣﻲ ﺷﻮﺩ.
ﺍﺭﺯﻳﺎﺑﻲ ﺁﺯﻣﺎﻳﺸﺎﺕ:
ﺍﻟﮕﻮﺭﻳﺘﻢ ﻫﺎﻱ ﻛﻪ ﺗﺎ ﺍﻛﻨﻮﻥ ﺩﻳﺪﻳﻢ ،ﺑﺮﺍﻱ ﺍﻧﺠﺎﻡ ﻋﻤﻠﻴﺎﺕ ﻫﺎﻱ ﻓﺮﺩﻱ ﺍﺳﺖ.
Pipeliningﻳﺎ ﻟﻮﻟﻪ ﮔﺬﺍﺭﻱ :ﺭﻭﻱ ﺗﺎﭘﻞ ﻫﺎﻱ ﻋﻤﻠﻴﺎﺕ ﭘﺪﺭ ﺣﺘﻲ ﺑﻌﻨﻮﺍﻥ ﻳﻚ
ﻋﻤﻠﻴﺎﺕ ﺩﺭ ﺣﺎﻝ ﺍﺟﺮﺍ ﮔﺬﺭ ﺩﻫﻴﺪ .
ﻣﺎ ﺩﺭﺑﺎﺭﻩ ﺁﻟﺘﺮﻧﺎﺗﻴﻮ ﻫﺎﻱ ﺑﺎﻻ ﺑﺎ ﺟﺰﻳﻴﺎﺕ ﺑﻴﺸﺘﺮ ﺩﺭ ﺣﺎﻝ ﻣﻄﺎﻟﻌﻪ ﻫﺴﺘﻴﻢ .
:Materialization
ﺍﺭﺯﻳﺎﺑﻲ ﺫﺧﻴﺮﻩ ﺳﺎﺯﻱ :ﺍﺭﺯﻳﺎﺑﻲ ﻳﻚ ﻋﻤﻠﻴﺎﺕ ﺩﺭ ﻳﻚ ﺯﻣﺎﻥ ،ﺩﺭ ﭘﺎﻳﻴﻦ ﺗﺮﻳﻦ ﺳﻄﺢ ﺷﺮﻭﻉ ﻣﻲ ﺷﻮﺩ .
ﻧﺘﺎﻳﺞ ﻣﻴﺎﻧﻲ ﻣﺤﻘﻖ ﺷﺪﻩ ﺭﺍ ﺑﺮﺍﻱ ﺭﻭﺍﺑﻂ ﻣﻮﻗﺖ ﺗﺎ ﺍﺭﺯﻳﺎﺑﻲ ﻋﻤﻠﻴﺎﺕ ﺳﻄﺢ ﺑﻌﺪﻱ ﺍﺳﺘﻔﺎﺩﻩ ﻛﻨﻴﺪ .
158
ﺳﭙﺲ ﺑﺎ ﺩﺳﺘﻮﺭﺍﺕ ﺭﺍﻫﻨﻤﺎ ﻋﻤﻠﻴﺎﺕ ﺍﻟﺤﺎﻕ ﺭﺍ ﻣﺤﺎﺳﺒﻪ ﻭ ﺫﺧﻴﺮﻩ ﻛﻨﻴﺪ ﻭ ﺩﺭ ﻧﻬﺎﻳﺖ ﻋﻤﻠﻴﺎﺕ
ﭘﺮﺗﻮ)ﭘﺮﻭﺟﻜﺸﻦ( ﺭﺍ ﺭﻭﻱ ﻛﻠﻤﻪ nameﻣﺤﺎﺳﺒﻪ ﻛﻨﻴﺪ.
nﻫﺰﻳﻨﻪ ﻧﻮﺷﺘﻦ ﻧﺘﺎﻳﺞ ﺭﻭﻱ ﺩﻳﺴﻚ ﻭ ﺧﻮﺍﻧﺪﻥ ﻣﺠﺪﺩ ﻣﻲ ﺗﻮﺍﻧﺪ ﺑﺴﻴﺎﺭ ﺑﺎﻻ ﺑﺎﺷﺪ
ﻓﺮﻣﻮﻝ ﻫﺰﻳﻨﻪ ﻫﺎﻱ ﻣﺎ ﺑﺮﺍﻱ ﺍﻧﺠﺎﻡ ﻋﻢﻟﻴﺎﺕ ﺑﺎ ﭼﺸﻢ ﭘﻮﺷﻲ ﺍﺯ ﻫﺰﻳﻨﻪ ﻧﻮﺷﺘﻦ ﻧﺘﺎﻳﺞ ﺭﻭﻱ ﺩﻳﺴﻚ :
nﺩﻭ ﺑﺎﻓﺮ :ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺩﻭ ﺑﺎﻓﺮ ﺧﺮﻭﺟﻲ ﺑﺮﺍﻱ ﻫﺮ ﻳﻚ ﺍﺯ ﻋﻤﻠﻴﺎﺕ ،ﻭﻗﺘﻲ ﻛﻪ ﻳﻜﻲ ﭘﺮ ﺍﺳﺖ ﻭ ﻧﻮﺷﺘﻦ
ﺁﻥ ﺑﺮ ﺭﻭﻱ ﺩﻳﺴﻚ ﺩﺭ ﺣﺎﻟﻲ ﻛﻪ ﺑﺎﻓﺮ ﺩﻳﮕﺮ ﺍ ﺩﺭ ﺣﺎﻝ ﭘﺮ ﺷﺪﻥ ﺍﺳﺖ
lﺍﺟﺎﺯﻩ ﻣﻲ ﺩﻫﺪ ﺗﺎ ﻫﻤﭙﻮﺷﺎﻧﻲ ﺑﻴﻦ ﻧﻮﺷﺘﻦ ﻭ ﻣﺤﺎﺳﺒﻪ ﺍﻳﺠﺎﺩ ﺷﻮﺩ ﻭ ﺯﻣﺎﻥ ﺍﺟﺮﺍ ﺭﺍ
ﻛﺎﻫﺶ ﻣﻲ ﺩﻫﺪ.
:Pipelining
:Pipelined evaluationﺍﺭﺯﻳﺎﺑﻲ ﭼﻨﺪﻳﻦ ﻋﻤﻠﻴﺎﺕ ﺑﻪ ﻃﻮﺭ ﻫﻤﺰﻣﺎﻥ ،ﻭ ﺍﻧﺘﻘﺎﻝ ﻧﺘﺎﻳﺞ ﺣﺎﺻﻞ ﺍﺯ
ﻳﻚ ﻋﻤﻠﻴﺎﺕ ﺑﻪ ﭘﺎﺱ ﺑﻌﺪﻱ.
159
ﺑﺠﺎﻱ ﭘﻴﻮﻧﺪ ﻣﺴﺘﻘﻴﻢ ﺗﺎﭘﻞ ﻫﺎ ﻛﻪ ﺑﻄﻮﺭ ﻣﺸﺎﺑﻪ ﻧﺘﻴﺠﻪ ﭘﺎﺱ ﺗﺎﭘﻞ ﻫﺎ ﺭﻭﻱ ﻃﺮﺡ ﺫﺧﻴﺮﻩ ﻧﻤﻲ
ﻛﻨﺪ.
ﺗﺤﻘﻴﻘﺎﺕ ﺍﺭﺯﺍﻥ ﺗﺮ ﻧﺸﺎﻥ ﻣﻲ ﺩﻫﺪ ﻛﻪ :ﻧﻴﺎﺯﻱ ﺑﻪ ﺫﺧﻴﺮﻩ ﺍﺭﺗﺒﺎﻁ ﻣﻮﻗﺖ ﺭﻭﻱ ﺩﻳﺴﻚ ﻧﻴﺴﺖ
ﺑﺮﺍﻱ pipeliningﻣﻮﺛﺮ ﺍﺳﺖ ﺍﺳﻔﺎﺩﻩ ﺍﺯ ﺍﻟﮕﻮﺭﻳﺘﻢ ﻫﺎﻱ ﺍﺭﺯﻳﺎﺑﻲ ﻛﻪ ﻫﺮ ﺗﺎﭘﻞ ﺧﺮﻭﺟﻲ ﺑﻪ
ﻋﻨﻮﺍﻥ ﺗﺎﭘﻞ ﻭﺭﻭﺩﻱ ﻋﻤﻠﻴﺎﺕ ﺩﺭﻳﺎﻓﺖ ﻣﻲ ﺷﻮﺩ.
ﺳﻴﺴﺘﻢ ﺩﺭﺧﻮﺍﺳﺖ ﺗﺎﭘﻞ ﺑﻌﺪﻱ ﺭﺍ ﺍﺯﻋﻤﻠﻴﺎﺕ ﺳﻄﺢ ﺑﺎﻻﺗﺮ ﺗﻜﺮﺍﺭ ﻣﻲ ﻛﻨﺪ .
)ﻋﻤﻠﻴﺎﺕ ﻓﺮﺯﻧﺪ ( ﺑﺮﺍﻱ ﻫﺮﻳﻚ ﺍﺯ ﺩﺭﺧﻮﺍﺳﺖ ﻫﺎﻱ ﺗﺎﭘﻞ ﺑﻌﺪﻱ ﺍﺯ ﺯﻳﺮ ﻋﻤﻠﻴﺎﺕ ﻫﺎ
ﺧﺮﻭﺟﻲ ﺗﺎﭘﻞ ﺑﻌﺪﺏ ﻣﻮﺭﺩ ﻧﻴﺎﺯ ﺍﺳﺖ.
ﺍﭘﺮﺍﺗﻮﺭ ﻫﺎ ﺑﺎ ﺍﺷﺘﻴﺎﻕ ﺗﺎﭘﻞ ﻫﺎ ﺭﺍ ﺗﻮﻟﻴﺪ ﻣﻲ ﻛﻨﻨﺪ ﻭ ﺍﻧﻬﺎ ﺭﺍ ﺑﻪ ﻭﺍﻟﺪﻫﺎﻱ ﺧﻮﺩ ﺍﻧﺘﻘﺎﻝ ﻣﻲ
ﺩﻫﻨﺪ .
nﺩﺭﺍﻳﻦ ﺑﻴﻦ ﺍﭘﺮﺍﺗﻮﺭﻫﺎ ﺑﺎﻓﺮﻫﺎ ﺭﺍ ﻛﻪ ﺑﻌﻨﻮﺍﻥ ﻓﺮﺯﻧﺪ ﺩﺭ ﻧﻈﺮ ﮔﺮﻓﺘﻪ ﺍﻧﺪ ﻧﮕﻬﺪﺍﺭﻱ
ﻣﻲ ﻛﻨﻨﺪ .
160
nﺍﮔﺮﺑﺎﻓﺮﭘﺮﺑﺎﺷﺪ ،ﻓﺮﺯﻧﺪ ﻣﻨﺘﻈﺮﺧﺎﻟﻲ ﺷﺪﻥ ﺑﺎﻓﺮ ﻣﻲ ﺷﻮﺩ ﻭﭘﺲ ﺍﺯ ﺁﻥ ﺗﺎﭘﻞ
ﺑﻴﺸﺘﺮﻱ ﺗﻮﻟﻴﺪ ﻣﻲ ﻛﻨﺪ.
ﻋﻤﻠﻴﺎﺕ ﺯﻣﺎﻧﺒﻨﺪﻱ ﺳﻴﺴﺘﻢ ﻓﻀﺎ ﺩﺭ ﺑﺎﻓﺮ ﺧﺮﻭﺟﻲ ﻭ ﭘﺮﺩﺍﺯﺵ ﺗﺎﭘﻞ ﻫﺎﻱ ﺑﻴﺸﺘﺮ ﻭﺭﻭﺩﻱ
ﺭﺍ ﻣﻲ ﺗﻮﺍﻧﺪ ﻣﺪﻳﺮﻳﺖ ﻛﻨﺪ
161
ﻓﺼﻞ :8
ﺑﻬﻴﻨﻪ ﺳﺎﺯﻱ ﭘﺮﺱ ﻭ ﺟﻮ
162
ﻣﻘﺪﻣﻪ •
ﺗﻐﻴﻴﺮ ﺷﻜﻞ ﺑﻴﺎﻥ ﺭﺍﺑﻄﻪ ﺍﻱ •
ﻛﺎﺗﺎﻟﻮگ ﺍﻃﻼﻋﺎﺕ ﺑﺮﺍﻱ ﺗﺨﻤﻴﻦ ﻫﺰﻳﻨﻪ •
ﺍﻃﻼﻋﺎﺕ ﺁﻣﺎﺭﻱ ﺑﺮﺍﻱ ﺗﺨﻤﻴﻦ ﻫﺰﻳﻨﻪ •
ﺑﻬﺎﻱ ﭘﺎﻳﻪ ﻱ ﺑﻬﻴﻨﻪ ﺳﺎﺯﻱ •
ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﻲ ﭘﻮﻳﺎ ﺑﺮﺍﻱ ﺍﻧﺘﺨﺎﺏ ﻃﺮﺡ ﻫﺎﻱ ﺍﺭﺯﻳﺎﺑﻲ •
ﭼﺸﻢ ﺍﻧﺪﺍﺯﻫﺎﻱ ﻋﻤﻠﻲ •
163
ﻣﻘﺪﻣﻪ
ﻳﻚ ﻃﺮﺡ ﺍﺭﺯﻳﺎﺑﻲ ﺑﻪ ﻃﻮﺭ ﺩﻗﻴﻖ ﺗﻌﺮﻳﻒ ﻣﻲ ﻛﻨﺪ ﻛﻪ ﺑﺮﺍﻱ ﻫﺮ ﻋﻤﻠﻜﺮﺩ ﭼﻪ ﺍﻟﮕﻮﺭﻳﺘﻤﻲ ﺍﺳﺘﻔﺎﺩﻩ ﺷﺪﻩ ﻭ
ﻫﻤﭽﻨﻴﻦ ﭼﮕﻮﻧﮕﻲ ﺍﺟﺮﺍﻱ ﻫﻤﺎﻫﻨﮓ ﻋﻤﻠﻜﺮﺩ ﻫﺎ ﺭﺍ ﺑﻴﺎﻥ ﻣﻲ ﻛﻨﺪ .
ﻫﻤﭽﻨﻴﻦ ﺑﺎﻳﺪ ﺩﺍﻧﺴﺖ ﻛﻪ ﭼﮕﻮﻧﻪ ﻃﺮﺡ ﻫﺎﻱ ﺍﺟﺮﺍﻱ ﺟﺴﺘﺠﻮ ﺭﺍ ﺑﺮ ﺭﻭﻱ ﭘﺎﻳﮕﺎﻩ ﺩﺍﺩﻩ ﻱ ﻣﻮﺭﺩ ﻧﻈﺮ ﺧﻮﺩ،
ﻣﻼﺣﻈﻪ ﻛﺮﺩ.
164
ﻫﺰﻳﻨﻪ ﻫﺎﻱ ﻣﺨﺘﻠﻒ ﺑﻴﻦ ﻃﺮﺡ ﻫﺎﻱ ﺍ ﺭﺯﻳﺎﺑﻲ ﺑﺮﺍﻱ ﻳﻚ ﺟﺴﺘﺠﻮ ) (queryﻣﻲ ﺗﻮﺍﻧﻨﺪ ﻫﻨﮕﻔﺖ ﺷﻮﻧﺪ .
ﮔﺎﻡ ﻫﺎ ﺩﺭ ﺑﻬﻴﻨﻪ ﺳﺎﺯﻱ ﺟﺴﺘﺠﻮﻱ ﻣﺒﺘﻨﻲ ﺑﺮ ﻫﺰﻳﻨﻪ
.1ﺗﻮﻟﻴﺪ ﺍﺟﺮﺍﻫﺎﻱ ﻣﺸﺎﺑﻪ ﻣﻨﻄﻘﻲ ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﻗﻮﺍﻧﻴﻦ ﺗﺸﺎﺑﻪ
.2ﻳﺎﺩﺩﺍﺷﺖ ﻛﺮﺩﻥ ﻧﺘﻴﺠﻪ ﻱ ﺍﺟﺮﺍﻫﺎ ﺑﺮﺍﻱ ﺑﺪﺳﺖ ﺁﻭﺭﺩﻥ ﻃﺮﺡ ﻫﺎﻱ ﺟﺴﺘﺠﻮﻱ ﻣﺘﻨﺎﻭﺏ
.3ﺍﻧﺘﺨﺎﺏ ﺍﺭﺯﺍﻧﺘﺮﻳﻦ ﻃﺮﺡ ﺑﺮ ﭘﺎﻳﻪ ﻱ ﻫﺰﻳﻨﻪ ﻱ ﺗﺨﻤﻴﻨﻲ
ﺗﺨﻤﻴﻦ ﻃﺮﺡ ﻣﺒﺘﻨﻲ ﺑﺮ ﻫﺰﻳﻨﻪ ﺷﺎﻣﻞ :
• ﺍﻃﻼﻋﺎﺕ ﺁﻣﺎﺭﻱ ﺩﺭﺑﺎﺭﻩ ﻱ ﺭﺍﺑﻄﻪ ﻫﺎ ﺳﺖ ،ﻣﺜﺎﻝ :ﺗﻌﺪﺍﺩ ﭼﻨﺪﺗﺎﻳﻲ ﻫﺎ ،ﺗﻌﺪﺍﺩ ﻣﻘﺎﺩﻳﺮ ﺑﺮﺗﺮ ﺑﺮﺍﻱ ﻫﺮ
ﺧﺎﺻﻴﺖ
• ﺗﺨﻤﻴﻦ ﺍﻣﺎﺭﻱ ﺑﺮﺍﻱ ﻧﺘﺎﻳﺞ ﻣﺘﻮﺳﻂ ﺑﺮﺍﻱ ﻣﺤﺎﺳﺒﻪ ﻱ ﻫﺰﻳﻨﻪ ﻱ ﺍﺟﺮﺍ ﻫﺎﻱ ﭘﻴﭽﻴﺪﻩ
• ﻣﺤﺎﺳﺒﻪ ﻱ ﻫﺰﻳﻨﻪ ﻱ ﻓﺮﻣﻮﻟﻪ ﻛﺮﺩﻥ ﺍﻟﮕﻮﺭﻳﺘﻢ ﻫﺎ ،ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺁﻣﺎﺭ
ﺩﻭ ﺍﺟﺮﺍﻱ ﺟﺒﺮ ﺭﺍﺑﻄﻪ ﺍﻱ ﺭﺍ ﻣﺸﺎﺑﻪ ﻣﻲ ﺗﻮﺍﻥ ﮔﻔﺖ ﺍﮔﺮ ﺩﻭ ﺍﺟﺮﺍ ﭼﻨﺪﺗﺎﻳﻲ ﻫﺎﻱ ﻣﺴﺎﻭﻱ ﺑﺮ ﺭﻭﻱ ﭘﺎﻳﮕﺎﻩ
ﺻﻮﺭﺕ ﻣﺠﻤﻮﻋﻪ ﻫﺎﻱ ﭼﻨﺪ ﺗﺎﻳﻲ ﺩﺍﺩﻩ ﻱ ﻗﺎﻧﻮﻧﻲ ﺗﻮﻟﻴﺪ ﻛﻨﻨﺪ .ﺩﺭ ،SQLﻭﺭﻭﺩﻱ ﻫﺎ ﻭ ﺧﺮﻭﺟﻲ ﻫﺎ ﺑﻪ
ﻫﺴﺘﻨﺪ.ﻗﻮﺍﻧﻴﻦ ﺗﺸﺎﺑﻪ ﺑﻴﺎﻥ ﻣﻲ ﻛﻨﺪ ﻛﻪ ﺍﺟﺮﺍﻫﺎﻱ ﺩﻭ ﻓﺮﻡ ﺑﺎ ﻫﻢ ﺑﺮﺍﺑﺮﻧﺪ ﻭ ﻣﻲ ﺗﻮﺍﻥ ﺍﺟﺮﺍﻱ ﻓﺮﻡ ﺍﻭﻟﻲ ﺭﺍ
ﺑﺎ ﺩﻭﻣﻲ ﺟﺎﺑﺠﺎ ﻛﺮﺩ.
ﻗﻮﺍﻧﻴﻦ ﺗﺸﺎﺑﻪ:
.1ﺍﺭﺗﺒﺎﻁ ﺑﻴﻦ ﻋﻤﻠﻜﺮﺩﻫﺎﻱ ﺍﻧﺘﺨﺎﺏ ) ( selectionﺭﺍ ﻣﻲ ﺗﻮﺍﻥ ﺍﺯ ﺑﻴﻦ ﺑﺮﺩ ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ
selectionﻫﺎﻱ ﻣﺴﺘﻘﻞ ﻣﺘﻮﺍﻟﻲ.
)) σ θ ∧θ ( E ) = σ θ (σ θ ( E
1 2 1 2
165
)) σ θ (σ θ ( E )) = σ θ (σ θ ( E
1 2 2 1
.3ﻓﻘﻂ ﺁﺧﺮﻳﻦ ﻋﻤﻠﻜﺮﺩ ﺩﺭ ﺗﻮﺍﻟﻲ ،ﻣﻮﺭﺩ ﻧﻴﺎﺯ ﺍﺳﺖ ﻭ ﺑﻘﻴﻪ ﺭﺍ ﻣﻲ ﺗﻮﺍﻥ ﺣﺬﻑ ﻛﺮﺩ .
) Π L1 (Π L2 ( (Π Ln ( E )))) = Π L1 ( E
166
.7ﻋﻤﻠﻜﺮﺩ ﺍﻧﺘﺨﺎﺏ ) ( selectionﺗﻘﺴﻴﻢ ﻣﻲ ﺷﻮﺩ ﺑﻪ ﺑﻴﺶ ﺍﺯ ﻋﻤﻠﻜﺮﺩ ﺗﺮﻛﻴﺐ ﺗﺘﺎ ،ﺩﺭ ﺯﻳﺮ ﺩﻭ
ﻣﻮﺭﺩ ﺍﺯ ﺷﺮﺍﻳﻂ ﺫﻛﺮ ﺷﺪﻩ:
(aﺯﻣﺎﻧﻲ ﻛﻪ ﺗﻤﺎﻣﻲ ﺧﺼﻮﺻﻴﺎﺕ ﺩﺭ θ0ﺁﻣﺪﻩ ،ﺗﻨﻬﺎ ﺧﺼﻮﺻﻴﺎﺕ ﻳﻜﻲ ﺍﺯ ﺍﺟﺮﺍﻫﺎ ) (E1ﻣﻲ
ﭘﻴﻮﻧﺪﺩ.
.8ﻃﺮﺡ ﺗﻘﺴﻴﻢ ﻋﻤﻠﻜﺮﺩ ﻫﺎﻱ ﻓﺮﺍﺗﺮ ﺍﺯ ﺗﺘﺎ ﺑﻪ ﺻﻮﺭﺕ ﺯﻳﺮ ﻣﺘﺼﻞ ﻣﻲ ﺷﻮﻧﺪ :
(aﺍﮔﺮ ﺗﺘﺎ ﺗﻨﻬﺎ ﺍﺯ L1 ∪ L2ﭘﺪﻳﺪ ﺁﻳﺪ:
167
• ﺑﺎﻳﺪ ﺍﺟﺎﺯﻩ ﺩﺍﺩ ﺗﺎ L4ﺧﺼﻮﺻﻴﺘﻲ ﺍﺯ E2ﺑﺎﺷﺪ ﻛﻪ ﺩﺭ ﺷﺮﺍﻳﻂ ﺗﺘﺎ ﺑﭙﻴﻮﻧﺪﺩ ﺍﻣﺎ ﺩﺭ L1 ∪ L2
ﻧﺒﺎﺷﺪ.
E1 ∪ E2 = E 2 ∪ E1
E1 ∩ E2 = E 2 ∩ E1
ﻣﺠﻤﻮﻋﻪ ﺍﻱ ﺍﺯ ﺍﺗﺼﺎﻝ ﻫﺎ ﻭ ﺗﻘﺎﻃﻊ ﻫﺎ ﺷﺮﻛﺖ ﭘﺬﻳﺮﻧﺪ . .10
)(E1 ∪ E2) ∪ E3 = E1 ∪ (E2 ∪ E3
)(E1 ∩ E2) ∩ E3 = E1 ∩ (E2 ∩ E3
ﻋﻤﻠﻜﺮﺩ selectionﻓﺮﺍﺗﺮ ﺍﺯ ∩ ∪,ﻭ -ﺗﻌﻤﻴﻢ ﭘﻴﺪﺍ ﻣﻲ ﻛﻨﺪ .11
)σθ (E1 – E2) = σθ (E1) – σθ(E2
ﻭ ﻫﻤﭽﻨﻴﻦ :
:Queryﭘﻴﺪﺍ ﻛﺮﺩﻥ ﻧﺎﻣﻬﺎﻱ ﺗﻤﺎﻣﻲ ﺁﻣﻮﺯﻧﺪﮔﺎﻥ ﺩﺭﺑﺨﺶ ﻣﻮﺳﻴﻘﻲ ،ﻫﻤﺮﺍﻩ ﺑﺎ ﻋﻨﻮﺍﻥ ﺩﺭﺳﻬﺎﻳﻲ ﻛﻪ
ﺁﻧﻬﺎ ﺁﻣﻮﺯﺵ ﻣﻲ ﺩﻫﻨﺪ.
168
”Πname, title(σdept_name= “Music
))))Πcourse_id, title (course (teaches (instructor
ﺍﺟﺮﺍﻱ selectionﺩﺭ ﺍﻭﻟﻴﻦ ﺯﻣﺎﻧﻲ ﻛﻪ ﺍﻧﺪﺍﺯﻩ ﻱ ﺭﺍﺑﻄﻪ ﻱ ﻣﺘﺼﻞ ﺷﺪﻩ ﺗﺎ ﺣﺪ ﻣﻤﻜﻦ ﻛﻮﭼﻚ ﺷﺪﻩ
ﺑﺎﺷﺪ ﺍﻣﻜﺎﻥ ﭘﺬﻳﺮ ﺍﺳﺖ.
:Queryﭘﻴﺪﺍ ﻛﺮﺩﻥ ﻧﺎﻡ ﺗﻤﺎﻡ ﺍﻣﻮﺯﻧﺪﻩ ﻫﺎ ﺩﺭ ﺑﺨﺶ ﻣﻮﺳﻴﻘﻲ ﻛﻪ ﺩﺭ ﺳﺎﻝ 2009ﺗﺪﺭﻳﺲ ﻛﺮﺩﻩ ﺍﻧﺪ .
ﻫﻤﺮﺍﻩ ﺑﺎ ﻧﺎﻡ ﺩﺭﻭﺳﻲ ﻛﻪ ﺁﻧﻬﺎ ﺩﺭﺱ ﺩﺍﺩﻩ ﺍﻧﺪ.
Πname, title(σdept_name= “Music”∧year = 2009
))))Πcourse_id, title (course (teaches (instructor
ﺟﺎﺑﺠﺎﻳﻲ ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺍﺗﺼﺎﻝ ﺷﺮﻛﺖ ﭘﺬﻳﺮﻱ )ﻗﺎﻧﻮﻥ .(6a
Πname, title(σdept_name= “Music”∧gear = 2009
)))Πcourse_id, title (course )teaches ((instructor
ﻓﺮﻡ ﺩﻭﻣﻲ ﺩﺭ ﻓﺮﺻﺘﻲ ﺑﺎ ﺑﻜﺎﺭﮔﻴﺮﻱ ﻗﺎﻧﻮﻥ "ﺍﺟﺮﺍﻱ ﺍﻧﺘﺨﺎﺑﻬﺎﻱ ﺯﻭﺩﺗﺮ" ،پﺩﻳﺪ ﻣﻲ ﺁﻳﺪ .
)σ year = 2009 (teaches) σdept_name = “Music” (instructor
ﺗﻐﻴﻴﺮ ﺷﻜﻞ ﭼﻨﺪﮔﺎﻧﻪ
169
Pushing Project:ﻣﺜﺎﻟﻲ ﺑﺮﺍﻱ ﺗﻐﻴﻴﺮ ﺷﻜﻞ
:ﺷﺎﻣﻞ
teaches) Πname, title(σdept_name= “Music” (instructor)
Πcourse_id, title (course))))
ﺍﺳﺘﻔﺎﺩﻩ ﻣﻲ ﻛﻨﻨﺪﻭ ﺣﺬﻑ ﻛﺮﺩﻥ8b ﻭ8a ﺍﺯ ﻗﻮﺍﻧﻴﻦ ﻣﺸﺎﺑﻪ ﺳﺎﺯﻱpush ﻃﺮﺡ ﻫﺎﻱ
:ﺧﺼﻮﺻﻴﺎﺕ ﻏﻴﺮ ﺿﺮﻭﺭﻱ ﺍﺯ ﻧﺘﺎﻳﺞ ﻣﺘﻮﺳﻂ ﺩﺭ ﺯﻳﺮ ﻧﺸﺎﻥ ﺩﺍﺩﻩ ﺷﺪﻩ
• ﺍﻣﺎ ﺑﺨﺶ ﻛﻮﭼﻜﻲ ﺍﺯ ﺁﻣﻮﺯﺵ ﺩﺍﻧﺸﮕﺎﻩ ﻣﺎﻧﻨﺪ ﺑﺨﺶ ﻣﻮﺳﻴﻘﻲ ﺍﺳﺖ .
oﺑﻬﺘﺮ ﺍﺳﺖ ﺍﻳﻨﮕﻮﻧﻪ ﻣﺤﺎﺳﺒﻪ ﺭﺍ ﺍﻧﺠﺎﻡ ﺩﺍﺩ:
171
• ﺑﻬﻴﻨﻪ ﺳﺎﺯﻱ ﺟﺴﺘﺠﻮﻫﺎ ﺍﺯ ﻗﻮﺍﻧﻴﻦ ﺗﺸﺎﺑﻪ ﺑﺮﺍﻱ ﺑﻴﺎﻧﻬﺎﻱ ﺗﻮﻟﻴﺪ ﺭﺩﻩ ﺑﻨﺪﻱ ﺷﺪﻩ ﺍﺳﺘﻔﺎﺩﻩ ﻣﻲ
ﻛﻨﺪ.
• ﺗﻮﻟﻴﺪ ﺗﻤﺎﻣﻲ ﺑﻴﺎﻥ ﻫﺎﻱ ﻣﺘﺸﺎﺑﻪ ﺑﺎ ﻣﻮﺍﺭﺩ ﺯﻳﺮ ﺍﻧﺠﺎﻡ ﻣﻲ ﮔﻴﺮﺩ :
ﺗﻜﺮﺍﺭ o
ﺑﻜﺎﺭﮔﻴﺮﻱ ﺗﻤﺎﻣﻲ ﻗﻮﺍﻧﻴﻦ ﺗﺸﺎﺑﻪ ﺑﻜﺎﺭﮔﺮﻓﺘﻪ ﺷﺪﻩ ﺭﻭﻱ ﻫﺮﻳﻚ ﺍﺯ ﺯﻳﺮ ﺑﻴﺎﻧﻬﺎ.
ﺍﺿﺎﻓﻪ ﻛﺮﺩﻥ ﺑﻴﺎﻧﻬﺎﻱ ﺗﻮﻟﻴﺪ ﺷﺪﻩ ﻱ ﺟﺪﻳﺪ ﺑﻪ ﻣﺠﻤﻮﻋﻪ ﻱ ﺑﻴﺎﻧﻬﺎﻱ ﻣﺘﺸﺎﺑﻪ .
ﺗﺎ ﺯﻣﺎﻧﻴﻜﻪ ﻫﻴﭻ ﺑﻴﺎﻥ ﻣﺘﺸﺎﺑﻪ ﺟﺪﻳﺪ ﻱ ﻧﻤﺎﻧﺪ .
ﺩﻭﻣﻌﺒﺮ o
ﻃﺮﺡ ﺗﻮﻟﻴﺪ ﺑﻬﻴﻨﻪ ﺷﺪﻩ ﺑﺮ ﭘﺎﻳﻪ ﻱ ﻗﻮﺍﻧﻴﻦ ﺗﻐﻴﻴﺮ ﺷﻜﻞ ﺍﺳﺖ .
selectionﻫﺎ projection ،ﻫﺎ ﻭ joinﻫﺎ ﻣﻮﺍﺭﺩ ﺧﺎﺹ ﺑﺮﺍﻱ ﺟﺴﺘﺠﻮ ﻓﻘﻂ ﺑﺎ
ﺍﻧﺠﺎﻡ ﻣﻲ ﮔﻴﺮﺩ.
ﭘﻴﺎﺩﻩ ﺳﺎﺯﻱ ﺗﻐﻴﻴﺮ ﺷﻜﻞ ﺑﺮﭘﺎﻳﻪ ﻱ ﺑﻬﻴﻨﻪ ﺳﺎﺯﻱ
• ﻓﺎﺻﻠﻪ ﻱ ﻧﻴﺎﺯﻣﻨﺪﻱ ﻫﺎ ﺑﺎ ﺍﺷﺘﺮﺍﻙ ﮔﺬﺍﺭﻱ ﺯﻳﺮ ﺑﻴﺎﻧﻬﺎﻱ ﺭﺍﻳﺞ ﻛﺎﻫﺶ ﭘﻴﺪﺍ ﻣﻲ ﻛﻨﺪ :
oﺯﻣﺎﻧﻴﻜﻪ E1ﺍﺯ E2ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﻗﻮﺍﻧﻴﻦ ﺗﺸﺎﺑﻪ ﺗﻮﻟﻴﺪ ﺷﺪﻩ ،ﻣﻌﻤﻮﻻ ﺩﺭ ﺳﻄﺢ ﺑﺎﻻ
ﺍﻳﻦ ﺩﻭ ﺑﺎﻫﻢ ﻣﺘﻤﺎﻳﺰ ﻫﺴﺘﻨﺪ .ﺯﻳﺮﺩﺭﺧﺖ ﻫﺎﻱ ﭘﺎﻳﻴﻦ ﺑﺎ ﻫﻢ ﺑﺮﺍﺑﺮﻧﺪ ﻭ ﻣﻲ ﺗﻮﺍﻧﻨﺪ ﺍﺯ
pointerﻫﺎﻱ ﻣﺸﺘﺮﻙ ﺍﺳﺘﻔﺎﺩﻩ ﻛﻨﻨﺪ.
ﻣﺜﺎﻝ :ﺯﻣﺎﻧﻴﻜﻪ ﺍﺗﺼﺎﻝ ﺟﺎﺑﺠﺎﻳﻲ ﭘﺬﻳﺮ ﺑﻜﺎﺭﮔﺮﻓﺘﻪ ﺷﺪﻩ
172
ﻣﺎ ﻳﻚ ﻣﻮﺭﺩ ﺧﺎﺹ ﺍﺯ ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﻲ ﭘﻮﻳﺎ ﺑﺮﺍﻱ ﺍﺗﺼﺎﻝ ﺑﺎ ﻣﺮﺗﺐ ﺳﺎﺯﻱ ﺑﻬﻴﻨﻪ ﺭﺍ
ﺑﺮﺭﺳﻲ ﻣﻲ ﻛﻨﻴﻢ.
ﺗﺨﻤﻴﻦ ﻫﺰﻳﻨﻪ
ﻧﻴﺎﺯ ﺑﻪ ﺁﻣﺎﺭ ﺭﺍﺑﻄﻪ ﻫﺎﻱ ﻭﺭﻭﺩﻱ ﻫﺎ ،ﻣﺜﻞ :ﺗﻌﺪﺍﺩ ﭼﻨﺪﺗﺎﻳﻲ ﻫﺎ ،ﺍﻧﺪﺍﺯﻩ ﻱ ﭼﻨﺪﺗﺎﻳﻲ ﻫﺎ ،ﻭﺭﻭﺩﻱ ﻫﺎ ﻣﻲ
ﺗﻮﺍﻧﻨﺪ ﻧﺘﻴﺠﻪ ﻱ ﺯﻳﺮ ﺑﻴﺎﻧﻬﺎ ﺷﻮﻧﺪ:
ﺑﻴﺸﺘﺮﻳﻦ ﺑﺮﺭﺳﻲ ﻓﻌﻞ ﻭﺍﻧﻔﻌﺎﻻﺕ ﺗﻜﻨﻴﻚ ﻫﺎﻱ ﺍﺭﺯﻳﺎﺑﻲ ﺯﻣﺎﻧﻲ ﺍﻧﺠﺎﻡ ﻣﻲ ﮔﻴﺮﺩ ﻛﻪ ﻃﺮﺡ ﻫﺎﻱ ﺍﺭﺯﻳﺎﺑﻲ
ﺍﻧﺘﺨﺎﺏ ﻣﻲ ﺷﻮﻧﺪ .ﺍﻧﺘﺨﺎﺏ ﺍﺭﺯﺍﻧﺘﺮﻳﻦ ﺍﻟﮕﻮﺭﻳﺘﻢ ﺑﺮﺍﻱ ﻫﺮ ﻋﻤﻠﻜﺮﺩ ﺑﺼﻮﺭﺕ ﻣﺴﺘﻘﻞ ﻣﻤﻜﻦ ﺍﺳﺖ ﺑﺮﺍﻱ
ﻫﻤﻪ ﻱ ﺍﻟﮕﻮﺭﻳﺘﻢ ﻫﺎ ﺛﻤﺮﺑﺨﺶ ﻧﺒﺎﺷﺪ .ﺟﺴﺘﺠﻮﻱ ﻛﺎﺭﺑﺮﺩﻱ ﺑﻬﻴﻨﻪ ﺷﺪﻩ ﻋﻨﺎﺻﺮ ﺯﻳﺮ ﺭﺍ ﺗﺮﻛﻴﺐ ﻣﻲ ﻛﻨﺪ :
(1ﺟﺴﺘﺠﻮﻱ ﺗﻤﺎﻡ ﻃﺮﺡ ﻫﺎ ﻭ ﺍﻧﺘﺨﺎﺏ ﺑﻬﺘﺮﻳﻦ ﻃﺮﺡ ﺩﺭ ﺭﻭﺷﻲ ﺑﻪ ﺳﺒﻚ ﻣﺒﺘﻨﻲ ﺑﺮ ﻫﺰﻳﻨﻪ .
(2ﺑﻬﺮﻩ ﮔﻴﺮﻱ ﺍﺯ ﻛﺸﻒ ﻛﻨﻨﺪﻩ ﻫﺎ ﺑﺮﺍﻱ ﺍﻧﺘﺨﺎﺏ ﻳﻚ ﺑﺮﻧﺎﻣﻪ.
ﺑﻬﻴﻨﻪ ﺳﺎﺯﻱ ﻣﺒﻨﻲ ﺑﺮ ﻫﺰﻳﻨﻪ
. . . rn. r2 ﺗﻔﻜﺮ ﺩﺭ ﻛﺸﻒ ﺑﻬﺘﺮﻳﻦ ﻣﻨﻈﻢ ﺳﺎﺯﻱ ﺍﺗﺼﺎﻝ ﺑﺮﺍﻱ r1
!) . (2(n – 1))!/(n – 1ﻣﻨﻈﻢ ﺳﺎﺯﻱ ﻫﺎﻱ ﺍﺗﺼﺎﻝ ﮔﻮﻧﺎﮔﻮﻥ ﺑﺮﺍﻱ ﺑﻴﺎﻥ ﺑﺎﻻ .ﺯﻣﺎﻧﻴﻜﻪ n=7ﻭﻋﺪﺩ
ﺑﺮﺍﺑﺮﺳﺖ ﺑﺎ 665280 ,ﻭ ﺑﺎ n=10ﻋﺪﺩﺑﺰﺭﮔﺘﺮ ﺍﺯ 176ﺑﻴﻠﻴﻮﻥ ﻣﻲ ﺷﻮﺩ .ﻧﻴﺎﺯﻱ ﺑﻪ ﺗﻮﻟﻴﺪ ﻫﻤﻪ
ﻱ ﻣﻨﻈﻢ ﺳﺎﺯﻱ ﻫﺎﻱ ﺍﺗﺼﺎﻻﺕ ﻧﻴﺴﺖ .ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﻲ ﭘﻮﻳﺎ ،ﻛﻢ ﻫﺰﻳﻨﻪ ﺗﺮﻳﻦ ﻣﻨﻈﻢ ﺳﺎﺯﻱ
ﻣﺤﺎﺳﺒﻪ ﺷﺪﻩ ﺍﺳﺖ .ﺗﻨﻬﺎ ﻓﻘﻂ ﻳﻜﺒﺎﺭ ﻭ ﺍﺗﺼﺎﻝ ﺑﺮﺍﻱ ﻫﺮ ﺯﻳﺮ ﻣﺠﻤﻮﻋﻪ ﺍﺯ }{r1, r2, . . . rn
ﺫﺧﻴﺮﻩ ﺷﺪﻩ ﺑﺮﺍﻱ ﺍﺳﺘﺎﺩﻩ ﻱ ﺑﻌﺪﻱ ﺍﺳﺖ.
173
• ﭘﻴﺪﺍ ﻛﺮﺩﻥ ﺑﻬﺘﺮﻳﻦ ﻃﺮﺡ ﺑﺮﺍﻱ ﻣﺠﻤﻮﻋﻪ Sﻛﻪ ﺍﺭﺗﺒﺎﻃﺎﺕ nﻫﺎ ﺍﺳﺖ ،ﺷﺎﻣﻞ ﺗﻤﺎﻣﻲ ﻃﺮﺡ ﻫﺎﻱ
ﻣﻤﻜﻦ ﺑﻪ ﺷﻜﻞ (S – S1) S1ﻛﻪ ﺩﺭﺁﻥ S1ﻫﺮ ﺯﻳﺮ ﻣﺠﻤﻮﻋﻪ ﻱ ﻏﻴﺮ ﺧﺎﻟﻲ ﺍﺯ Sﺍﺳﺖ.
• ﻣﺤﺎﺳﺒﻪ ﻱ ﺑﺎﺯﮔﺸﺘﻲ ﻫﺰﻳﻨﻪ ﻫﺎ ﺑﺮﺍﻱ ﺍﺗﺼﺎﻝ ﺯﻳﺮﻣﺠﻤﻮﻋﻪ ﻫﺎﻱ Sﺍﺳﺖ ﻛﻪ ﺑﺮﺍﻱ ﭘﻴﺪﺍ ﻛﺮﺩﻥ
ﻫﺰﻳﻨﻪ ﻱ ﻫﺮ ﻃﺮﺡ ﺍﻧﺠﺎﻡ ﻣﻲ ﮔﻴﺮﺩ .ﺍﻧﺘﺨﺎﺏ ﺍﺭﺯﺍﻧﺘﺮﻳﻦ ﺩﺭ 2n – 2ﻫﺎﻱ ﻣﺘﻨﺎﻭﺏ.
• ﻣﻮﺭﺩ ﻣﺒﻨﺎ ﺑﺮﺍﻱ ﺑﺎﺯﮔﺸﺖ :ﺍﺭﺗﺒﺎﻁ ﻣﻨﻔﺮﺩ ﻃﺮﺡ ﺩﺳﺘﺮﺳﻲ .
• ﺑﻜﺎﺭﮔﻴﺮﻱ ﺗﻤﺎﻣﻲ selectionﻫﺎ ﺭﻭﻱ Riﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺑﻬﺘﺮﻳﻦ ﺍﻧﺘﺨﺎﺏ ﺩﺭ ﻓﻬﺮﺳﺖ ﻫﺎﻱ
ﺭﻭﻱ .Ri
• ﺯﻣﺎﻧﻴﻜﻪ ﻃﺮﺡ ﺑﺮﺍﻱ ﻫﺮ ﺯﻳﺮ ﻣﺠﻤﻮﻋﻪ ﻱ ﻣﺤﺎﺳﺒﻪ ﺷﺪﻩ ،ﺫﺧﻴﺮﻩ ﻭ ﺍﺳﺘﻔﺎﺩﻩ ﻣﺠﺪﺩ ﻣﻲ ﺷﻮﺩ ﻭ
ﺩﻭﺑﺎﺭﻩ ﺧﻮﺍﺳﺘﻪ ﻣﻲ ﺷﻮﺩ ﺑﻪ ﺟﺎﻱ ﻣﺤﺎﺳﺒﻪ ﻣﺠﺪﺩ ﺁﻥ .
ﺑﺮﺧﻲ ﺍﺯ ﺗﺒﺪﻳﻼﺕ ﺑﺮﺍﻱ ﺍﺟﺎﺯﻩ ﻓﻬﺮﺳﺖ ﻫﺎﻱ ﺣﻠﻘﻪ ﻫﺎﻱ ﺗﻮﺩﺭﺗﻮ ﺍﺗﺼﺎﻝ ﻣﻲ ﻳﺎﺑﻨﺪ ﺭﻭﻱ ﺍﺭﺗﺒﺎﻃﺎﺗﻲ ﻛﻪ
Selectionﻫﺎﻳﻲ ﺩﺍﺭﺩ.
ﺩﺭﺧﺖ ﻫﺎﻱ ﺍﺗﺼﺎﻝ ﻋﻤﻖ ﭼﭗ
ﺩﺭ ﺩﺭﺧﺘﻬﺎﻱ ﺍﺗﺼﺎﻝ ﻋﻤﻖ ﭼﭗ ﻭﺭﻭﺩﻱ ﺳﻤﺖ ﺭﺍﺳﺖ ﺑﺮﺍﻱ ﻫﺮ ﺍﺗﺼﺎﻝ ﻳﻚ ﺭﺍﺑﻄﻪ ﺍﺳﺖ ،ﻧﻪ ﻧﺘﻴﺠﻪ ﺍﻱ ﺍﺯ
ﺍﺗﺼﺎﻝ ﻣﺘﻮﺳﻂ.
174
ﺑﻬﻴﻨﻪ ﺳﺎﺯﻱ ﻣﺒﺘﻨﻲ ﺑﺮ ﻗﻮﺍﻧﻴﻦ ﺗﺸﺎﺑﻪ
ﻗﻮﺍﻧﻴﻦ ﺗﺸﺎﺑﻪ ﻓﻴﺰﻳﻜﻲ ﺍﺟﺎﺯﻩ ﻣﻲ ﺩﻫﻨﺪ ﻛﻪ ﻃﺮﺡ ﺟﺴﺘﺠﻮﻱ ﻣﻨﻄﻘﻲ ﺑﺮﮔﺮﺩﺍﻧﺪﻩ ﺷﺪﻩ ﺑﻪ ﺑﻬﻴﻨﻪ ﺳﺎﺯ ﻣﻮﺛﺮ
ﺑﺮ ﻣﺒﻨﺎﻱ ﻗﻮﺍﻧﻴﻦ ﺗﺸﺎﺑﻪ ﻭﺍﺑﺴﺘﻪ ﺍﺳﺖ ﺑﻪ:
ﻧﻤﺎﻳﺶ ﻓﻀﺎﻱ ﻛﺎﺭﺍﻣﺪ ﺑﻴﺎﻧﻬﺎﻳﻲ ﻛﻪ ﻣﻤﺎﻧﻌﺖ ﻣﻲ ﻛﻨﺪ ﺍﺯ ﺳﺎﺧﺘﻦ ﻛﭙﻲ ﻫﺎﻱ ﭼﻨﺪﮔﺎﻧﻪ ﺑﺮ
ﺭﻭﻱ ﺯﻳﺮ ﺑﻴﺎﻧﻬﺎ.
ﺗﻜﻨﻴﻚ ﻫﺎﻱ ﻛﺎﺭﺁﻣﺪ ﺑﺮﺍﻱ ﻛﺸﻒ ﻧﺴﺨﻪ ﻫﺎﻱ ﺍﺳﺘﺨﺮﺍﺟﻲ ﺍﺯ ﺑﻴﺎﻧﻬﺎ.
ﻓﺮﻡ ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﻲ ﭘﻮﻳﺎ ﺑﺮ ﻣﺒﻨﺎﻱ ﺣﻔﻆ ﻛﺮﺩﻥ ﻛﻪ ﺫﺧﻴﺮﻩ ﻣﻲ ﻛﻨﺪ ﺑﻬﺘﺮﻳﻦ ﻃﺮﺡ ﺑﺮﺍﻱ
ﺯﻳﺮ ﺍﺟﺮﺍﻱ ﺍﻭﻟﻴﻦ ﺯﻣﺎﻥ ﺑﻬﻴﻨﻪ ﺷﺪﻩ ﻭ ﻣﺠﺪﺩ ﺍﺳﺘﻔﺎﺩﻩ ﻣﻲ ﺷﻮﺩ ﺩﺭ ﻓﺮﺍﺧﻮﺍﻧﻲ ﺗﻜﺮﺍﺭ ﺑﻬﻴﻨﻪ
ﺳﺎﺯﻱ ﺷﺪﻩ ﺩﺭ ﺯﻳﺮ ﺑﻴﺎﻧﻬﺎﻱ ﺑﺮﺍﺑﺮ.
ﺗﻜﻨﻴﻚ ﻫﺎﻱ ﻫﺮﺱ ﻣﺒﺘﻨﻲ ﺑﺮ ﻫﺰﻳﻨﻪ ﻛﻪ ﺟﻠﻮﮔﻲﺭﻱ ﻣﻲ ﻛﻨﺪ ﺍﺯ ﺗﻮﻟﻴﺪ ﻫﻤﻪ ﻃﺮﺡ ﻫﺎ .
ﺑﻬﻴﻨﻪ ﺳﺎﺯﻱ ﻣﺒﺘﻨﻲ ﺑﺮﻫﺰﻳﻨﻪ ﭘﺮﻫﺰﻳﻨﻪ ﺍﺳﺖ ،ﺣﺘﻲ ﺑﺎ ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﻲ ﭘﻮﻳﺎ .ﺳﻴﺴﺘﻢ ﻫﺎ ﻣﻲ ﺗﻮﺍﻧﻨﺪ ﺍﺳﺘﻔﺎﺩﻩ
ﻛﻨﻨﺪ ﺍﺯ ﺭﻭﺵ ﺍﻛﺘﺸﺎﻓﻲ ﺑﺮﺍﻱ ﻛﺎﻫﺶ ﺗﻌﺪﺍﺩ ﺍﻧﺘﺨﺎﺑﻬﺎ ﻛﻪ ﺑﺎﻳﺪ ﺳﺎﺧﺘﻪ ﺷﻮﺩ ﺩﺭ ﻣﺪﻝ ﻣﺒﺘﻨﻲ ﺑﺮ ﻫﺰﻳﻨﻪ .
ﺑﻬﻴﻨﻪ ﺳﺎﺯﻱ ﺍﻛﺘﺸﺎﻓﻲ ،ﺩﺭﺧﺖ ﺟﺴﺘﺠﻮ ﺭﺍ ﺑﺎ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﻣﺠﻤﻮﻋﻪ ﺍﻱ ﺍﺯ ﻗﻮﺍﻧﻴﻦ ﻛﻪ ﻣﻌﻤﻮﻻ ﻣﻮﺟﺐ
ﺑﻬﺒﻮﺩ ﻧﻤﺎﻳﺶ ﺍﺟﺮﺍ ﻣﻲ ﺷﻮﺩ ،ﺗﻐﻴﻴﺮ ﺷﻜﻞ ﻣﻲ ﺩﻫﺪ:
175
ﺍﺟﺮﺍﻱ ﺳﺮﻳﻊ ) selectionﻛﺎﻫﺶ ﺗﻌﺪﺍﺩ ﭼﻨﺪﺗﺎﻳﻲ ﻫﺎ (
ﺍﺟﺮﺍﻱ ﺳﺮﻳﻊ ) projectionﻛﺎﻫﺶ ﺗﻌﺪﺍﺩ ﺧﺼﻮﺻﻴﺎﺕ (
selectionﻭ ﺍﺗﺼﺎﻝ ﻋﻤﻠﻜﺮﺩﻫﺎ ).ﺑﺎ ﻛﻮﭼﻚ ﺍﺟﺮﺍﻱ ﺑﻴﺸﺘﺮﻳﻦ ﻣﺤﺪﻭﺩﻛﻨﻨﺪﻩ ﻫﺎﻱ
ﻛﺮﺩﻥ ﺍﻧﺪﺍﺯﻩ ﻱ ﻧﺘﻴﺠﻪ( ﻗﺒﻞ ﺍﺯ ﺑﻘﻴﻪ ﻱ ﻋﻤﻠﻜﺮﺩ ﻫﺎﻱ ﻣﺸﺎﺑﻪ .
ﺑﻌﻀﻲ ﺍﺯ ﺳﻴﺴﺘﻢ ﻫﺎ ﺍﺳﺘﻔﺎﺩﻩ ﻣﻲ ﺷﻮﺩ ﻓﻘﻂ ﺑﻪ ﺻﻮﺭﺕ ﺍﻛﺘﺸﺎﻓﻲ ،ﺑﻘﻴﻪ ﻱ ﺍﻛﺘﺸﺎﻓﻲ ﻫﺎ
ﺑﺎ ﺑﺨﺸﻲ ﺍﺯ ﺑﻬﻴﻨﻪ ﺳﺎﺯﻱ ﻣﺒﺘﻨﻲ ﺑﺮ ﻫﺰﻳﻨﻪ ﺗﺮﻛﻴﺐ ﻣﻲ ﺷﻮﻧﺪ .
ﺑﻴﺸﺘﺮ ﺑﻬﻴﻨﻪ ﺳﺎﺯﻫﺎ ﻓﻘﻂ ﻋﻤﻖ ﭼﭗ ﺍﺗﺼﺎﻝ ﺩﺳﺘﻮﺭﺍﺕ ﺭﺍ ﺑﺮﺭﺳﻲ ﻣﻲ ﻛﻨﺪ .ﺑﻌﻼﻭﻩ ﺭﻭﺵ ﻫﺎﻱ ﺍﻛﺘﺸﺎﻓﻲ
ﺑﺮﺍﻱ ﻓﺸﺎﺭ selectionﻫﺎ ﻭ projectionﻫﺎ ﺩﺭﺧﺖ ﺟﺴﺘﺠﻮ ﺭﺍ ﭘﺎﻳﻴﻦ ﻣﻲ ﺁﻭﺭﺩ .ﻛﺎﻫﺶ ﭘﻴﭽﻴﺪﮔﻲ
ﺑﻬﻴﻨﻪ ﺳﺎﺯﻱ ﻭ ﺗﻮﻟﻴﺪ ﻃﺮﺡ ﻫﺎﻱ ﻗﺎﺑﻞ ﺟﻮﺍﺑﮕﻮﻳﻲ ﺑﻪ ﺧﻂ ﺍﺭﺯﻳﺎﺑﻲ .ﺑﻬﻴﻨﻪ ﺳﺎﺯﻱ ﺍﻛﺘﺸﺎﻓﻲ ﺩﺭ ﺑﺮﺧﻲ ﺍﺯ
ﻭﺭژﻥ ﻫﺎﻱ ﺍﻭﺭﺍﻛﻞ ﺍﺳﺘﻔﺎﺩﻩ ﺷﺪﻩ ﺍﺳﺖ.
ﺭﺍ ﺑﺮﺧﻲ ﺍﺯ ﺑﻬﻴﻨﻪ ﺳﺎﺯﻫﺎﻱ ﺟﺴﺘﺠﻮ ﺍﻧﺘﺨﺎﺏ ﻫﺎﻱ ﺍﻛﺘﺸﺎﻓﻲ ﺭﺍ ﻭ ﺗﻮﻟﻴﺪ ﻃﺮﺡ ﻫﺎﻱ ﺩﺳﺘﺮﺳﻲ ﻣﺘﻨﺎﻭﺏ
ﻛﺎﻣﻞ ﻣﻲ ﻛﻨﺪ.
176
oﻃﺮﺡ ﻣﺨﺰﻥ ﺑﺮﺍﻱ ﺍﺳﺘﻔﺎﺩﻩ ﻱ ﻣﺠﺪﺩ ﻗﺒﻞ ﺍﺯ ﻣﺤﺎﺳﺒﻪ ﻱ ﻃﺮﺡ ﺍﮔﺮ ﺟﺴﺘﺠﻮ ﻧﺎﺷﻲ ﺍﺯ
ﭘﺎﻳﺪﺍﺭﻱ ﻫﺎﻱ ﻣﺨﺘﻠﻒ ﺩﺭ ﺟﺴﺘﺠﻮ.
ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺍﻛﺘﺸﺎﻓﻲ ﻫﺎ ،ﺑﻬﻴﻨﻪ ﺳﺎﺯﻱ ﺟﺴﺘﺠﻮ ﻣﺒﺘﻨﻲ ﺑﺮ ﻫﺰﻳﻨﻪ ﺭﺍ ﺩﺭ ﻣﺨﺎﺭﺝ ﻛﻠﻲ ﺗﺤﻤﻴﻞ ﻗﺎﺑﻞ
ﺗﻮﺟﻬﻲ ﻣﻲ ﻛﻨﺪ .
177
ﺑﺮﺁﻭﺭﺩ ﺍﻧﺪﺍﺯﻩ selection
• )σA=v(r
: nr / V(A,r) oﺗﻌﺪﺍﺩ ﺭﻛﻮﺭﺩﻫﺎ ﻛﻪ ﺭﺿﺎﻳﺖ selectionﺭﺍ ﺍﻳﺠﺎﺩ ﻣﻲ ﻛﻨﺪ.
oﺷﺮﺍﻳﻂ ﻣﺘﺴﺎﻭﻱ ﺭﻭﻱ ﻛﻠﻴﺪ ﺧﺼﻮﺻﻴﺖ :ﺍﻧﺪﺍﺯﻩ ﻱ ﺗﺨﻤﻴﻦ=.1
• )σA≤V(r) (case of σA ≥ V(r) is symmetric
C oﻣﺸﺨﺺ ﻣﻲ ﻛﻨﺪ ﺗﺨﻤﻴﻦ ﺗﻌﺪﺍﺩ ﭼﻨﺪﺗﺎﻳﻲ ﻫﺎ
oﺍﮔﺮ ) min(A,rﻭ ) max(A,rﺩﺭ ﻛﺎﺗﺎﻟﻮگ ﺩﺭ ﺩﺳﺘﺮﺳﻨﺪ.
• ﺍﮔﺮ ﻧﻤﺎﻳﺶ ﻧﺤﻮﻩ ﻱ ﺍﻧﺘﺸﺎﺭ ﺩﺭ ﺩﺳﺘﺮﺱ ﺑﺎﺷﺪ ،ﻣﻲ ﺗﻮﺍﻧﺪ ﺗﺨﻤﻴﻦ ﺑﺎﻻ ﺭﺍ ﺗﺼﺤﻴﺢ ﻛﻨﺪ .
• ﺩﺭ ﻏﻴﺎﺏ ﺍﻃﻼﻋﺎﺕ ﺁﻣﺎﺭﻱ Cﻓﺮﺽ ﺷﺪﻩ ﺍﺳﺖ ﺗﺎ nr / 2ﺑﺎﺷﺪ.
178
ﻫﺎ ﻱ ﺷﺎﺧﻪ ﺍﻱ ﺗﻮ ﺩﺭ ﺗﻮ: ﺑﻬﻴﻨﻪ ﺳﺎﺯﻱ sub query
• ﻣﺜﺎﻝ ﻛﻮﺋﺮﻱ ﺷﺎﺧﻪ ﺍﻱ ﺗﻮ ﺩﺭ ﺗﻮ:
selectname
from instructor
* where exists (select
from teaches
)where instructor.ID = teaches.ID and teaches.year = 2007
SQLﻣﻔﻬﻮﻣﻲ ﺍﺯ ﺭﻓﺘﺎﺭ sub queryﻫﺎ ﺗﻮ ﺩﺭ ﺗﻮ ﺍﺳﺖ ﺩﺭ ﻛﻪ ﺩﺭ ﺁﻥ ﺗﻮﺍﺑﻊ ﺭﺍ ﻛﻪ ﭘﺎﺭﺍﻣﺘﺮﻫﺎ ﻣﻴﮕﻴﺮﺩ ﻭ
ﻳﻚ ﺍﺭﺯﺵ ﻭﺍﺣﺪ ﻳﺎ ﻣﺠﻤﻮﻋﻪ ﺍﻱ ﺍﺯ ﺍﺭﺯﺵ ﻫﺎ ﺭﺍ ﺑﺎﺯ ﻣﻲ ﮔﺮﺩﺍﻧﺪ .ﭘﺎﺭﺍﻣﺘﺮﻫﺎﻱ ﻣﺘﻐﻴﺮ ﺍﺯ ﻛﻮﺋﺮﻱ ﺩﺭ ﺳﻄﺢ
ﺑﻴﺮﻭﻧﻲ ﻫﺴﺘﻨﺪ ﻛﻪ ﺩﺭ Sub queryﻫﺎﻱ ﺗﻮ ﺩﺭ ﺗﻮ ﺍﺳﺘﻔﺎﺩﻩ ﻣﻲ ﺷﻮﺩ ،ﺍﻳﻦ ﻣﺘﻐﻴﺮﻫﺎ ﻣﺘﻐﻴﺮﻫﺎﻱ
ﻫﻤﺒﺴﺘﮕﻲ ﻧﺎﻣﻴﺪﻩ ﻣﻲ ﺷﻮﻧﺪ.
ﻣﻔﻬﻮﻡ Sub query ،ﺗﻮﺩﺭﺗﻮ ﻳﻚ ﺑﺎﺭ ﺑﺮﺍﻱ ﻫﺮ ﺗﺎﭘﻞ ﺩﺭ ﻣﻘﻄﻊ ﻣﺤﺼﻮﻝ ﺗﻮﻟﻴﺪ ﺷﺪﻩ ﺗﻮﺳﻂ ﺳﻄﺢ
ﺧﺎﺭﺟﻲ ﺍﺳﺖ .ﭼﻨﻴﻦ ﺍﺭﺯﻳﺎﺑﻲ ،ﺍﺭﺯﻳﺎﺑﻲ ﺍﺭﺗﺒﺎﻁ ﻧﺎﻣﻴﺪﻩ ﻣﻲ ﺷﻮﻧﺪ.
ﺗﻮﺟﻪ :ﺩﺭ ﺷﺮﺍﻳﻂ ﺩﻳﮕﺮ ﻛﻪ ﻣﻤﻜﻦ ﺍﺳﺖ ﺑﺮﺍﻱ ﻣﺤﺎﺳﺒﻪ ﭘﻴﻮﺳﺘﻦ ﻗﺒﻞ ﺍﺯ ﺍﺟﺮﺍﻱ Sub queryﻫﺎﻱ ﺗﻮ
ﺩﺭ ﺗﻮ ﻣﻮﺭﺩ ﺍﺳﺘﻔﺎﺩﻩ ﻗﺮﺍﺭ ﺑﮕﻴﺮﺩ .ﺍﺭﺯﻳﺎﺑﻲ ﻫﺎﻱ ﻫﻤﺒﺴﺘﻪ ﻣﻤﻜﻦ ﺍﺳﺖ ﻛﺎﻣﻼ ﻧﺎﻛﺎﺭﺁﻣﺪ ﺑﺎﺷﻨﺪ .ﺗﻌﺪﺍﺩ
ﺯﻳﺎﺩﻱ ﺍﺯ ﺗﻤﺎﺱ ﻣﻤﻜﻦ ﺍﺳﺖ ﺍﺯ sub queryﻫﺎﻱ ﺗﻮ ﺩﺭ ﺗﻮ ﺳﺎﺧﺘﻪ ﺷﻮﺩ .ﻣﻤﻜﻦ ﺍﺳﺖ ﻳﻚ ﻧﺘﻴﺠﻪ ﻏﻴﺮ
ﺿﺮﻭﺭﻱ ﺗﺼﺎﺩﻓﻲ I / Oﺑﻪ ﻭﺟﻮﺩ ﺁﻳﺪ .ﺑﻬﻴﻨﻪ SQLﺗﻼﺵ ﺑﺮﺍﻱ ﺗﺒﺪﻳﻞ ﻭ ﭘﻴﻮﻧﺪ sub queryﻫﺎ ﺗﻮ ﺩﺭ
ﺗﻮ ﻛﻪ ﺩﺭ ﺁﻥ ﻣﻤﻜﻦ ﻗﺎﺩﺭ ﺑﻪ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ ﺗﻜﻨﻴﻚ ﻫﺎﻱ ﻛﺎﺭﺁﻣﺪ ﭘﻴﻮﻧﺪ ﺑﺎﺷﺪ .
ﻣﺜﺎﻝ :ﻛﻮﺋﺮﻱ ﺗﻮ ﺩﺭ ﺗﻮ ﺯﻭﺩﺗﺮ ﺭﺍ ﻣﻲ ﺗﻮﺍﻥ ﺑﺎﺯﻧﻮﻳﺴﻲ ﻛﺮﺩ
select name
from instructor, teaches
where instructor.ID = teaches.ID and teaches.year = 2007
ﺗﻮﺟﻪ :ﺍﻳﻦ ﺩﻭﻛﻮﺋﺮﻱ ﻣﺨﺘﻠﻒ 2ﻧﺴﺨﻪ ﺗﻜﺮﺍﺭﻱ ﺗﻮﻟﻴﺪ ﻛﺮﺩﻩ ﺍﻧﺪ )ﭼﺮﺍ؟(
teachesﻣﻲ ﺗﻮﺍﻧﺪ ﻧﺴﺨﻪ ﺗﻜﺮﺍﺭﻱ IDsﺭﺍ ﺩﺍﺷﺘﻪ ﺑﺎﺷﺪ ،ﻣﻲ ﺗﻮﺍﻧﺪ ﻧﺴﺨﻪ ﺗﻜﺮﺍﺭﻱ ﺭﺍ ﺑﻪ ﺩﺭﺳﺘﻲ
ﻫﻤﺎﻧﻄﻮﺭ ﻛﻪ ﻣﺎ ﺧﻮﺍﻫﻴﻢ ﺩﻳﺪ ﺍﺻﻼﺡ ﻛﻨﺪ
179
• ﻋﻤﻮﻣﺎ ،ﻣﻤﻜﻦ ﻧﻴﺴﺖ ﻣﺴﺘﻘﻴﻤﺎ ﺍﺯ ﺳﻄﺢ ﺟﺰ ﺧﺎﺭﺟﻲ queryﺑﻪ ﺳﻤﺖ ﺟﺰ Sub queryﺗﻮ ﺩﺭ ﺗﻮ
ﺣﺮﻛﺖ ﻛﻨﻴﻢ .ﺭﺍﺑﻄﻪ ﺑﻪ ﻃﻮﺭ ﻣﻮﻗﺖ ﺍﻳﺠﺎﺩ ﺷﺪﻩ ،ﻭ ﺩﺭ ﺑﺪﻧﻪ ﺳﻄﺢ ﺑﻴﺮﻭﻧﻲ queryﻣﻮﺭﺩ ﺍﺳﺘﻔﺎﺩﻩ ﻗﺮﺍﺭ
ﻣﻴﮕﻴﺮﺩ.
ﺑﻪ ﻃﻮﺭ ﻛﻠﻲ SQL, query ،ﻣﻲ ﺗﻮﺍﻧﺪ ﺑﻪ ﺻﻮﺭﺕ ﺯﻳﺮ ﺑﺎﺯ ﻧﻮﻳﺴﻲ ﺷﻮﺩ:
ﺑﺎﺯﻧﻮﻳﺴﻲ:
…select
fromL1
* whereP1and exists (select
fromL2
)whereP2
ﺑﻪ:
create tablet1 as
select distinct V
from L2
1
where P2
… select
from L1,t1
2
where P1and P2
1
P2 ﺷﺎﻣﻞ ﮔﺬﺍﺭﻩ ﺩﺭ P2ﻛﻪ ﻫﻴﭻ ﻣﺘﻐﻴﺮ ﻫﻤﺒﺴﺘﮕﻲ ﺭﺍ ﺷﺎﻣﻞ ﻧﻴﺴﺖ.
2
reintroduces P2 ﺷﺎﻣﻞ ﮔﺬﺍﺭﻩ ﻣﺘﻐﻴﺮﻫﺎﻱ ﻫﻤﺒﺴﺘﮕﻲ ،ﺑﺎ ﺭﻭﺍﺑﻂ ﻣﻨﺎﺳﺐ ﺗﻐﻴﻴﺮ ﻧﺎﻡ ﺍﺳﺖ .
V ﺷﺎﻣﻞ ﺗﻤﺎﻡ ﻭﻳﮋﮔﻲ ﻫﺎﻱ ﻣﻮﺭﺩ ﺍﺳﺘﻔﺎﺩﻩ ﺩﺭ ﮔﺬﺍﺭﻩ ﺑﺎ ﻣﺘﻐﻴﺮ ﻫﻤﺒﺴﺘﮕﻲ ﺍﺳﺖ.
ﺩﺭ ﻣﺜﺎﻝ ﻣﺎ query ،ﺍﺻﻠﻲ ﺷﺎﺧﻪ ﺍﻱ ﺗﻮ ﺩﺭ ﺗﻮ ﻣﻲ ﺗﻮﺍﻧﺪ ﺗﻐﻴﻴﺮ ﭘﻴﺪﺍ ﻛﻨﺪ
create table t1as
select distinct ID
180
from teaches
where year = 2007
select name
from instructor, t1
where t1.ID = instructor.ID
ﺭﻭﻧﺪ ﺟﺎﺑﺠﺎﻳﻲ ﻳﻚ queryﺗﻮ ﺩﺭ ﺗﻮ ﺑﻮﺍﺳﻄﻪ ﻳﻚ queryﺑﺎ ﭘﻴﻮﺳﺘﻦ ﺭﺍ )ﺍﺣﺘﻤﺎﻻ ﺑﺎ ﻳﻚ ﺍﺭﺗﺒﺎﻁ
ﻣﻮﻗﺖ( decorrelationﻧﺎﻣﻴﺪﻩ ﻣﻲ ﺷﻮﺩ.
• Decorrelationﭘﻴﭽﻴﺪﻩ ﺗﺮ ﺍﺳﺖ ﺯﻣﺎﻧﻲ ﻛﻪ Sub query :ﺍﻱ ﺗﻮ ﺩﺭ ﺗﻮ ﺑﺮﺍﻱ ﺍﺟﺘﻤﺎﻉ ﺍﺳﺘﻔﺎﺩﻩ
ﺷﻮﺩ ،ﻳﺎ ﻫﻨﮕﺎﻣﻲ ﻛﻪ ﻧﺘﻴﺠﻪ sub queryﻫﺎﻱ ﺗﻮ ﺩﺭ ﺗﻮﺭ ﺑﺮﺍﻱ ﺗﺴﺖ ﺷﺒﺎﻫﺖ)ﺑﺮﺍﺑﺮﻱ(ﺍﺳﺘﻔﺎﺩﻩ
ﺷﻮﺩ ،ﻳﺎﺯﻣﺎﻧﻲ ﻛﻪ ﺷﺮﺍﻳﻂ ﺍﺭﺗﺒﺎﻁ sub queryﻫﺎﻱ ﺗﻮ ﺩﺭ ﺗﻮ ﺑﻪ queryﻫﺎﻱ ﺩﻳﮕﺮ ﻭﺟﻮﺩ ﻧﺪﺍﺷﺘﻪ
ﺑﺎﺷﺪ.
: ﺩﻳﺪﮔﺎﻩmaterialized
ﺩﻳﺪﮔﺎﻩ ، materializedﺩﻳﺪﮔﺎﻫﻲ ﺍﺳﺖ ﻛﻪ ﻣﺤﺘﻮﻳﺎﺕ ﺁﻥ ﻣﺤﺎﺳﺒﻪ ﻭ ﺫﺧﻴﺮﻩ ﺳﺎﺯﻱ ﺍﺳﺖ .
create view department_total_salary(dept_name, total_salary)as
)select dept_name, sum(salary
from instructor
group by dept_name
ﺗﺤﻘﻖ ﺩﻳﺪﮔﺎﻩ ﻓﻮﻕ ﺑﺴﻴﺎﺭ ﻣﻔﻴﺪ ﺧﻮﺍﻫﺪ ﺑﻮﺩ ﺍﮔﺮ total salaryﺗﻮﺳﻂ departmentﺍﻏﻠﺐ ﻣﻮﺭﺩ
ﻧﻴﺎﺯ ﺑﺎﺷﺪ .ﺻﺮﻓﻪ ﺟﻮﻳﻲ ﺳﻌﻲ ﺩﺭ ﭘﻴﺪﺍ ﻛﺮﺩﻥ ﺗﺎﭘﻞ ﻫﺎﻱ ﭼﻨﺪﮔﺎﻧﻪ ﻭ ﺍﺿﺎﻓﻪ ﻛﺮﺩﻥ ﻣﻘﺪﺍﺭ ﺑﻪ ﺁﻧﻬﺎ ﻣﻲ
ﻛﻨﺪ.
181
ﮔﺰﻳﻨﻪ ﺑﻬﺘﺮ ﺍﺳﺖ ﺍﺳﺘﻔﺎﺩﻩ ﺍﺯ incremental view maintenanceﺍﺳﺖ .ﺗﻐﻴﻴﺮﺍﺕ ﭘﺎﻳﮕﺎﻩ ﺩﺍﺩﻩ
ﺑﻪ ﺭﻭﺍﺑﻂ ﺑﺮﺍﻱ ﻣﺤﺎﺳﺒﻪ ﺗﻐﻴﻴﺮﺍﺕ materialized viewﺍﺳﺘﻔﺎﺩﻩ ﻣﻲ ﺷﻮﺩ ﻛﻪ ﺳﭙﺲ ﺏﺭﻭﺯ ﺭﺳﺎﻧﻲ
ﻣﻴﺸﻮﻧﺪ View Maintenance .ﻣﻲ ﺗﻮﺍﻧﺪ ﺑﺎ ﻣﺤﺮﻙ ﻫﺎﻱ ﺗﻌﺮﻳﻒ ﺩﺳﺘﻲ ﺩﺭ ﺩﺭﺝ ،ﺣﺬﻑ ،ﻭ ﺑﻪ
ﺭﻭﺯ ﺭﺳﺎﻧﻲ ﻫﺮ ﺭﺍﺑﻄﻪ ﺩﺭ view definitionﺍﻧﺠﺎﻡ ﺷﻮﺩ ﻭ ﻧﻮﺷﺘﻦ ﺩﺳﺘﻲ ﻛﺪ ﺑﺮﺍﻱ ﺏﺭﻭﺯ ﺭﺳﺎﻧﻲ
view wheneverﺭﻭﺍﺑﻂ ﭘﺎﻳﮕﺎﻩ ﺩﺍﺩﻩ ﻛﻪ ﺑﻪ ﺭﻭﺯ ﺷﺪﻩ ﺍﺳﺖ.
ﺭﻭﺵ ﻫﺎﻱ ﻓﻮﻕ ﺑﻪ ﻃﻮﺭ ﻣﺴﺘﻘﻴﻢ ﺗﻮﺳﻂ ﺑﺴﻴﺎﺭﻱ ﺍﺯ ﺳﻴﺴﺘﻢ ﻫﺎﻱ ﭘﺎﻳﮕﺎﻩ ﺩﺍﺩﻩ ﭘﺸﺘﻴﺒﺎﻧﻲ ﻣﻴﺸﻮﻧﺪ.
rﻭ updateﺑﺮﺍﻱ rﺩﺭ ﻧﻈﺮ ﺑﮕﻴﺮﻳﺪ . s = materialized view v •
new old
rﺗﻔﻜﻴﻚ ﻛﺮﺩﻥ ﻭﺿﻌﻴﺖ ﻫﺎﻱ oldﻭ newﺍﺯ ﺭﺍﺑﻄﻪ r • ﻭ Let rﻭ
• ﺣﺎﻻﺕ ﻳﻚ ﺩﺭﺝ ﺑﺮﺍﻱ rﺭﺍ ﺩﺭ ﻧﻈﺮ ﺑﮕﻴﺮﻳﺪ
new old
r )sas (r ∪ir • ﻣﺎ ﻣﻲ ﺗﻮﺍﻧﻴﻢ ﺑﻨﻮﻳﺴﻴﻢ s
old
(r • ﻭ ﺑﺎﺯﻧﻮﻳﺴﻲ ﺑﺎﻻ ﺑﺼﻮﺭﺕ)s) ∪ (ir s
old
(rﺳﺎﺩﻩ ﺷﺪﻩ ﺍﺭﺯﺵ oldﺍﺯ materialized viewﺍﺳﺖ ،ﺑﻨﺎﺑﺮﺍﻳﻦ • ﺍﻣﺎ )s
ﺗﻐﻴﻴﺮﺍﺕ incrementalﺑﺮﺍﻱ viewﻓﻘﻂ ir sﺍﺳﺖ.
new old
v ﺑﻨﺎﺑﺮﺍﻳﻦ ،ﺑﺮﺍﻱ ﺩﺭﺝ ﻫﺎ )= v ∪(ir s •
new old
v • ﺑﻪ ﻃﻮﺭ ﻣﺸﺎﺑﻪ ﺑﻪ ﺣﺬﻑ ﻫﺎ )= v –(dr s
182
new old
• )v = v - σθ(dr
• projectionﻳﻚ ﻋﻤﻠﻴﺎﺕ ﺩﺷﻮﺍﺭ ﺗﺮ ﺍﺳﺖ
• })R = (A,B), and r(R) = { (a,2), (a,3
• )∏A(rﻳﻚ ) tuple (aﻣﺠﺮﺩ ﺩﺍﺭﺩ.
• ﺍﮔﺮ ﻣﺎ ) tuple (a,2ﺭﺍ ﺍﺯ rﺣﺬﻑ ﻛﻨﻴﻢ ،ﻧﺒﺎﻳﺪ ) tuple (aﺍﺯ) ∏A(rﺣﺬﻑ ﺷﻮﺩ
) )Rﺭﺍ ﺣﺬﻑ ﺍﻣﺎ ﺍﮔﺮ) (a,3ﺑﺨﻮﺑﻲ ﺣﺬﻑ ﺷﺪ ﻣﺎ ﺑﺎﻳﺪ tupleﺭﺍ ﺣﺬﻑ ﻛﻨﻴﻢ .
• ﺑﺮﺍﻱ ﻫﺮ ﺗﺎﭘﻞ ﺩﺭ )projection ∏A(rﻣﺎ ﻳﻚ ﺗﻌﺪﺍﺩ ﺍﺯ ﺯﻣﺎﻥ ﻫﺎﻱ ﻣﺸﺘﻖ ﺷﺪﻩ ﺭﺍ ﻧﮕﻪ ﻣﻲ
ﺩﺍﺭﻳﻢ.
• ﺩﺭﺝ ﺩﺭ ﻳﻚ ﺗﺎﭘﻞ ،rﺍﮔﺮ ﺑﺮﺍﻳﻨﺪﺗﺎﭘﻞ ﺩﺭ ) ∏A(rﻭﺟﻮﺩ ﺩﺍﺷﺘﻪ ﺑﺎﺷﺪ ﻣﺎ ﺍﻓﺰﺍﻳﺶ ﺗﻌﺪﺍﺩ ﺭﺍ
ﺩﺍﺭﻳﻢ ،ﻭﮔﺮﻧﻪ ﻣﺎ ﺍﺿﺎﻓﻪ ﺷﺪﻥ ﻳﻚ ﺗﺎﭘﻞ ﺟﺪﻳﺪ ﺑﺎ count = 1ﺭﺍ ﺩﺍﺭﻳﻢ .
• ﺩﺭ ﻣﻮﺭﺩ ﺣﺬﻑ ﻳﻚ ﺗﺎﭘﻞ ﺍﺯ ،Rﻛﺎﻫﺶ ﻣﺘﻨﺎﻇﺮ ﺗﻌﺪﺍﺩ ﺗﺎﭘﻞ ﺩﺭ ) ∏A(rﺩﺍﺭﻳﻢ.
• ﺍﮔﺮ ﺗﻌﺪﺍﺩ 0ﺷﻮﺩ ،ﻣﺎ ﺗﺎﭘﻞ ﺭﺍ ﺍﺯ) ∏A(rﺣﺬﻑ ﻣﻲ ﻛﻨﻴﻢ.
ﻋﻤﻠﻴﺎﺕ ﺍﺩﻏﺎﻡ:
)(r
• v = Agcount(B) :count
• ﻫﻨﮕﺎﻣﻲ ﻛﻪ ﻳﻚ ﻣﺠﻤﻮﻋﻪ ﺍﻱ ﺍﺯ ﺗﺎﭘﻞ ﻫﺎ iﺩﺭﺝ ﻣﻴﺸﻮﻧﺪ.
r
• ﺑﺮﺍﻱ ﻫﺮ ﺗﺎﭘﻞ rﺩﺭ ،iﺍﮔﺮ ﮔﺮﻭﻩ ﻣﺘﻨﺎﻇﺮ ﺣﺎﺿﺮ ﺩﺭ Vﻭﺟﻮﺩ ﺩﺍﺷﺘﻪ ﺑﺎﺷﺪ،ﻣﺎ
r
ﺍﻓﺰﺍﻳﺶ countﺭﺍ ﺩﺍﺭﻳﻢ ،ﺩﺭ ﻏﻴﺮ ﺍﻳﻨﺼﻮﺭﺕ ﻣﺎ ﻳﻚ ﺗﺎﭘﻞ ﺟﺪﻳﺪ ﺑﺎ count
= 1ﺍﺿﺎﻓﻪ ﻣﻲ ﻛﻨﻴﻢ.
• ﻫﻨﮕﺎﻣﻲ ﻛﻪ ﻳﻚ ﻣﺠﻤﻮﻋﻪ ﺍﻱ ﺍﺯ ﺗﺎﭘﻞ ﻫﺎ dﺣﺬﻑ ﻣﻲ ﺷﻮﻧﺪ.
r
• ﺑﺮﺍﻱ ﻫﺮ ﺗﺎﭘﻞ tﺩﺭ iﻣﺎ ﮔﺮﻭﻩ t.Aﺭﺍ ﺩﺭ vﺟﺴﺘﺠﻮ ﻣﻲ ﻛﻨﻴﻢ ،ﻭ 1ﺭﺍ ﺍﺯ Count
r
ﮔﺮﻭﻩ ﻛﻢ ﻣﻲ ﻛﻨﻴﻢ.
• ﺍﮔﺮ 0 countﺷﻮﺩ ،ﺗﺎﭘﻞ ﺑﺮﺍﻱ ﮔﺮﻭﻩ t.Aﺍﺯ vﺭﺍ ﺣﺬﻑ ﻣﻲ
ﻛﻨﻴﻢ.
)(r
)v = Agsum(B • :sum
183
• ﻣﺎ ﺑﺮﺍﻱ ﺑﺮﻗﺮﺍﺭﻱ sumﺩﺭ ﻳﻚ ﺭﻭﺵ ﺳﺎﺩﻩ ،countﻣﺎ ﺑﺠﺰ add/substractﺩﺭ
ﺍﺭﺯﺵ Bﺑﻪ ﺍﺭﺯﺍﻱ adding/substractingﻣﻘﺪﺍﺭ 1ﺭﺍ ﺑﻪ countﻣﻲ ﺩﻫﻴﻢ.
tupelsﺭﺍ ﺣﻔﻆ • ﻋﻼﻭﻩ ﺑﺮ ﺍﻳﻦ ﻣﺎ countﻣﺮﺗﺒﻪ ﺷﻨﺎﺳﺎﻳﻲ ﮔﺮﻭﻩ ﻫﺎﻱ ﺑﺪﻭﻥ
ﻣﻴﻜﻨﻴﻢ .ﻣﺜﻞ ﮔﺮﻭﻩ ﻫﺎﻱ deletedﺍﺯ .v
• ﺑﺮﺍﻱ sumﻧﻤﻲ ﺗﻮﺍﻥ ﺑﻪ ﺳﺎﺩﮔﻲ ﺗﺴﺖ ﺍﻧﺠﺎﻡ ﺩﺍﺩ) .ﭼﺮﺍ؟(
• ﺑﻜﺎﺭ ﺑﺮﺩﻥ ،avgﻣﺎ ﻣﻘﺪﺍﺭ sumﻭ countﺭﺍ ﻧﮕﻪ ﻣﻲ ﺩﺍﺭﻳﻢ
ﺍﺩﻏﺎﻡ ﺍﺭﺯﺵ ﻫﺎ ﺑﺼﻮﺭﺕ ﺟﺪﺍﮔﺎﻧﻪ ﺍﺳﺖ ،ﻭ ﺩﺭ ﭘﺎﻳﺎﻥ ﺗﻘﺴﻴﻢ ﻣﻲ ﻛﻨﻴﻢ.
• Maxﻭv = Agmin(B) (r) : min
ﺑﻜﺎﺭ ﺑﺮﺩﻥ insertsﺩﺭ rﺑﺴﻴﺎﺭ ﺳﺎﺩﻩ ﻭ ﺁﺳﺎﻥ ﺍﺳﺖ. •
• ﻧﮕﻬﺪﺍﺭﻱ ﻣﺠﻤﻮﻉ ﺍﺭﺯﺵ ﻫﺎﻱ maxﻭ minﺩﺭ ﺣﺬﻑ ﻣﻤﻜﻦ ﺍﺳﺖ ﭘﺮ ﻫﺰﻳﻨﻪ
ﺑﺎﺷﺪ .ﻣﺎ ﺑﻘﻴﻪ tupelﻫﺎﻱ rﺏ ﺭﺍ ﻛﻪ ﺩﺭ ﮔﺮﻭﻩ ﻣﺸﺎﺑﻪ ﻫﺴﺘﻨﺪ ﺭﺍ ﺟﺴﺘﺠﻮ ﻣﻲ
ﻛﻨﻴﻢ ﻭ ﻣﻘﺪﺍﺭ minimumﺟﺪﻳﺪ ﺭﺍ ﭘﻴﺪﺍ ﻣﻲ ﻛﻨﻴﻢ.
ﺩﻳﮕﺮ ﻋﻤﻠﻴﺎﺕ :
• ﻣﺠﻤﻮﻋﻪv = r ∩s: intersection
• ﻫﻨﮕﺎﻣﻲ ﻳﻚ ﺗﺎﭘﻞ ﺩﺭ inserted، rﻣﻲ ﺷﻮﺩ ﻛﻪ ﻣﺎ ﭼﻚ ﻣﻲ ﻛﻨﻴﻦ ﺩﺭ sﺣﺎﺿﺮ
ﺍﺳﺖ ﺍﮔﺮ ﺣﺎﺿﺮ ﺑﻮﺩ ﺁﻥ ﺭﺍ ﺑﻪ vﺍﺿﺎﻓﻪ ﻣﻲ ﻛﻨﻴﻢ.
• ﺍﮔﺮ ﺗﺎﭘﻞ ﺍﺯ deletedﺣﺬﻑ ﺷﺪ ،ﻣﺎ ﺁﻥ ﺭﺍ ﺍﺯ intersectionﺣﺬﻑ ﻛﻨﻴﻢ ﺍﮔﺮ
ﺁﻥ ﺣﺎﺿﺮ ﺑﻮﺩ.
• Updateﻫﺎ ﺩﺭ sﻣﺘﻘﺎﺭﻥ ﻫﺴﺘﻨﺪ.
• ﺩﻳﮕﺮ ﻣﺠﻤﻮﻋﻪ ﻋﻤﻠﻴﺎﺕ ﻫﺎ union ،ﻭ ﻣﺠﻤﻮﻋﻪ ﻭ defferenceﻫﺴﺘﻨﺪ ﻛﻪ ﺩﺭ
ﻳﻚ ﺭﻭﺵ ﻣﺸﺎﺑﻪ ﺑﻜﺎﺭ ﻣﻲ ﺭﻭﻧﺪ .
• ﭘﻴﻮﻧﺪﻫﺎﻱ ﺑﻴﺮﻭﻧﻲ ﺩﺭ ﺭﻭﺵ ﻫﺎﻱ ﻣﺸﺎﺑﻪ ﭘﻴﻮﻧﺪﻫﺎ ﺑﻜﺎﺭ ﻣﻲ ﺭﻭﻧﺪ ﺍﻣﺎ ﺑﺎ ﺗﻌﺪﺍﺩﻱ ﻛﺎﺭ ﺍﺿﺎﻓﻲ .
• ﻣﺎ ﺍﺯﺟﺰﺋﻴﺎﺕ ﺻﺮﻑ ﻧﻈﺮ ﻣﻲ ﻛﻨﻴﻢ.
ﻛﺎﺭﺑﺮﺩ ﻋﺒﺎﺭﺍﺕ:
ﻫﺮ ﺯﻳﺮ • ﻋﺒﺎﺭﺍﺕ ﺩﺭﺳﺖ ﻭ ﻛﺎﻣﻞ ﺑﻜﺎﺭ ﻣﻲ ﺭﻭﺩ ،ﻣﺎ ﺑﺮﺍﻱ ﻣﺤﺎﺳﺒﻪ ﺻﻌﻮﺩﻱ ﻋﺒﺎﺭﺍﺕ ﻣﺸﺘﻖ ﻧﺘﻴﺠﻪ
ﻋﺒﺎﺭﺍﺕ ﺭﺍ ﺩﺭ ﻧﻈﺮ ﻣﻴﮕﻴﺮﻳﻢ ،ﺍﺯ ﻛﻮﭼﻜﺘﺮﻳﻦ ﺯﻳﺮ ﻋﺒﺎﺭﺕ ﺷﺮﻭﻉ ﻣﻲ ﻛﻨﻴﻢ .
184
• ﺑﻪ ﻋﻨﻮﺍﻥ ﻣﺜﺎﻝ E1E2 ،ﺭﺍ ﺩﺭ ﻧﻈﺮ ﺑﮕﻴﺮﻳﺪ ﻛﻪ ﺩﺭ ﺁﻥ ﻫﺮ ﻳﻚ ﺍﺯ E1ﻭ E2ﻣﻤﻜﻦ ﺍﺳﺖ ﻳﻚ ﻋﺒﺎﺭﺕ
ﭘﻴﭽﻴﺪﻩ ﺑﺎﺷﻨﺪ.
• ﻓﺮﺽ ﻛﻨﻴﺪ ﻣﺠﻤﻮﻋﻪ ﺍﻱ ﺍﺯ ﺗﺎﭘﻞ ﻫﺎ insertedﺩﺭ E1ﺗﻮﺳﻂ D1ﺩﺍﺩﻩ ﻣﻲ ﺷﻮﺩ.
• ﻣﺤﺎﺳﺒﻪ ﭘﻴﺸﺘﺮ ،ﺍﺯ ﻛﻮﭼﻜﺘﺮﻳﻦ ﺯﻳﺮ ﻋﺒﺎﺭﺍﺕ ﺍﻭﻝ ﺑﻪ ﻛﺎﺭ ﮔﺮﻓﺘﻪ ﺷﺪﻩ
ﺍﺳﺖ.
D1ﺩﺍﺩﻩ ﻣﻲ ﺷﻮﺩ • ﺳﭙﺲ ﻣﺠﻤﻮﻋﻪ ﺍﻱ ﺍﺯ ﺗﺎﭘﻞ ﻫﺎ insertedﺩﺭE1E2ﺗﻮﺳﻂ E2
• ﺍﻳﻦ ﺗﻨﻬﺎ ﻳﻚ ﺭﻭﺵ ﻣﻌﻤﻮﻝ ﻧﮕﻬﺪﺍﺭﻱ ﭘﻴﻮﻧﺪ ﻫﺎ ﺳﺖ .
185
• " :Index selectionﺑﻬﺘﺮﻳﻦ ﻣﺠﻤﻮﻋﻪ ﻱ ﺷﺎﺧﺼﻬﺎ ﺑﺮﺍﻱ ﺍﻳﺠﺎﺩ ﭼﻴﺴﺖ؟ "
• ﻧﺰﺩﻳﻚ ﺗﺮﻳﻦ ﺭﺍﺑﻄﻪmaterialized view selection ،
• ﺍﻣﺎ ﺳﺎﺩﻩ
• Materialized view selectionﻭ ﺍﻧﺘﺨﺎﺏ ﺷﺎﺧﺺ ﺑﺮ ﺍﺳﺎﺱ ﻧﻮﻉ ﺣﺠﻢ ﻛﺎﺭﺳﻴﺴﺘﻢ )ﻛﻮﺋﺮﻱ ﻫﺎ
ﻭ ﺑﻪ ﺭﻭﺯ ﺭﺳﺎﻧﻲ ﻫﺎ(
• ﻫﺪﻑ ﻧﻤﻮﻧﻪ :ﺑﻪ ﺣﺪﺍﻗﻞ ﺭﺳﺎﻧﺪﻥ ﺯﻣﺎﻥ ﺣﺠﻢ ﻛﺎﺭ ﺍﺟﺮﺍﻳﻲ ،ﻣﻮﺿﻮﻉ ﺑﻪ ﻣﺤﺪﻭﺩﻳﺖ ﺩﺭ
ﻓﻀﺎ ﻭ ﺯﻣﺎﻥ ﮔﺮﻓﺘﻪ ﺷﺪﻩ ﺑﺮﺍﻱ ﺑﺮﺧﻲ ﺍﺯ ﻛﻮﺋﺮﻱ ﻫﺎﻱ ﺑﺤﺮﺍﻧﻲ /ﺑﻪ ﺭﻭﺯ ﺭﺳﺎﻧﻲ ﻫﺎ
• ﻳﻜﻲ ﺍﺯ ﻣﺮﺍﺣﻞ ﺩﺭ ﺗﻨﻈﻴﻢ ﭘﺎﻳﮕﺎﻩ ﺩﺍﺩﻩ
• ﺑﻴﺸﺘﺮ ﺩﺭ ﻣﻮﺭﺩ ﺗﻨﻈﻴﻢ ﺩﺭ ﻓﺼﻞ ﺑﻌﺪ ﺻﺤﺒﺖ ﻣﻲ ﺷﻮﺩ
• ﺳﻴﺴﺘﻢ ﻫﺎﻱ ﭘﺎﻳﮕﺎﻩ ﺩﺍﺩﻩ ﺗﺠﺎﺭﻱ ﺗﻬﻴﻪ ﺍﺑﺰﺍﺭ )ﻧﺎﻣﻴﺪﻩ ﻣﻲ ﺷﻮﺩ "ﺩﺳﺘﻴﺎﺭﺍﻥ ﺗﻨﻈﻴﻢ " ﻭ ﻳﺎ »ﻧﺎﺑﻐﻪ ﻫﺎ "(
Materialized view ﺑﺮﺍﻱ ﻛﻤﻚ ﺑﻪ ﻣﺪﻳﺮﻳﺖ ﭘﺎﻳﮕﺎﻩ ﺩﺍﺩﻩ ﺍﻧﺘﺨﺎﺏ ﺷﺪﻩ ﭼﻪ ﺷﺎﺧﺺ ﻫﺎ ﻭ
ﺍﻳﺠﺎﺩﺷﻮﺩ.
Top-K Queries:
* select
from r, s
wherer.B = s.B
order byr.Aascending
limit 10
ﺟﺎﻳﮕﺰﻳﻦ :1ﺷﺎﺧﺺ ﺣﻠﻘﻪ ﻫﺎﻱ ﺗﻮ ﺩﺭ ﺗﻮ ﭘﻴﻮﻧﺪ ﺑﺎ rﺑﻪ ﻋﻨﻮﺍﻥ ﺧﺎﺭﺟﻲ
ﺟﺎﻳﮕﺰﻳﻦ :2ﺑﺮﺁﻭﺭﺩ ﺑﺎﻻﺗﺮﻳﻦ ﺍﺭﺯﺵ r.Aﺩﺭ ﻧﺘﻴﺠﻪ ﻭ ﺍﺿﺎﻓﻪ ﻛﺮﺩﻥ )selection (and r.A<= Hﺩﺭ
ﺁﻥ ﺑﻨﺪ .ﻭ ﺍﮔﺮ ﻧﺘﺎﻳﺞ ﻛﻤﺘﺮ ﺍﺯ10ﺑﺎﺷﺪ ،ﺳﻌﻲ ﻣﺠﺪﺩ ﺑﺎ Hﺑﺰﺭﮔﺘﺮ
186
update R set A = 5 * A
where A > 10
ﺍﮔﺮ ﺷﺎﺧﺺ ﺩﺭ Aﺑﺮﺍﻱ ﭘﻴﺪﺍ ﻛﺮﺩﻥ ﺗﺎﭘﻞ ﺭﺿﺎﻳﺖ A> 10ﺍﺳﺘﻔﺎﺩﻩ ﻣﻲ ﺷﻮﺩ،ﺗﺎﭘﻞ ﻫﺎﻱ ﺑﻼﻓﺎﺻﻠﻪ ﺑﻪ
ﺭﻭﺯ ﺷﺪﻩ ،ﻫﻤﺎﻥ ﺗﺎﭘﻞ ﻣﻤﻜﻦ ﺍﺳﺖ ﭼﻨﺪ ﺑﺎﺭ ﻳﺎﻓﺖ ﺷﻮﺩ .
• ﺭﺍﻩ ﺣﻞ :1ﺑﻪ ﺗﺎﺧﻴﺮ ﺍﻧﺪﺍﺧﺘﻦ ﻫﻤﻴﺸﻪ ﺏﺭﻭﺯ ﺭﺳﺎﻧﻲ ﻫﺎ
• ﺟﻤﻊ ﺁﻭﺭﻱ ﺏﺭﻭﺯ ﺭﺳﺎﻧﻲ ﻫﺎ )ﺍﺭﺯﺵ ﻫﺎﻱ ﻗﺪﻳﻤﻲ ﻭ ﺟﺪﻳﺪ ﺍﺯ ﺗﺎﭘﻞ ﻫﺎ( ﻭ ﺑﻪ ﺭﻭﺯ ﺭﺳﺎﻧﻲ ﺍﺭﺗﺒﺎﻁ ﻭ
ﺷﺎﺧﺺ ﺩﺭ ﮔﺬﺭ ﺩﻭﻡ
• ﺍﺷﻜﺎﻝ :ﺳﺮﺑﺎﺭ ﺍﺿﺎﻓﻲ ﺣﺘﻲ ﺍﮔﺮ ﺑﻪ ﻋﻨﻮﺍﻥ ﻣﺜﺎﻝ ،ﺑﻪ ﺭﻭﺯ ﺭﺳﺎﻧﻲ ﺗﻨﻬﺎ ﺩﺭ R.Bﺍﺳﺖ ،ﻧﻪ ﺩﺭ ﻭﻳﮋﮔﻲ ﺩﺭ
ﺷﺮﺍﻳﻂ ﺍﻧﺘﺨﺎﺏ.
• ﺭﺍﻩ ﺣﻞ :2ﺗﺎﺧﻴﺮ ﺗﻨﻬﺎ ﺩﺭ ﺻﻮﺭﺕ ﻟﺰﻭﻡ
• ﺍﻧﺠﺎﻡ ﺑﻪ ﺭﻭﺯ ﺭﺳﺎﻧﻲ ﻓﻮﺭﻱ ﺍﮔﺮ ﺑﻪ ﺭﻭﺯ ﺭﺳﺎﻧﻲ ﻭﻳﮋﮔﻲ ﻫﺎﻱ ﻛﻪ ﺩﺭ ﺁﻥ ﺑﻨﺪ ﺍﺳﺖ ﺗﺎﺛﻴﺮ ﻧﺪ ﺍﺷﺘﻪ ﺑﺎﺷﺪ ،ﻭ
ﺩﺭﻏﻴﺮ ﺍﻳﻦ ﺻﻮﺭﺕ ﺗﺎﺧﻴﺮ ﺑﻪ ﺭﻭﺯ ﺭﺳﺎﻧﻲ ﻫﺎ .
• Join minimization
selectr.A, r.B
from r, s
wherer.B = s.B
• ﺑﺮﺭﺳﻲ ﻛﻨﻴﺪ ﺍﮔﺮ ﭘﻴﻮﺳﺘﻦ ﺑﻪ sﺍﺳﺖ ،ﺁﻥ ﺣﺬﻑ ﺷﻮﺩ.
ﺑﻪ ﻋﻨﻮﺍﻥ ﻣﺜﺎﻝ ،ﺷﺮﻁ ﭘﻴﻮﻧﺪ ﻛﻠﻴﺪ ﺧﺎﺭﺟﻲ ﺍﺯ rﺑﻪsﺍﺳﺖ r.B ،ﺑﻪ ﻋﻨﻮﺍﻥ ﺗﻬﻲ ﻧﻴﺴﺖ ﺍﻋﻼﻡ ﻛﺮﺩ ،ﻭ ﻧﻪ
ﺍﻧﺘﺨﺎﺏ ﺍﺯ.s
ﺳﺎﻳﺮ ﺷﺮﺍﻳﻂ ﻛﺎﻓﻲ ﻣﻤﻜﻦ ﺍﺳﺖ:
selectr.A, s2.B
from r, s as s1, s as s2
wherer.B=s1.B andr.B = s2.B and s1.A < 20 and s2.A < 10
187
ﭘﻴﻮﺳﺘﻦ ﺑﻪ S1ﺯﻳﺎﺩﻱ ﺍﺳﺖ ﻭ ﻣﻲ ﺗﻮﺍﻧﺪ ﺩﻭﺭ ﺍﻧﺪﺍﺧﺘﻪ ﺷﻮﺩ )ﻫﻤﺮﺍﻩ ﺑﺎ ﺍﻧﺘﺨﺎﺏ ﺍﺯ .(S1
• ﺑﺴﻴﺎﺭﻱ ﺍﺯ ﭘﮋﻭﻫﺶ ﻫﺎ ﺩﺭ ﺍﻳﻦ ﻣﻨﻄﻘﻪ 70s/80sﺍﺳﺖ.
188
* select
from r natural join s
.a< $1 where
ﻣﻘﺪﺍﺭ ﭘﺎﺭﺍﻣﺘﺮ $1ﺩﺭ ﺯﻣﺎﻥ ﻛﺎﻣﭙﺎﻳﻞ ﻣﺸﺨﺺ ﺷﺪﻩ ﻧﻴﺴﺖ
• ﺗﻨﻬﺎ ﺩﺭ ﺯﻣﺎﻥ ﺍﺟﺮﺍ ﻣﺸﺨﺺ ﻣﻲ ﺷﻮﺩ
• ﺑﺮﻧﺎﻣﻪ ﻫﺎﻱ ﻣﺨﺘﻠﻒ ﻣﻤﻜﻦ ﺍﺳﺖ ﺑﺮﺍﻱ ﻣﻘﺎﺩﻳﺮ ﻣﺨﺘﻠﻒ ﺍﺯ $1ﻣﻄﻠﻮﺏ ﺑﺎﺷﺪ
• ﺭﺍﻩ ﺣﻞ :1ﺑﻬﻴﻨﻪ ﺳﺎﺯﻱ ﺩﺭ ﺯﻣﺎﻥ ﺍﺟﺮﺍ ،ﻫﺮ ﻛﻮﺋﺮﻱ ﺯﻣﺎﻥ ﺭﺍ ﻣﺸﺎﻫﺪﻩ ﻛﻨﻴﺪ
ﻣﻲ ﺗﻮﺍﻧﺪ ﭘﺮ ﻫﺰﻳﻨﻪ ﺑﺎﺷﺪ •
• ﺭﺍﻩ ﺣﻞ :2ﭘﺎﺭﺍﻣﺘﺮﻱ ﺑﻬﻴﻨﻪ ﺳﺎﺯﻱ ﻛﻮﺋﺮﻱ:
• ﺑﻬﻴﻨﻪ ﺳﺎﺯﻱ ﺗﻮﻟﻴﺪ ﻣﺠﻤﻮﻋﻪ ﺍﻱ ﺍﺯ ﺑﺮﻧﺎﻣﻪ ﻫﺎ ،ﻣﻨﺎﺳﺐ ﺑﺮﺍﻱ ﻣﻘﺎﺩﻳﺮ ﻣﺨﺘﻠﻒ ﺍﺯ $1
• ﻣﺠﻤﻮﻋﻪ ﺍﻱ ﺍﺯ ﺑﺮﻧﺎﻣﻪ ﻫﺎﻱ ﺑﻬﻴﻨﻪ ﻣﻌﻤﻮﻻ ﺑﺮﺍﻱ 1ﺗﺎ 3ﭘﺎﺭﺍﻣﺘﺮ ﻛﻮﭼﻚ
• ﻣﻮﺿﻮﻉ ﻛﻠﻴﺪﻱ :ﭼﮕﻮﻧﻪ ﭘﻴﺪﺍ ﻛﺮﺩﻥ ﻣﺠﻤﻮﻋﻪ ﺍﻱ ﺍﺯ ﺑﺮﻧﺎﻣﻪ ﻫﺎﻱ ﺑﻬﻴﻨﻪ ﻣﻮﺛﺮ
• ﻳﻜﻲ ﺍﺯ ﺑﻬﺘﺮﻳﻦ ﺍﻳﻦ ﻣﺠﻤﻮﻋﻪ ﻫﺎ ﺍﻳﻦ ﺍﺳﺖ ﻛﻪ $1ﻣﺸﺨﺺ ﺩﺭ ﺯﻣﺎﻥ ﺍﺟﺮﺍ ﺍﻧﺘﺨﺎﺏ ﺷﻮﺩ
• ﺭﺍﻩ ﺣﻞ :3ﺫﺧﻴﺮﻩ ﺳﺎﺯﻱ ﻃﺮﺡ ﻛﻮﺋﺮﻱ
• ﺍﮔﺮ ﺑﻬﻴﻨﻪ ﺳﺎﺯ ﺗﺼﻤﻴﻢ ﻣﻲ ﮔﻴﺮﺩ ﻛﻪ ﻃﺮﺡ ﻫﻤﺎﻥ ﺑﺎﺷﺪ ﺑﻪ ﺍﺣﺘﻤﺎﻝ ﺯﻳﺎﺩ ﺑﻪ ﺑﻬﻴﻨﻪ ﻛﺮﺩﻥ ﺑﺮﺍﻱ
ﺗﻤﺎﻡ ﻣﻘﺎﺩﻳﺮ ﭘﺎﺭﺍﻣﺘﺮ ﻣﻲ ﭘﺮﺩﺍﺯﺩ ،ﺁﻥ ﻃﺮﺡ ﺭﺍ ﺫﺧﻴﺮﻩ ﻭ ﺩﻭﺑﺎﺭﻩ ﺑﺎﺯﻳﺎﺑﻲ ﻣﻴﻜﻨﺪ،ﻭﮔﺮﻧﻪ ﺩﻭﺑﺎﺭﻩ ﺑﻬﻴﻨﻪ
ﺳﺎﺯﻱ ﻫﺮ ﺯﻣﺎﻥ ﺍﻧﺠﺎﻡ ﻣﻴﺸﻮﺩ.
• ﺍﺟﺮﺍ ﺩﺭ ﺑﺴﻴﺎﺭﻱ ﺍﺯ ﺳﻴﺴﺘﻢ ﻫﺎﻱ ﭘﺎﻳﮕﺎﻩ ﺩﺍﺩﻩ
• ﭼﻪ ﻣﻲ ﺷﻮﺩ ﺍﮔﺮ ٪95ﺍﺯ ﺑﺮﻧﺎﻣﻪ ﻫﺎﻱ ﺳﺮﻳﻊ ﺩﺭ ﭘﺎﻳﮕﺎﻩ ﺩﺍﺩﻩ /ﺑﻬﻴﻨﻪ ﺳﺎﺯ ﻧﺴﺨﻪ N +1ﻧﺴﺒﺖ ﺑﻪ
Nﺑﺎﺷﻨﺪ،ﺍﻣﺎ 5ﺩﺭﺻﺪ ﻛﻨﺪﺗﺮ ﻫﺴﺘﻨﺪ؟
• ﭼﺮﺍ ﺑﺎﻳﺪ ﺑﺮﻧﺎﻣﻪ ﻫﺎﻱ ﻛﻨﺪﺗﺮ ﺑﻬﻴﻨﻪ ﺳﺎﺯ ﺟﺪﻳﺪ ﻭ ﺑﻬﺒﻮﺩ ﻳﺎﺑﻨﺪ؟
• ﺟﻮﺍﺏ :ﺩﻭ ﺍﺷﺘﺒﺎﻫﺎﺕ ﻣﻲ ﺗﻮﺍﻧﺪ ﻳﻚ ﺩﺭﺳﺖ ﺭﺍ ﺑﺴﺎﺯﺩ،ﺩﺭﺳﺖ ﻛﺮﺩﻥ ﻳﻚ ﺍﺷﺘﺒﺎﻩ ﻣﻲ
ﺗﻮﺍﻧﺪ ﺍﻭﺿﺎﻉ ﺭﺍ ﺑﺪﺗﺮ!
• ﺭﻭﺵ ﻫﺎ:
189
• ﻧﻜﺎﺕ ﺑﻪ ﺗﻨﻈﻴﻢ ﻛﻮﺋﺮﻱ ﻫﺎ ﺍﺟﺎﺯﻩ ﻣﻴﺪﻫﺪ
• ﻣﻬﺎﺟﺮﺕ ﺑﺮﺍﻱ ﺳﻴﺴﺘﻢ ﻫﺎﻱ ﺑﺰﺭگ ﺑﺪﻭﻥ ﺩﺳﺘﺮﺳﻲ ﺑﻪ ﻛﺪ ﻣﻨﺒﻊ ﻛﺎﺭﺑﺮﺩﻱ ﻧﻴﺴﺖ .
• ﺗﻨﻈﻴﻢ ﺳﻄﺢ ﺑﻬﻴﻨﻪ ﺳﺎﺯﻱ ،ﺑﻪ ﻃﻮﺭ ﭘﻴﺶ ﻓﺮﺽ ﻧﺴﺨﻪ ) Nﺍﻭﺭﺍﻛﻞ(
• ﻭ ﻣﻬﺎﺟﺮﺕ ﻳﻚ ﻛﻮﺋﺮﻱ ﺩﺭ ﺯﻣﺎﻥ ﭘﺲ ﺍﺯ ﺁﺯﻣﺎﻳﺶ ﻫﺮ ﺩﻭ ﻃﺮﺡ ﺩﺭ ﺑﻬﻴﻨﻪ ﺳﺎﺯ ﺟﺪﻳﺪ
• ﺻﺮﻓﻪ ﺟﻮﻳﻲ ﺩﺭ ﻃﺮﺡ ﻧﺴﺨﻪ Nﻭ ﺩﺍﺩﻥ ﻧﺴﺨﻪ ﺑﻬﻴﻨﻪ N +1
• XML , Sybaseﻧﻤﺎﻳﻨﺪﻩ ﻃﺮﺡ ﻫﺎ ﻫﺴﺘﻨﺪ)SQLﺳﺮﻭﺭ(
190
191
192
193