์ด์ ๋ถ๋ถ์์ (
์ค์ ๋ก ํฌ์ ๋ฐฐ์ด์ ํฌ๊ธฐ๊ฐ ๋๋ฌด ์ปค์ ๋์ผํ ์์๋ก ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ ์ ํ ํ์๊ฐ ์๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ต๋๋ค. ๋ฐ๋ผ์ ๋์ผํ ๊ฐ์ ์ ์ฅํ๋ ๋ฐ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ญ๋น๋์ง ์๋ ๋ฐฉ์์ผ๋ก ํฌ์ ๋ฐฐ์ด์ ๊ตฌํํ๋ ๊ฒ์ด ํฉ๋ฆฌ์ ์
๋๋ค.
์ผ๋ถ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์๋ ์ธ์ด ์์ฒด์ ํฌ์ ๋ฐฐ์ด์ด ํฌํจ๋์ด ์์ต๋๋ค.
์ ์ญ ๋ณ์๋ ๋ค์๊ณผ ๊ฐ์ ์ด์ ๋ก ํฌ์ ๋ฐฐ์ด์ ๊ตฌํํ๊ธฐ์ ์ข์ ํ๋ณด์
๋๋ค.
- ํน์ ๋ ธ๋์ ๊ฐ๋ง ์ ์ฅํ๊ณ ์ ์๋์ง ์์ ๋ ธ๋์ ๊ฐ์ ์ ์ฅํ์ง ์์ต๋๋ค.
- ๋
ธ๋์ ๊ฐ์ ์ก์ธ์คํ๊ธฐ ์ํ ์ธํฐํ์ด์ค๋ ๋ค์ฐจ์ ๋ฐฐ์ด ์์์ ๋ํ ์ก์ธ์ค๋ฅผ ๊ตฌํํ๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด ์์ ๋งค์ฐ ์ ์ฌํฉ๋๋ค.
Set ^a(1, 2, 3)=5 Write ^a(1, 2, 3)
- ๊ธ๋ก๋ฒ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ธฐ ์ํ ์๋นํ ๋ฎ์ ์์ค์ ๊ตฌ์กฐ์ด๋ฏ๋ก ๋ฐ์ด๋ ์๋ ํน์ฑ์ ๊ฐ์ง๊ณ ์์ต๋๋ค(ํ๋์จ์ด์ ๋ฐ๋ผ ์ด๋น ์์ญ๋ง์์ ์์ฒ๋ง ๊ฑด์ ํธ๋์ญ์
, ์๋ ์ฐธ์กฐ).
1 )
์ ์ญ์ ์ง์์ ์ธ ๊ตฌ์กฐ์ด๊ธฐ ๋๋ฌธ์ RAM์ ์์ด ์ถฉ๋ถํ์ง ์๋ค๋ ๊ฒ์ ๋ฏธ๋ฆฌ ์๊ณ ์๋ ๊ฒฝ์ฐ ์ ์ญ ๋ฐฐ์ด์ ํฌ์ ๋ฐฐ์ด์ ๋ง๋๋ ๊ฒ์ด ํฉ๋ฆฌ์ ์ ๋๋ค.
ํฌ์ ๋ฐฐ์ด ๊ตฌํ์ ์์ฑ ์ค ํ๋๋ ์ ์๋์ง ์์ ์ ์ ์ก์ธ์คํ๋ ๊ฒฝ์ฐ ์ผ๋ถ ๊ธฐ๋ณธ๊ฐ์ ๋ฐํํ๋ ๊ฒ์ ๋๋ค.
์ด๋ ํจ์๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌํํ ์ ์์ต๋๋ค.
SET a = $GET(^a(x,y,z), defValue)
ํฌ์ ๋ฐฐ์ด์ด ํ์ํ ์์ ์ ๋ฌด์์ด๋ฉฐ ์ ์ญ์ด ์ด๋ป๊ฒ ๋์์ด ๋ ์ ์์ต๋๊น?
์ธ์ (์ฐ๊ฒฐ) ๋งคํธ๋ฆญ์ค
๋ถ๋ช
ํ ๊ทธ๋ํ๊ฐ ํด์๋ก ํ๋ ฌ์ XNUMX์ด ๋ ๋ง์์ง๋๋ค. ์๋ฅผ ๋ค์ด, ์์
๋คํธ์ํฌ ๊ทธ๋ํ๋ฅผ ๋น์ทํ ํ๋ ฌ์ ํํ๋ก ํํํ๋ค๋ฉด ๊ฑฐ์ ์ ์ ์ผ๋ก XNUMX์ผ๋ก ๊ตฌ์ฑ๋ ๊ฒ์
๋๋ค. ํฌ์ ๋ฐฐ์ด์ด ๋ฉ๋๋ค.
Set ^m(id1, id2) = 1
Set ^m(id1, id3) = 1
Set ^m(id1, id4) = 1
Set ^m(id1) = 3
Set ^m(id2, id4) = 1
Set ^m(id2, id5) = 1
Set ^m(id2) = 2
....
์ด ์์์๋ ์ ์ธ๊ณ์ ์ผ๋ก ์ ์ฅํฉ๋๋ค. ^m ์ฐ๊ฒฐ์ฑ ๋งคํธ๋ฆญ์ค์ ๊ฐ ๋ ธ๋์ ์์ง ์(๋๊ฐ ๋๊ตฌ์ ์น๊ตฌ์ธ์ง, ์น๊ตฌ ์).
๊ทธ๋ํ์ ์์ ์๊ฐ 29๋ง ๊ฐ ์ดํ์ธ ๊ฒฝ์ฐ(์ด ์ซ์๋ 8 *์ ๊ณฑ์ผ๋ก ๊ฐ์ฃผ๋ฉ๋๋ค.
๋นํธ ๋ฌธ์์ด์ ์ฌ์ฉํ ์กฐ์์ ํจ์์ ์ํด ์ํ๋ฉ๋๋ค.
; ัััะฐะฝะพะฒะบะฐ ะฑะธัะฐ
SET $BIT(rowID, positionID) = 1
; ะฟะพะปััะตะฝะธะต ะฑะธัะฐ
Write $BIT(rowID, positionID)
์ํ ๋จธ์ ์ ํ ํ ์ด๋ธ
์ ํ ์คํ ๋งํ์ ์ ์ด ๊ทธ๋ํ๋ ์ผ๋ฐ ๊ทธ๋ํ์ด๋ฏ๋ก ์ ํ ์คํ ๋งํ์ ์ ์ด ํ ์ด๋ธ์ ์์์ ์ค๋ช ํ ์ธ์ ํ๋ ฌ๊ณผ ๋์ผํฉ๋๋ค.
์ ๋ฃฐ๋ฌ ์คํ ๋งํ
๊ฐ์ฅ ์ ๋ช
ํ ์ธํฌ์๋์ธํ์
์คํฐ๋ธ ์ธํ๋จ(Stephen Wolfram)์ ์ธํฌ ์๋์ธํ์ด ๋ค์๊ณผ ๊ฐ๋ค๊ณ ๋ฏฟ์ต๋๋ค.
์ปดํจํฐ์์ ์คํ ๊ฐ๋ฅํ ๋ชจ๋ ์๊ณ ๋ฆฌ์ฆ์ ์ ๋ฃฐ๋ฌ ์๋ ์ฅ์น๋ฅผ ์ฌ์ฉํ์ฌ ๊ตฌํํ ์ ์๋ค๋ ๊ฒ์ด ์ ์ฆ๋์์ต๋๋ค. ์ ๋ฃฐ๋ฌ ์คํ ๋งํ๋ ๋์ ํ๊ฒฝ๊ณผ ์์คํ ์ ๋ชจ๋ธ๋งํ๊ณ , ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ณ , ๊ธฐํ ๋ชฉ์ ์ผ๋ก ์ฌ์ฉ๋ฉ๋๋ค.
๊ฑฐ๋ํ ํ๋๊ฐ ์๊ณ ์ ๋ฃฐ๋ฌ ์๋ ์ฅ์น์ ๋ชจ๋ ์ค๊ฐ ์ํ๋ฅผ ๊ธฐ๋กํด์ผ ํ๋ค๋ฉด ์ ์ญ์ ์ฌ์ฉํ๋ ๊ฒ์ด ํฉ๋ฆฌ์ ์ ๋๋ค.
์ง๋ ์์ฑ
ํฌ์ ๋ฐฐ์ด์ ์ฌ์ฉํ ๋ ๊ฐ์ฅ ๋จผ์ ๋ ์ค๋ฅด๋ ๊ฒ์ ๋งคํ ์์ ์ ๋๋ค.
์ผ๋ฐ์ ์ผ๋ก ์ง๋์๋ ๋น ๊ณต๊ฐ์ด ๋ง์ด ์์ต๋๋ค. ์ง๋๊ฐ ํฐ ํฝ์ ๋ก ํํ๋๋ค๋ฉด ์ง๊ตฌ ํฝ์ ์ 71%๊ฐ ๋ฐ๋ค๊ฐ ์ฐจ์งํ๊ฒ ๋ฉ๋๋ค. ํฌ์ ๋ฐฐ์ด. ๊ทธ๋ฆฌ๊ณ ์ฌ๋์ ์์ผ๋ก ๋ง๋ ์ํ๋ง ์ ์ฉํ๋ฉด ๋น ๊ณต๊ฐ์ด 95% ์ด์์ด ๋ฉ๋๋ค.
๋ฌผ๋ก ๋์คํฐ ๋ฐฐ์ด ํํ๋ก ์ง๋๋ฅผ ์ ์ฅํ๋ ์ฌ๋์ ์์ผ๋ฉฐ ๋ฒกํฐ ํํ์ด ์ฌ์ฉ๋ฉ๋๋ค.
๊ทธ๋ฐ๋ฐ ๋ฒกํฐ ์ง๋๋ ๋ฌด์์
๋๊น? ์ด๊ฒ์ ์ผ์ข
์ ํ๋ ์๊ณผ ์ ์ผ๋ก ๊ตฌ์ฑ๋ ํด๋ฆฌ๋ผ์ธ๊ณผ ํด๋ฆฌ๊ณค์
๋๋ค.
๋ณธ์ง์ ์ผ๋ก ํฌ์ธํธ์ ํฌ์ธํธ ๊ฐ์ ์ฐ๊ฒฐ์ ๋ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์
๋๋ค.
๊ฐ์ฅ ์ผ์ฌ ์ฐฌ ๋งคํ ์๋ฌด ์ค ํ๋๋ ์ฐ๋ฆฌ ์ํ๊ณ๋ฅผ ๋งคํํ๋ ๊ฐ์ด์ ๋ง์๊ฒฝ ์๋ฌด์ ๋๋ค. ๋น ์ ์ ์ผ๋ก ๋งํ๋ฉด, ์ฐ๋ฆฌ ์ํ๊ณ๋ ์ ์ฒด ์ฐ์ฃผ์ ๋ง์ฐฌ๊ฐ์ง๋ก ์ฐ์์ ์ธ ํฌ์ ๋ฐฐ์ด์ ๋๋ค. ํฌ๊ทํ ์์ ์ ์ธ ๋ณ์ด ์๋ ๊ฑฐ๋ํ ๊ณตํ ๊ณต๊ฐ์ ๋๋ค. ๋น ๊ณต๊ฐ์ 99,999999โฆโฆ.%์ ๋๋ค. ์ฐ๋ฆฌ ์ํ๊ณ์ ์ง๋๋ฅผ ์ ์ฅํ๊ธฐ ์ํด ๊ธ๋ก๋ฒ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ธ Cachรฉ๊ฐ ์ ํ๋์์ต๋๋ค.
์ด ํ๋ก์ ํธ์ ์ ์ญ ๋ณ์์ ์ ํํ ๊ตฌ์กฐ๋ฅผ ๋ชจ๋ฅด์ง๋ง ๋ค์๊ณผ ์ ์ฌํ๋ค๊ณ ๊ฐ์ ํ ์ ์์ต๋๋ค.
Set ^galaxy(b, l, d) = 1; ะะพะผะตั ะทะฒะตะทะดั ะฟะพ ะบะฐัะฐะปะพะณั, ะตัะปะธ ะตััั
Set ^galaxy(b, l, d, "name") = "Sun"
Set ^galaxy(b, l, d, "type") = "normal" ; ะฒะฐัะธะฐะฝัั blackhole, quazar, red_dwarf ะธ ั.ะด.
Set ^galaxy(b, l, d, "weight") = 14E50
Set ^galaxy(b, l, d, "planetes") = 7
Set ^galaxy(b, l, d, "planetes", 1) = "Mercury"
Set ^galaxy(b, l, d, "planetes", 1, weight) = 1E20
...
์ฌ๊ธฐ์ b, l, d๋
์ ์ญ์ ์ ์ฐํ ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ๋ฉด ์ ์ญ์ ๊ธฐ๋ฐ์ด ๊ตฌ์ฑํ๊ฐ ์๊ธฐ ๋๋ฌธ์ ๋ณ๊ณผ ํ์ฑ์ ํ์ํ ํน์ฑ์ ์ ์ฅํ ์ ์์ต๋๋ค.
์ฐ๋ฆฌ ์ฐ์ฃผ์ ์ง๋๋ฅผ ์ ์ฅํ๊ธฐ ์ํด Cachรฉ๋ ์ ์ฐ์ฑ๋ฟ๋ง ์๋๋ผ ๋ฐ์ดํฐ ์คํธ๋ฆผ์ ๋งค์ฐ ๋น ๋ฅด๊ฒ ์ ์ฅํ๋ ๋์์ ๋น ๋ฅธ ๊ฒ์์ ์ํด ์ธ๋ฑ์ค ์ ์ญ์ ์์ฑํ๋ ๋ฅ๋ ฅ ๋๋ฌธ์ ์ ํ๋์์ต๋๋ค.
์ฐ๋ฆฌ๊ฐ ์ง๊ตฌ๋ก ๋์์ค๋ฉด ์ ์ธ๊ณ์ ์ง๋ ์ ์ ํ๋ก์ ํธ๊ฐ ์์ฑ๋ฉ๋๋ค.
์ต๊ทผ์
OpenStreetMap XAPI์์ ๊ธ๋ก๋ฒ ๊ณต๊ฐ ์ธ๋ฑ์ค ๊ตฌํ
์์ ์ฐ์ ์ฌ์ง
์ ์ฒด ์ง๊ตฌ๋ณธ์ ์ ์ฌ๊ฐํ, ํ์ ์ ์ฌ๊ฐํ์ผ๋ก ๋๋๊ณ ํ์ ์ ์ฌ๊ฐํ์ ํ์ ํ์ ์ ์ฌ๊ฐํ ๋ฑ์ผ๋ก ๋๋ฉ๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ์ฐ๋ฆฌ๋ ์์ฑ๋ ์ ์ญ ๋ณ์๋ฅผ ์ ์ฅํ๊ธฐ ์ํ ๊ณ์ธต์ ๊ตฌ์กฐ๋ฅผ ์ป์ต๋๋ค.
์ธ์ ๋ ์ง ์ํ๋ ์คํ์ด๋ฅผ ๊ฑฐ์ ์ฆ๊ฐ์ ์ผ๋ก ์์ฒญํ๊ฑฐ๋ ์ญ์ ํ ์ ์์ผ๋ฉฐ, ๋ชจ๋ ํ์ ์คํ์ด๋ ๋ฐํ๋๊ฑฐ๋ ์ญ์ ๋ฉ๋๋ค.
์ ์ญ์ ๋ํ ์ ์ฌํ ์ฒด๊ณ๋ ์ฌ๋ฌ ๊ฐ์ง ๋ฐฉ๋ฒ์ผ๋ก ๊ตฌํ๋ ์ ์์ต๋๋ค.
์ต์ 1 :
Set ^m(a, b, a, c, d, a, b,c, d, a, b, a, c, d, a, b,c, d, a, 1) = idะะตัะฒะพะนะขะพัะบะธ
Set ^m(a, b, a, c, d, a, b,c, d, a, b, a, c, d, a, b,c, d, a, 2) = idะัะพัะพะนะขะพัะบะธ
...
์ต์ 2 :
Set ^m('abacdabcdabacdabcda', 1) = idะะตัะฒะพะนะขะพัะบะธ
Set ^m('abacdabcdabacdabcda', 2) = idะัะพัะพะนะขะพัะบะธ
...
๋ ๊ฒฝ์ฐ ๋ชจ๋ COS/M์ ์ฌ์ฉํ์ฌ ๋ชจ๋ ๋ ๋ฒจ์ ์ฌ๊ฐํ์ ์์นํ ํฌ์ธํธ๋ฅผ ์์ฒญํ๋ ๊ฒ์ ์ด๋ ต์ง ์์ต๋๋ค. ์ฒซ ๋ฒ์งธ ์ต์ ์์๋ ๋ชจ๋ ์์ค์์ ์ ์ฌ๊ฐํ ๊ณต๊ฐ์ ์ฒญ์ํ๋ ๊ฒ์ด ๋ค์ ์ฌ์ธ ์ ์์ง๋ง ์ด๋ ๊ฑฐ์ ํ์ํ์ง ์์ต๋๋ค.
๋ฎ์ ์์ค์ ์ฌ๊ฐํ ์ค ํ๋์ ์:
๋ค์์ XAPI ํ๋ก์ ํธ์ ์ฌ๋ฌ ์ ์ญ ํญ๋ชฉ์
๋๋ค. ์ ์ญ ํญ๋ชฉ์ ๋ํ ์ธ๋ฑ์ค ํํ์
๋๋ค.
๊ธ๋ก๋ฒ ^๋ฐฉ์ ํฌ์ธํธ๋ฅผ ์ ์ฅํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค.
์ ์ญ์์ ํฌ์ ๋ฐฐ์ด ์ฌ์ฉ์ ๋๋ต์ ์ผ๋ก ๋ถ๋ฅํฉ๋๋ค.
- ํน์ ๊ฐ์ฒด์ ์ขํ์ ์ํ(๋งคํ, ์ ๋ฃฐ๋ฌ ์คํ ๋งํ)๋ฅผ ์ ์ฅํฉ๋๋ค.
- ํฌ์ ํ๋ ฌ์ ์ ์ฅํฉ๋๋ค.
2)์ ๊ฒฝ์ฐ ์์์ ๊ฐ์ด ํ ๋น๋์ง ์์ ํน์ ์ขํ๋ฅผ ์์ฒญํ ๋ ๊ธฐ๋ณธ ํฌ์ ๋ฐฐ์ด ์์์ ๊ฐ์ ๊ฐ์ ธ์์ผ ํฉ๋๋ค.
๋ค์ฐจ์ ํ๋ ฌ์ ์ ์ญ์ ์ ์ฅํ ๋ ๋ฐ๋ ๋ณด๋์ค
ํ, ํ๋ฉด, ํ๋ธ ๋ฑ์ ๋ฐฐ์์ธ ๊ณต๊ฐ ์กฐ๊ฐ์ ๋น ๋ฅด๊ฒ ์ ๊ฑฐ ๋ฐ/๋๋ ์ ํํฉ๋๋ค. ์ ์ ์ธ๋ฑ์ค๊ฐ ์ฌ์ฉ๋๋ ๊ฒฝ์ฐ ํ, ํ๋ฉด, ํ๋ธ ๋ฑ์ ๋ฐฐ์์ธ ๊ณต๊ฐ ๋ฉ์ด๋ฆฌ๋ฅผ ์ ์ํ๊ฒ ์ ๊ฑฐ ๋ฐ/๋๋ ๊ฐ์ ธ์ค๋ ๊ธฐ๋ฅ์ด ์ ์ฉํ ์ ์์ต๋๋ค.
ํ
๊ทธ๋ฆผ์ ์ ์ญ ๋ฐฐ์ด์ XNUMX์ฐจ์ ๋ฐฐ์ด์ ๋ณด์ฌ์ค๋๋ค. ^a ๋ค์ํ ์ ํ์ ์ญ์ ๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
์๋ ค์ง ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ์ฌ ๊ณต๊ฐ ์กฐ๊ฐ์ ์ ํํ๋ ค๋ฉด ๋ค์ ๋ช
๋ น์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ด ๋ณ์์ ํ๋ ฌ ์ด ์ ํ:
; ะะฐะดะฐะดะธะผ ัััั
ะผะตัะฝัะน ัะฐะทัะตะถะตะฝะฝัะน ะผะฐััะธะฒ 3x3x3
Set ^a(0,0,0)=1,^a(2,2,0)=1,^a(2,0,1)=1,^a(0,2,1)=1,^a(2,2,2)=1,^a(2,1,2)=1
Merge Column = ^a(2,2)
; ะัะฒะตะดะตะผ ะฟะตัะตะผะตะฝะฝัั Column
Zwrite Column
๊ฒฐ๋ก :
Column(0)=1
Column(2)=1
Column ๋ณ์์ ๋ํ ํฅ๋ฏธ๋ก์ด ์ ์ ํฌ์ ๋ฐฐ์ด๋ ์๋ค๋ ๊ฒ์
๋๋ค. ์ด ๋ฐฐ์ด์ ๋ค์์ ํตํด ์ก์ธ์คํด์ผ ํฉ๋๋ค.
๊ณต๊ฐ ์ ํ์ ๊ธฐ๋ฅ์ ์ฌ์ฉํ์ฌ ์์ ํ๋ก๊ทธ๋จ์ ํตํด ์ํํ ์๋ ์์ต๋๋ค.
๊ฒฐ๋ก
ํ์ฌ ์๋๋ ์๋ก์ด ์ผ์ฌ์ฐฌ ๊ณผ์ ๋ฅผ ์ ์ํ๊ณ ์์ต๋๋ค. ๊ทธ๋ํ๋ ์์ญ์ต ๊ฐ์ ์ ์ ์ผ๋ก ๊ตฌ์ฑ๋ ์ ์๊ณ , ์ง๋๋ ์์ญ์ต ๊ฐ์ ์ ์ผ๋ก ๊ตฌ์ฑ๋ ์ ์์ผ๋ฉฐ, ์ผ๋ถ๋ ์
๋ฃฐ๋ฌ ์คํ ๋งํ์์ ์์ฒด ์ฐ์ฃผ๋ฅผ ์คํํ๊ธฐ๋ฅผ ์ํ ์๋ ์์ต๋๋ค(
ํฌ์ ๋ฐฐ์ด์ ๋ฐ์ดํฐ ๋ณผ๋ฅจ์ด ๋ ์ด์ RAM์ ๋ง์ง ์์ง๋ง ์ด๋ฅผ ์ฌ์ฉํ์ฌ ์์ ํด์ผ ํ๋ ๊ฒฝ์ฐ ์ ์ญ ๋ฐ COS์์ ์ ์ฌํ ํ๋ก์ ํธ๋ฅผ ๊ตฌํํ ๊ฐ๋ฅ์ฑ์ ๊ณ ๋ คํด ๋ณผ ๊ฐ์น๊ฐ ์์ต๋๋ค.
๊ด์ฌ์ ๊ฐ์ ธ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค! ๋๊ธ๋ก ์ฌ๋ฌ๋ถ์ ์ง๋ฌธ๊ณผ ํฌ๋ง์ฌํญ์ ๊ธฐ๋ค๋ฆฌ๊ณ ์์ต๋๋ค.
์ฑ
์ ๋ถ์ธ: ์ด ๊ธฐ์ฌ์ ์ด์ ๋ํ ๋ด ์๊ฒฌ์ ๋ด ์๊ฒฌ์ด๋ฉฐ InterSystems Corporation์ ๊ณต์ ์
์ฅ๊ณผ ๊ด๋ จ์ด ์์ต๋๋ค.
์ถ์ฒ : habr.com