bulk-data-and-index

ํ…Œ์ด๋ธ” ์ƒ์„ฑ

User(id, name, rank, money, start_date, last_login)

# rank: 1-10
# money: 1-99999999
# nickname: ํ•œ๊ธ€ 2-10๊ธ€์ž 
# start_date: 2019๋…„ 1์›” 1์ผ ๋ถ€ํ„ฐ ํ˜„์žฌ๊ฐ’ ๋žœ๋ค
# last_login: null ํ—ˆ์šฉ, 2020๋…„ 4์›” 1์ผ๋ถ€ํ„ฐ ํ˜„์žฌ
  • rank ๊ฐ’์€ ๊ต‰์žฅํžˆ ๋งŽ์€ ์ปฌ๋Ÿผ๋“ค์ด ์ค‘๋ณต๋  ๊ฒƒ์ด๋‹ค.

    • 1-10 ์œผ๋กœ ๋„ฃ์œผ๋ฉด, ๋ถ„ํฌ๊ฐ€ 10์œผ๋กœ ๋ชฐ๋ฆด ๊ฒƒ.

    • ๊ทธ๋Ÿผ ์ด ๋ถ€๋ถ„์„ ์–ด๋–ป๊ฒŒ ์ฝ”๋“œ๋กœ ์ฒ˜๋ฆฌํ•ด์ค„ ์ˆ˜ ์žˆ์„๊นŒ?

  • ๋ฐ์ดํ„ฐ ๋งˆ๋‹ค, ๋ถ„ํฌ๊ฐ€ ๋‹ค๋ฅด๋‹ค.

  • ๋ชฉํ‘œ 4๋ฐฑ๋งŒ๊ฑด์˜ ๋ฐ์ดํ„ฐ๋ฅผ CSV ํŒŒ์ผ๋กœ ์ƒ์„ฑํ•ด๋ณด์ž

js ํŒŒ์ผ

function main() {
  let data = "name,rank,money,start_date,last_login\n";
  for (let i = 0; i < 200000; i++) {
    data += randName() + ",";
    data += randomRank() + ",";
    data += randomMoney() + ",";
    data += randomDate(new Date("2019-01-01"), new Date(), false) + ",";
    data += randomDate(new Date("2020-04-01"), new Date(), true);
    data += "\n";
  }
  console.log(data);
}

