Skip to content

Commit e79af98

Browse files
committed
2024.12.11: modfiy heading of some docs
1 parent 029fa6a commit e79af98

File tree

11 files changed

+465
-332
lines changed

11 files changed

+465
-332
lines changed

categories/develop/index.xml

Lines changed: 68 additions & 48 deletions
Large diffs are not rendered by default.

index.xml

Lines changed: 68 additions & 48 deletions
Large diffs are not rendered by default.

post/develop/database/spatial-index/index.html

Lines changed: 25 additions & 19 deletions
Large diffs are not rendered by default.

post/develop/javascript/typescript-common/index.html

Lines changed: 56 additions & 43 deletions
Large diffs are not rendered by default.

post/index.xml

Lines changed: 68 additions & 48 deletions
Large diffs are not rendered by default.

tags/database/index.xml

Lines changed: 22 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,16 @@
2323
<svg viewBox="0 0 28 23" height="100%" width="19" xmlns="http://www.w3.org/2000/svg"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71" fill="none" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71" fill="none" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2"/></svg>
2424
</a>
2525
</span>
26-
</h1><p><a href="https://github.com/orm712/CS-712">CS 스터디</a>에서 12월 12일 발표 예정인 <a href="https://github.com/orm712/CS-712/blob/main/08-JAVASCRIPT/16_Typescript/Readme.md">공간 인덱스</a>에 대해 정리하고, 이를 실습해본 문서를 블로그에 공유하고자 한다.</p>
26+
</h1><hr>
27+
<p><a href="https://github.com/orm712/CS-712">CS 스터디</a>에서 12월 12일 발표 예정인 <a href="https://github.com/orm712/CS-712/blob/main/08-JAVASCRIPT/16_Typescript/Readme.md">공간 인덱스</a>에 대해 정리하고, 이를 실습해본 문서를 블로그에 공유하고자 한다.</p>
2728
<h1 id="공간-인덱스spatial-index란" ><code>공간 인덱스(Spatial Index)</code>란?
2829
<span>
2930
<a href="#%ea%b3%b5%ea%b0%84-%ec%9d%b8%eb%8d%b1%ec%8a%a4spatial-index%eb%9e%80">
3031
<svg viewBox="0 0 28 23" height="100%" width="19" xmlns="http://www.w3.org/2000/svg"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71" fill="none" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71" fill="none" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2"/></svg>
3132
</a>
3233
</span>
33-
</h1><ul>
34+
</h1><hr>
35+
<ul>
3436
<li><code>공간 데이터(Spatial Data)</code>를 지원하는 데이터베이스에서 <code>공간 쿼리(Spatial Query)</code><code>최적화</code>하기 위해 사용되는 <code>인덱스</code>
3537
<ul>
3638
<li>기존의 <code>인덱스</code>는 데이터들을 <code>선형 순서</code>로 정렬해 조회 속도를 최적화하는 반면, <code>2차원/3차원 공간 상의 데이터</code>들을 정렬하기 위해 <code>R-Tree</code>와 같은 자료구조를 사용</li>
@@ -80,7 +82,7 @@
8082
</ul>
8183
</li>
8284
</ul>
83-
<h4 id="epsg4326---wgs-84httpsepsgio4326" ><a href="https://epsg.io/4326"><code>EPSG:4326 - WGS 84</code></a>
85+
<h4 id="epsg4326---wgs-84httpsepsgio4326" >EPSG:4326 - WGS 84<a href="https://epsg.io/4326">#</a>
8486
<span>
8587
<a href="#epsg4326---wgs-84httpsepsgio4326">
8688
<svg viewBox="0 0 28 23" height="100%" width="19" xmlns="http://www.w3.org/2000/svg"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71" fill="none" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71" fill="none" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2"/></svg>
@@ -91,7 +93,7 @@
9193
<li><code>GPS</code>, <code>Google Earth</code> 등에서 사용됨</li>
9294
<li><code>각도(Degree)</code><code>단위</code>로 함</li>
9395
</ul>
94-
<h4 id="epsg3857---wgs-84--pseudo-mercator--spherical-mercatorhttpsepsgio3857" ><a href="https://epsg.io/3857">EPSG:3857 - WGS 84 / Pseudo-Mercator / Spherical Mercator</a>
96+
<h4 id="epsg3857---wgs-84--pseudo-mercator--spherical-mercatorhttpsepsgio3857" >EPSG:3857 - WGS 84 / Pseudo-Mercator / Spherical Mercator<a href="https://epsg.io/3857">#</a>
9597
<span>
9698
<a href="#epsg3857---wgs-84--pseudo-mercator--spherical-mercatorhttpsepsgio3857">
9799
<svg viewBox="0 0 28 23" height="100%" width="19" xmlns="http://www.w3.org/2000/svg"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71" fill="none" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71" fill="none" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2"/></svg>
@@ -112,16 +114,17 @@
112114
<svg viewBox="0 0 28 23" height="100%" width="19" xmlns="http://www.w3.org/2000/svg"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71" fill="none" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71" fill="none" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2"/></svg>
113115
</a>
114116
</span>
115-
</h3><ul>
117+
</h3><hr>
118+
<ul>
116119
<li><code>MySQL</code>에는 크게 <code>단일 지오메트리 값</code>을 저장할 수 있는 자료형과 <code>지오메트리 값의 집합</code>을 저장할 수 있는 자료형으로 나뉨</li>
117120
</ul>
118-
<h3 id="wkb와-wkt" >WKB와 WKT
121+
<h4 id="wkb와-wkt" >WKB와 WKT
119122
<span>
120123
<a href="#wkb%ec%99%80-wkt">
121124
<svg viewBox="0 0 28 23" height="100%" width="19" xmlns="http://www.w3.org/2000/svg"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71" fill="none" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71" fill="none" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2"/></svg>
122125
</a>
123126
</span>
124-
</h3><ul>
127+
</h4><ul>
125128
<li><code>OpenGIS</code>에서는 <code>기하학적 객체</code>의 표현을 위해 <code>WKT(Well-Known Text)</code> 포맷과 <code>WKB(Well-Known Binary)</code> 포맷을 사용
126129
<ul>
127130
<li><code>MySQL</code>에서는 내부적으로 지오메트리 값을 WKT, WKB가 아닌 다른 포맷을 사용해 저장
@@ -136,13 +139,13 @@
136139
</ul>
137140
</li>
138141
</ul>
139-
<h4 id="wktwell-known-text" >WKT(Well-Known Text)
142+
<h5 id="wktwell-known-text" >WKT(Well-Known Text)
140143
<span>
141144
<a href="#wktwell-known-text">
142145
<svg viewBox="0 0 28 23" height="100%" width="19" xmlns="http://www.w3.org/2000/svg"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71" fill="none" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71" fill="none" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2"/></svg>
143146
</a>
144147
</span>
145-
</h4><ul>
148+
</h5><ul>
146149
<li>지오메트리 값을 <code>ASCII</code> 형태로 교환하기 위해 설계됨</li>
147150
<li><code>OpenGIS</code> 사양에서는 <code>WKT</code>값 작성을 위한 <code>배커스-나우르</code> 문법을 제공</li>
148151
<li>자료형에 따라 필요한 점의 갯수는 다르지만 X-Y 좌표 값을 <code>(X Y)</code> 형태로, 즉 쉼표가 아닌 공백을 통해 구분하는 문법을 공통적으로 사용함
@@ -166,13 +169,13 @@
166169
</ul>
167170
</li>
168171
</ul>
169-
<h4 id="wkbwell-known-binary" >WKB(Well-Known Binary)
172+
<h5 id="wkbwell-known-binary" >WKB(Well-Known Binary)
170173
<span>
171174
<a href="#wkbwell-known-binary">
172175
<svg viewBox="0 0 28 23" height="100%" width="19" xmlns="http://www.w3.org/2000/svg"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71" fill="none" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71" fill="none" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2"/></svg>
173176
</a>
174177
</span>
175-
</h4><ul>
178+
</h5><ul>
176179
<li><code>지오메트리 WKB 정보</code>를 담고있는 <code>BLOB</code> 형태의 <code>이진 스트림</code> 형태로 지오메트리 값을 교환하기 위해 사용됨</li>
177180
<li><code>WKB</code>는 1바이트의 <code>unsigned Integer</code>(<code>byte order</code>), 4바이트의 <code>unsigned Integer</code>(<code>WKB type</code>), 8바이트의 <code>배정밀도(double precision) 숫자 값</code>(<code>X, Y 좌표</code>)들을 사용
178181
<ul>
@@ -215,7 +218,8 @@
215218
<svg viewBox="0 0 28 23" height="100%" width="19" xmlns="http://www.w3.org/2000/svg"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71" fill="none" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71" fill="none" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2"/></svg>
216219
</a>
217220
</span>
218-
</h4><ul>
221+
</h4><hr>
222+
<ul>
219223
<li><code>GEOMETRY</code>는 어떤 유형의 지오메트리 값이든 저장할 수 있으며, 나머지 단일 값 유형은 특정 도형의 유형으로 값을 제한함</li>
220224
</ul>
221225
<h5 id="geometry" >GEOMETRY
@@ -338,7 +342,8 @@
338342
<svg viewBox="0 0 28 23" height="100%" width="19" xmlns="http://www.w3.org/2000/svg"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71" fill="none" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71" fill="none" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2"/></svg>
339343
</a>
340344
</span>
341-
</h4><ul>
345+
</h4><hr>
346+
<ul>
342347
<li><code>GEOMETRYCOLLECTION</code>은 모든 유형의 객체 집합을 저장할 수 있으며, 나머지 집합 자료형은 집합 멤버를 특정 도형 유형을 가진 멤버로 제한함</li>
343348
</ul>
344349
<h5 id="multipoint" >MULTIPOINT
@@ -403,7 +408,8 @@
403408
<svg viewBox="0 0 28 23" height="100%" width="19" xmlns="http://www.w3.org/2000/svg"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71" fill="none" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71" fill="none" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2"/></svg>
404409
</a>
405410
</span>
406-
</h2><h3 id="공간-인덱스와-비공간-인덱스" >공간 인덱스와 비공간 인덱스
411+
</h2><hr>
412+
<h3 id="공간-인덱스와-비공간-인덱스" >공간 인덱스와 비공간 인덱스
407413
<span>
408414
<a href="#%ea%b3%b5%ea%b0%84-%ec%9d%b8%eb%8d%b1%ec%8a%a4%ec%99%80-%eb%b9%84%ea%b3%b5%ea%b0%84-%ec%9d%b8%eb%8d%b1%ec%8a%a4">
409415
<svg viewBox="0 0 28 23" height="100%" width="19" xmlns="http://www.w3.org/2000/svg"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71" fill="none" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71" fill="none" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2"/></svg>
@@ -454,7 +460,8 @@
454460
<svg viewBox="0 0 28 23" height="100%" width="19" xmlns="http://www.w3.org/2000/svg"><path d="M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71" fill="none" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2"/><path d="M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71" fill="none" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2"/></svg>
455461
</a>
456462
</span>
457-
</h3><ul>
463+
</h3><hr>
464+
<ul>
458465
<li><code>옵티마이저</code><code>WHERE</code>절에서 <code>MBRContains()</code>, <code> MBRWithin()</code>와 같은 함수를 사용하는 쿼리에 대해, 가용한 <code>공간 인덱스</code>를 검색에 포함할 수 있는지 조사</li>
459466
<li>따라서 <code>공간 인덱스</code>를 사용하는 함수를 통해 탐색할 row의 범위를 줄이면 <code>최적화가 가능</code></li>
460467
<li>예시

0 commit comments

Comments
 (0)