function randName() {
  let text = "";
  let first =
    "๊น€์ด๋ฐ•์ตœ์ •๊ฐ•์กฐ์œค์žฅ์ž„ํ•œ์˜ค์„œ์‹ ๊ถŒํ™ฉ์•ˆ์†ก๋ฅ˜์ „ํ™๊ณ ๋ฌธ์–‘์†๋ฐฐ์กฐ๋ฐฑํ—ˆ์œ ๋‚จ์‹ฌ๋…ธ์ •ํ•˜๊ณฝ์„ฑ์ฐจ์ฃผ์šฐ๊ตฌ์‹ ์ž„๋‚˜์ „๋ฏผ์œ ์ง„์ง€์—„์ฑ„์›์ฒœ๋ฐฉ๊ณต๊ฐ•ํ˜„ํ•จ๋ณ€์—ผ์–‘๋ณ€์—ฌ์ถ”๋…ธ๋„์†Œ์‹ ์„์„ ์„ค๋งˆ์ฃผ์—ฐ๋ฐฉ์œ„ํ‘œ๋ช…๊ธฐ๋ฐ˜์™•๋ชจ์žฅ๋‚จํƒ๊ตญ์—ฌ์ง„๊ตฌ";
  let last =
    "๊ฐ€๊ฐ•๊ฑด๊ฒฝ๊ณ ๊ด€๊ด‘๊ตฌ๊ทœ๊ทผ๊ธฐ๊ธธ๋‚˜๋‚จ๋…ธ๋ˆ„๋‹ค๋‹จ๋‹ฌ๋‹ด๋Œ€๋•๋„๋™๋‘๋ผ๋ž˜๋กœ๋ฃจ๋ฆฌ๋งˆ๋งŒ๋ช…๋ฌด๋ฌธ๋ฏธ๋ฏผ๋ฐ”๋ฐ•๋ฐฑ๋ฒ”๋ณ„๋ณ‘๋ณด์‚ฌ์‚ฐ์ƒ์ƒˆ์„œ์„์„ ์„ค์„ญ์„ฑ์„ธ์†Œ์†”์ˆ˜์ˆ™์ˆœ์ˆญ์Šฌ์Šน์‹œ์‹ ์•„์•ˆ์• ์—„์—ฌ์—ฐ์˜์˜ˆ์˜ค์˜ฅ์™„์š”์šฉ์šฐ์›์›”์œ„์œ ์œค์œจ์œผ์€์˜์ด์ต์ธ์ผ์ž์ž”์žฅ์žฌ์ „์ •์ œ์กฐ์ข…์ฃผ์ค€์ค‘์ง€์ง„์ฐฌ์ฐฝ์ฑ„์ฒœ์ฒ ์ดˆ์ถ˜์ถฉ์น˜ํƒํƒœํƒํŒํ•˜ํ•œํ•ดํ˜ํ˜„ํ˜•ํ˜œํ˜ธํ™ํ™”ํ™˜ํšŒํšจํ›ˆํœ˜ํฌ์šด๋ชจ๋ฐฐ๋ถ€๋ฆผ๋ด‰ํ˜ผํ™ฉ๋Ÿ‰๋ฆฐ์„๋น„์†œ๊ณต๋ฉดํƒ์˜จ๋””ํ•ญํ›„๋ ค๊ท ๋ฌต์†ก์šฑํœด์–ธ๋“ค๊ฒฌ์ถ”๊ฑธ์‚ผ์—ด์›…๋ถ„๋ณ€์–‘์ถœํƒ€ํฅ๊ฒธ๊ณค๋ฒˆ์‹๋ž€๋”์†์ˆ ๋ฐ˜๋นˆ์‹ค์ง์•…๋žŒ๊ถŒ๋ณต์‹ฌํ—Œ์—ฝํ•™๊ฐœํ‰๋Š˜๋ž‘ํ–ฅ์šธ๋ จ";

  for (var i = 0; i < 1; i++)
    text += first.charAt(Math.floor(Math.random() * first.length));
  for (var i = 0; i < 2; i++)
    text += last.charAt(Math.floor(Math.random() * last.length));

  return text;
}

function randomRank() {
  return Math.floor(Math.random() * 10) + 1;
}

function randomMoney() {
  return Math.floor(Math.random() * 99999998 + 1);
}

function getFormatDate(date) {
  var year = date.getFullYear(); //yyyy
  var month = 1 + date.getMonth(); //M
  month = month >= 10 ? month : "0" + month; //month ๋‘์ž๋ฆฌ๋กœ ์ €์žฅ
  var day = date.getDate(); //d
  day = day >= 10 ? day : "0" + day; //day ๋‘์ž๋ฆฌ๋กœ ์ €์žฅ
  return year + "-" + month + "-" + day;
}

function randomDate(startDate, endDate, nullOk) {
  if (nullOk && Math.random() > 0.5) {
    return "null";
  }
  return getFormatDate(
    new Date(+startDate + Math.random() * (endDate - startDate))
  );
}

main();
  • node hello.js > hello.csv

  • node๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ๋„ˆ๋ฌด ๋งŽ์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑํ•˜๋ฉด... ํ„ฐ์งˆ์ˆ˜๋„ ์žˆ์Œ.

๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ ๋„ฃ๊ธฐ

  • ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์ž๊ฐ€ ๊ต‰์žฅํžˆ ๋งŽ์ด ํ•˜๋Š” ์ž‘์—…

  • ์™ธ๋ถ€์—์„œ ์ œ๊ณต๋˜๋Š” CSV ๋ฐ์ดํ„ฐ๋ฅผ ์„œ๋ฒ„์— ๋„ฃ๋Š” ์ž‘์—…์„ ์ฃผ๊ธฐ ์ ์œผ๋กœ ํ•œ๋‹ค.

  • batch ๋“ฑ์„ ์ด์šฉํ•˜๊ธฐ๋„ ํ•จ.

  • mysql ์˜ load data local infile ๋ช…๋ น์„ ์ด์šฉํ•จ.

  • ํ‚ค์›Œ๋“œ : Bulk Insert!

  • ํ˜น์€ Jetbrain์˜ DataGrip ์„ ์ด์šฉํ•˜๋ฉด ์ข€ ๋” ํŽธํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ๊ธฐ๋„ ํ•จ.

๊ฒ€์ƒ‰ํ•˜๊ธฐ

  • ๊ฐ๊ฐ์˜ ํ•„๋“œ์— ๋Œ€ํ•ด ์ง€์ •๊ฒ€์ƒ‰, ๋ฒ”์œ„๊ฒ€์ƒ‰, count()๋“ฑ์„ ์‹คํ–‰ํ•ด ๋ณด๊ณ  ์„ฑ๋Šฅ์„ ๋น„๊ต

  • ํŠน์ • ํ•„๋“œ์— ๋Œ€ํ•ด ์ •๋ ฌ์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ์„ฑ๋Šฅ์„ ๋น„๊ต

column()
์ง€์ •๊ฒ€์ƒ‰ (no index)
์ง€์ •๊ฒ€์ƒ‰(with index)
๋ฒ”์œ„๊ฒ€์ƒ‰(no index)
๋ฒ”์œ„ ๊ฒ€์ƒ‰(with index)

id

29ms

25ms

name

1s 27ms

44ms

39ms

87ms

rank

45ms

47ms

50ms

72ms

money

860ms

39ms

49ms

71ms

start_date

100ms

47ms

55ms

73ms

last_login

53ms

52ms

48ms

79ms

count()
์ง€์ •๊ฒ€์ƒ‰ (no index)
์ง€์ •๊ฒ€์ƒ‰(with index)
๋ฒ”์œ„๊ฒ€์ƒ‰(no index)
๋ฒ”์œ„ ๊ฒ€์ƒ‰(with index)

id

25ms

21ms

name

723ms

40ms

664ms

53ms

rank

615ms

89ms

627ms

455ms

money

597ms

36ms

630ms

565ms

start_date

681ms

38ms

688ms

200ms

last_login

671ms

38ms

694ms

116ms

์ •๋ ฌ
ASC (no index)
DESC (no index)
ASC (with index)
DESC ๊ฒ€์ƒ‰(with index)

id

47ms

49ms

name

1s 802ms

1s 833ms

42ms

55ms

rank

1s 105ms

1s 105ms

43ms

51ms

money

1s 100ms

1s 114ms

47ms

55ms

start_date

1s 129ms

1s 125ms

53ms

56ms

last_login

1s 140ms

1s 163ms

49ms

54ms

ํ˜„์žฌ ์œ„ ๋ฐ์ดํ„ฐ๋Š”, ์ •ํ™•ํ•˜์ง€ ์•Š๋‹ค, ์•„๋งˆ๋„ ๋ฐ์ดํ„ฐ ๊ฐฏ์ˆ˜๋ฅผ ์ ๊ฒŒ ํ•ด์„œ ๊ทธ๋Ÿฐ๋“ฏ.

์ธ๋ฑ์Šค ์ƒ์„ฑ ๋ฐ ์„ฑ๋Šฅ ๋น„๊ต

์ธ๋ฑ์Šค๋ž€?

  • ํ…Œ์ด๋ธ”์—์„œ ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋น ๋ฅด๊ฒŒ ์ฐพ๊ธฐ ์œ„ํ•œ ์ƒ‰์ธ ํ˜น์€ ํ…Œ์ด๋ธ”์˜ ์‚ฌ๋ณธ

  • B-tree ์ž๋ฃŒ๊ตฌ์กฐ๋กœ ๋˜์–ด์žˆ์Œ.

์ธ๋ฑ์Šค ์ƒ์„ฑ ๋ฐฉ๋ฒ•

CREATE INDEX ์ธ๋ฑ์Šค์ด๋ฆ„ ON ํ…Œ์ด๋ธ”์ด๋ฆ„ (ํ•„๋“œ์ด๋ฆ„1, ํ•„๋“œ์ด๋ฆ„2, ...)
  • ์–ธ์ œ ์ธ๋ฑ์Šค๋ฅผ ๋งŒ๋“ฌ? SELECT๋ฅผ ๋งŽ์ด ์“ธ ๋•Œ, ์žˆ์œผ๋ฉด ์ข‹์Œ.

  • Covering Index : ์ธ๋ฑ์Šค๊ฐ€ ๋ชจ๋“  ๊ฒƒ์„ ์ฒ˜๋ฆฌํ–ˆ๋‹ค.

  • ์ธ๋ฑ์Šค๋ฅผ ๋งŒ๋“œ๋ฉด, Secondary Index๊ฐ€ ๋งŒ๋“ค์–ด์ง.

  • Secondary Index

    • K(ํŠน์ • ํ•„๋“œ๊ฐ’) -- V(PK)

    • ํŠน์ • ํ•„๋“œ๊ฐ’์„ SELECT ํ•„๋“œ.... ํ•˜๋ฉด ๋ชจ๋“  ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•˜์ง€ ์•Š์•„๋„, ์ธ๋ฑ์Šค์—๋งŒ ์ ‘๊ทผํ•˜๊ฒŒ๋จ

  • Seconday Index ๋ฅผ ์ƒ์„ฑํ•˜๋ฉด, ์‹ค์ œ 7ํŽ˜์ด์ง€ 3(Secondary Index) + 3(Primary Index) + 1(data page) ๋ฅผ ์ฝ์–ด์•ผ ํ•ด๋‹น ๊ฐ’์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Œ.

์ธ๋ฑ์Šค ์ƒ์„ฑ ํ›„ ์ •๋ ฌ ์„ฑ๋Šฅ์€ ์–ด๋–ป๊ฒŒ ๋ณ€ํ•˜๋Š”๊ฐ€?

  • ์ „๋ฐ˜์ ์œผ๋กœ ๊ฐœ์„ ๋จ.

  • ์™œ? ๋ฏธ๋ฆฌ PK๋ฅผ ์ •๋ ฌํ•ด๋†“๊ธฐ ๋•Œ๋ฌธ์— ์ข‹์•„์ง„๋‹ค.

  • Oracle, Postsql, MsSQL์€ ํ™•์‹คํ•œ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค

    • MySQL์€ ๊ฐ„๋‹จํ•œ ์ฟผ๋ฆฌ์—์„œ ๊ฐ€์žฅ ๋น ๋ฅด๋‹ค. ์™œ? ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜๊ฐ€ 1๊ฐœ์— ๊ฐ€๊น๋‹ค.

    • ๊ทธ๋ ‡์ง€๋งŒ Oracle ๊ฐ™์€ ๊ฒฝ์šฐ, ์ฟผ๋ฆฌ๋ฅผ ์‹คํ–‰ํ•˜๋ ค๊ณ  ๋ช…๋ น์„ ์คฌ์„ ๊ฒฝ์šฐ์—, ์–ด๋–ค API๊ฐ€ ๊ฐ€์žฅ ๋น ๋ฅผ์ง€ ์ƒ๊ฐํ•˜๊ณ  ์‹คํ–‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋Š๋ฆผ.

    • ํ•˜์ง€๋งŒ ๋ณต์žกํ•œ ์ฟผ๋ฆฌ์ผ ๊ฒฝ์šฐ Oracle์ด ํ›จ์”ฌ ๋น ๋ฅด๋‹ค. ์ฆ‰ ๋น„๊ต ๋Œ€์ƒ์ด ์•„๋‹˜.

๋ชจ๋“  ํ•„๋“œ๋“ค์˜ ๊ฒ€์ƒ‰ ์„ฑ๋Šฅ์€ ๋™์ผํ•œ๊ฐ€?

  • ์•„๋‹ˆ๋‹ค.

  • ํŠนํžˆ char file์˜ ์„ฑ๋Šฅ์ด ๋‹ค๋ฅธ ํ•„๋“œ์— ๋น„ํ•ด ๋‹ค๋ฅด๋‹ค

์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฌด์กฐ๊ฑด ์„ฑ๋Šฅ์ด ๊ฐœ์„ ๋˜๋Š”๊ฐ€?

  • ์•„๋‹ˆ๋‹ค.

  • column์˜ ๋ฒ”์œ„ ๊ฒ€์ƒ‰์„ ํ–ˆ์„ ๊ฒฝ์šฐ์—๋Š” ์„ฑ๋Šฅ์ด ์ €ํ•˜๋˜๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ์Œ.

์˜ค๋ฆ„์ฐจ์ˆœ / ๋‚ด๋ฆผ์ฐจ์ˆœ ์ •๋ ฌ์˜ ์„ฑ๋Šฅ์€ ๋™์ผํ•œ๊ฐ€?

  • ์ธ๋ฑ์Šค ์—†์ด ์ •๋ ฌํ•  ๊ฒฝ์šฐ์—๋Š” ๊ฑฐ์˜ ๋น„์Šทํ•˜๋‹ค๊ณ  ๋ณด์—ฌ์ง

  • ๊ทธ๋ ‡์ง€๋งŒ ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ•œ๋‹ค๋ฉด, ์˜ค๋ฆ„์ฐจ์ˆœ์ด ๋‚ด๋ฆผ์ฐจ์ˆœ ๋ณด๋‹ค ์กฐ๊ธˆ ๋น ๋ฅด๋‹ค๊ณ  ์ƒ๊ฐ๋จ

  • ์™œ ๊ทธ๋Ÿด๊นŒ?

    • ๊ทธ๋ƒฅ ์ƒ๊ฐํ•ด๋ณด๋ฉด ๊ธฐ๋ณธ์ ์ธ ์ •๋ ฌ์€ ์˜ค๋ฆ„์ฐจ์ˆœ์ด๊ธฐ ๋•Œ๋ฌธ์—, ์ข€ ๋” ์ตœ์ ํ™” ๋˜์–ด ์žˆ์ง€ ์•Š์„๊นŒ?

    • MySQL์˜ B-tree๊ฐ€ document์ƒ์—๋Š” ์–‘๋ฐฉํ–ฅ ์—ฐ๊ฒฐ์ด๋ผ ๋˜์–ด์žˆ์ง€๋งŒ, ์‹ค์ œ๋กœ๋Š” ๋‹จ๋ฐฉํ–ฅ ์—ฐ๊ฒฐ์ด๊ธฐ์—, backward index๊ฐ€ ๋” ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฐ๋‹ค.

์ฐธ๊ณ  : https://tech.kakao.com/2018/06/19/mysql-ascending-index-vs-descending-index/

Selectivity๋ž€ ๋ฌด์—‡์ผ๊นŒ?

  • ๋ถ„ํฌ๋„, ํŠน์ • ์ปฌ๋Ÿผ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ํ‰๊ท ์ ์œผ๋กœ ๋ถ„ํฌ ๋˜์–ด ์žˆ๋Š” ์ •๋„๋ฅผ ์˜๋ฏธํ•จ.

  • ์ธ๋ฑ์Šค๋กœ ์ ์ •ํ•œ ๋ถ„ํฌ๋„๋Š” 10~15%

  • ๊ณ„์‚ฐ์‹ : 1/ํ•ด๋‹น ์ปฌ๋Ÿผ์˜ distinct ๋ฐ์ดํ„ฐ ๊ฐœ์ˆ˜ * 100

  • ๋ถ„ํฌ๋„๋Š” ๊ดœ์ฐฎ์ง€๋งŒ ์ฆ‰ ์ ์ •ํ•˜์ง€๋งŒ, ๋ฐ์ดํ„ฐ์˜ ๋ถ„ํฌ๊ฐ€ ๋ถˆ๊ท ํ˜•ํ•˜๋‹ค๋ฉด, ์ธ๋ฑ์Šค๋กœ ๋งŒ๋“ค์ง€ ์•Š๋Š” ๊ฒƒ์ด ๋‚˜์„ ์ˆ˜๋„ ์žˆ์Œ.

  • ๋ถ„ํฌ๋„๊ฐ€ ์ข‹๋‹ค๋Š” ์˜๋ฏธ๋Š”, ์„œ๋กœ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ์˜ ๊ฐ’์ด ์ค‘๋ณต์—†์ด ์กด์žฌํ•œ๋‹ค๋Š” ๋ง.

    • ํšŒ์› ํ…Œ์ด๋ธ”์— 1๋งŒ๊ฑด์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๋‹ค๊ณ  ๊ฐ€์ •

    • ํšŒ์› id๋Š” ๊ณ ์œ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ถ„ํฌ๋„๋Š” 1/10,000 * 100 ์ฆ‰ 1%์ด๊ณ 

    • ์‹œ๋„๊ตฌ๋ถ„ ์ปฌ๋Ÿผ ๊ฐ™์€ ๊ฒฝ์šฐ์—๋Š” ์ค‘๋ณต์ด ๋งŽ์ด ๋  ์ˆ˜ ์žˆ๊ณ , 10๊ฐœ์˜ ์‹œ๋„ ๊ตฌ๋ถ„์ด ์žˆ๋‹ค๋ฉด 1,000/10,000 * 100 10%์ž„์„ ์•Œ ์ˆ˜ ์žˆ์Œ.

  • ์„ฑ๋ณ„ ๊ฐ™์€ ๊ฒฝ์šฐ์—๋Š” ๋ถ„ํฌ๋„๊ฐ€ ์•ˆ์ข‹์Œ.

    • ์™œ? ๋‚จ ํ˜น์€ ์—ฌ์ด๊ธฐ ๋•Œ๋ฌธ์—

    • 5,000 /10,000 * 100 =50%

    • ์„ฑ๋ณ„์„ ํฌํ•จ์—์„œ ์ธ๋ฑ์Šค๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒฝ์šฐ, ์ด๋ฆ„ - ๋‚˜์ด - ์„ฑ๋ณ„ ๊ฐ™์ด, ๋ถ„ํฌ๋„๊ฐ€ ์•ˆ์ข‹์€ ๊ฒƒ๋“ค ๊ทธ๋Ÿฌ๋‹ˆ๊นŒ ๊ฒน์น  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์€ ๊ฒƒ๋“ค์„ ๋’ค์ชฝ์— ๋„ฃ๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.

    • ์™œ? ์ฐจ๋ก€๋Œ€๋กœ check ํ•˜๋ฏ€๋กœ.

๋ณตํ•ฉ ์ธ๋ฑ์Šค ์ƒ์„ฑ ๋ฐ ์„ฑ๋Šฅ ๋น„๊ต

  • ๋ณตํ•ฉ ์ธ๋ฑ์Šค๋Š” ์ˆœ์„œ๊ฐ€ ์ค‘์š”ํ•˜๋‹ค.

  • (Rank , Date) vs (Date, Rank) ๋‹ค๋ฅด๋‹ค!

  • ๋‹ค์Œ์‹œ๊ฐ„์—!

์ถ”๊ฐ€์ ์ธ ์งˆ๋ฌธ

  • InnoDB ์—์„œ B-tree๊ฐ€ ์•„๋‹Œ ๋‹ค๋ฅธ ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์„๊นŒ?

    • ์žˆ์Œ!

    • ์˜ˆ : Hash O(1) / Hash๋Š” ๋ฒ”์œ„ ๊ฒ€์ƒ‰์ด ํž˜๋“ค๋‹ค.

    • spacial , ์ง€๋„, ๋ฐ˜๋„์ฒด๋“ฑ.. ์ขŒํ‘œ๊ฐ€ ์ค‘์š”ํ•œ ๋ฐ์ดํ„ฐ

      • ์ด๋Ÿฐ ๊ฒƒ์„ ์œ„ํ•œ R-tree๊ฐ€ ์žˆ์Œ. ์ฆ‰ ๊ณต๊ฐ„ ๋ฐ์ดํ„ฐ์šฉ ์ธ๋ฑ์Šค๊ฐ€ ๋”ฐ๋กœ ์žˆ์Œ.

    • Json์šฉ fulltext์šฉ ์žˆ์Œ.

  • idnex๋Š” ์•„๋ฌด๊ฑฐ๋‚˜ ๋งŒ๋“ ๋‹ค๊ณ  ์„ฑ๋Šฅ์ด ํ–ฅ์ƒ๋˜์ง€ ์•Š๋Š”๋‹ค. ์ฆ‰ ์ฟผ๋ฆฌ ์ตœ์ ํ™”๋ฅผ ์•Œ์•„์•ผ, index๋ฅผ ์ž˜ ์“ธ ์ˆ˜ ์žˆ์Œ.

Last updated