MariaDB DBMS 10.5์˜ ์•ˆ์ • ๋ฆด๋ฆฌ์Šค

XNUMX๋…„๊ฐ„์˜ ๊ฐœ๋ฐœ๊ณผ XNUMX๋ฒˆ์˜ ์‚ฌ์ „ ์ถœ์‹œ ์ดํ›„ ์ค€๋น„ ์ƒˆ๋กœ์šด DBMS ๋ธŒ๋žœ์น˜์˜ ์ฒซ ๋ฒˆ์งธ ์•ˆ์ •์ ์ธ ๋ฆด๋ฆฌ์Šค ๋งˆ๋ฆฌ์•„DB 10.4, ์ด์ „ ๋ฒ„์ „๊ณผ์˜ ํ˜ธํ™˜์„ฑ์„ ์œ ์ง€ํ•˜๋Š” MySQL ๋ถ„๊ธฐ๊ฐ€ ๊ฐœ๋ฐœ๋˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ์ถ”๊ฐ€ ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„๊ณผ ๊ณ ๊ธ‰ ๊ธฐ๋Šฅ์˜ ํ†ตํ•ฉ. ์‹ ๊ทœ ๋ธŒ๋žœ์น˜์— ๋Œ€ํ•œ ์ง€์›์€ 5๋…„ 2025์›”๊นŒ์ง€ XNUMX๋…„๊ฐ„ ์ œ๊ณต๋œ๋‹ค.

MariaDB ๊ฐœ๋ฐœ์€ ๊ฐœ๋ณ„ ๊ณต๊ธ‰์—…์ฒด๋กœ๋ถ€ํ„ฐ ๋…๋ฆฝ์ ์ธ ์™„์ „ํžˆ ๊ฐœ๋ฐฉ์ ์ด๊ณ  ํˆฌ๋ช…ํ•œ ๊ฐœ๋ฐœ ํ”„๋กœ์„ธ์Šค์— ๋”ฐ๋ผ ๋…๋ฆฝ์ ์ธ MariaDB ์žฌ๋‹จ์—์„œ ๊ฐ๋…ํ•ฉ๋‹ˆ๋‹ค. MariaDB๋Š” ๋งŽ์€ Linux ๋ฐฐํฌํŒ(RHEL, SUSE, Fedora, openSUSE, Slackware, OpenMandriva, ROSA, Arch Linux, Debian)์—์„œ MySQL ๋Œ€์‹  ์ œ๊ณต๋˜๋ฉฐ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋Œ€๊ทœ๋ชจ ํ”„๋กœ์ ํŠธ์—์„œ ๊ตฌํ˜„๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์œ„ํ‚ค ๋ฐฑ๊ณผ, ๊ตฌ๊ธ€ ํด๋ผ์šฐ๋“œ SQL ะธ Nimbuzz.

์—ด์‡  ๊ฐœ๋Ÿ‰ ๋งˆ๋ฆฌ์•„DB 10.5:

  • ์ถ”๊ฐ€๋œ ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„ S3์ด๋ฅผ ํ†ตํ•ด Amazon S3 ๋˜๋Š” S3 API๋ฅผ ์ง€์›ํ•˜๋Š” ๊ธฐํƒ€ ํผ๋ธ”๋ฆญ ๋˜๋Š” ํ”„๋ผ์ด๋น— ํด๋ผ์šฐ๋“œ ์Šคํ† ๋ฆฌ์ง€์—์„œ MariaDB ํ…Œ์ด๋ธ”์„ ํ˜ธ์ŠคํŒ…ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. S3์— ์ผ๋ฐ˜ ํ…Œ์ด๋ธ”๊ณผ ๋ถ„ํ• ๋œ ํ…Œ์ด๋ธ”์„ ๋ชจ๋‘ ๋ฐฐ์น˜ํ•˜๋Š” ๊ฒƒ์ด ์ง€์›๋ฉ๋‹ˆ๋‹ค. ๋ถ„ํ• ๋œ ํ…Œ์ด๋ธ”์ด ํด๋ผ์šฐ๋“œ์— ๋ฐฐ์น˜๋˜๋ฉด S3 ์Šคํ† ๋ฆฌ์ง€์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค๋ฅธ ์„œ๋ฒ„์—์„œ๋„ ์ง์ ‘ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ถ”๊ฐ€๋œ ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„ ์นผ๋Ÿผ์Šคํ† ์–ด, ์—ด์— ๋ฐ”์ธ๋”ฉ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ๋Œ€๊ทœ๋ชจ ๋ณ‘๋ ฌ ๋ถ„์‚ฐ ์•„ํ‚คํ…์ฒ˜. ์—”์ง„์€ MySQL ์Šคํ† ๋ฆฌ์ง€ ๊ฐœ๋ฐœ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•ฉ๋‹ˆ๋‹ค. ์ธํ”ผ๋‹ˆDB ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ(๋ฐ์ดํ„ฐ ์›จ์–ดํ•˜์šฐ์Šค)์— ๋Œ€ํ•œ ๋ถ„์„ ์ฟผ๋ฆฌ์˜ ์ฒ˜๋ฆฌ ๋ฐ ์‹คํ–‰์„ ๊ตฌ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
    ColumnStore๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ํ–‰ ๋‹จ์œ„๊ฐ€ ์•„๋‹Œ ์—ด๋ณ„๋กœ ์ €์žฅํ•˜๋ฏ€๋กœ ํŽ˜ํƒ€๋ฐ”์ดํŠธ ๊ทœ๋ชจ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํฌํ•จํ•˜์—ฌ ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์—ด๋ณ„๋กœ ๊ทธ๋ฃนํ™”ํ•˜๋Š” ์„ฑ๋Šฅ์„ ์ตœ์ ํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์„ ํ˜• ํ™•์žฅ, ์••์ถ•๋œ ๋ฐ์ดํ„ฐ ์ €์žฅ, ์ˆ˜์ง ๋ฐ ์ˆ˜ํ‰ ํŒŒํ‹ฐ์…”๋‹, ๊ฒฝ์Ÿ ์š”์ฒญ์˜ ํšจ์œจ์ ์ธ ์‹คํ–‰์ด ์ง€์›๋ฉ๋‹ˆ๋‹ค.

  • "mysql"์ด๋ผ๋Š” ๋‹จ์–ด๋กœ ์‹œ์ž‘ํ•˜๋Š” ๋ชจ๋“  ์‹คํ–‰ ํŒŒ์ผ์˜ ์ด๋ฆ„์€ "mariadb"๋ผ๋Š” ๋‹จ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์ „ ์ด๋ฆ„์€ ์‹ฌ๋ณผ๋ฆญ ๋งํฌ ํ˜•์‹์œผ๋กœ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.
  • ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ ์œ ํ˜•์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. INET6 IPv6 ์ฃผ์†Œ๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
  • ๊ถŒํ•œ์„ ๋” ์ž‘์€ ๊ตฌ์„ฑ ์š”์†Œ๋กœ ๋ถ„๋ฆฌํ•˜๋Š” ์ž‘์—…์ด ์ˆ˜ํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์ธ SUPER ๊ถŒํ•œ ๋Œ€์‹  ์ผ๋ จ์˜ ์„ ํƒ์  ๊ถŒํ•œ โ€œBINLOG ADMINโ€์„ ์ œ์•ˆํ•˜๊ณ ,
    "๋ฐ”์ด๋กœ๊ทธ ์žฌ์ƒ"
    "์—ฐ๊ฒฐ ๊ด€๋ฆฌ์ž"
    "ํŽ˜๋”๋ ˆ์ด์…˜ ๊ด€๋ฆฌ์ž"
    "READ_ONLY ๊ด€๋ฆฌ์ž",
    "๋ณต์ œ ๋งˆ์Šคํ„ฐ ๊ด€๋ฆฌ์ž"
    "๋ณต์ œ ์Šฌ๋ ˆ์ด๋ธŒ ๊ด€๋ฆฌ์ž" ๋ฐ
    "์‚ฌ์šฉ์ž ์„ค์ •".

  • "REPLICATION CLIENT" ๊ถŒํ•œ์€ "BINLOG MONITOR"๋กœ, "SHOW MASTER STATUS" ํ‘œํ˜„์€ "SHOW BINLOG STATUS"๋กœ ์ด๋ฆ„์ด ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฆ„ ๋ณ€๊ฒฝ์€ ํ–‰๋™์„ ๋ช…ํ™•ํ•˜๊ฒŒ ํ•˜๊ณ  ์ •์น˜์  ์˜ฌ๋ฐ”๋ฆ„๊ณผ ๊ด€๋ จ์ด ์—†์Šต๋‹ˆ๋‹ค. ํ”„๋กœ์ ํŠธ๋Š” ๋งˆ์Šคํ„ฐ/์Šฌ๋ ˆ์ด๋ธŒ๋ผ๋Š” ์šฉ์–ด๋ฅผ ๋ฒ„๋ฆฌ์ง€ ์•Š๊ณ  "MASTER ADMIN" ๋ฐ "SLAVE ADMIN"์ด๋ผ๋Š” ์ƒˆ๋กœ์šด ๊ถŒํ•œ์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋™์‹œ์— SQL ํ‘œํ˜„์‹์—๋Š” "SLAVE"์˜ ๋™์˜์–ด์ธ ์ƒˆ๋กœ์šด ํ‚ค "REPLICA"๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • ์ผ๋ถ€ ํ‘œํ˜„์‹์˜ ๊ฒฝ์šฐ ์‹คํ–‰์— ํ•„์š”ํ•œ ๊ถŒํ•œ์ด ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ "SHOW BINLOG EVENTS"์—๋Š” "REPLICATION SLAVE" ๋Œ€์‹  "BINLOG MONITOR" ๊ถŒํ•œ์ด ํ•„์š”ํ•˜๊ณ , "SHOW SLAVE HOSTS"์—๋Š” "REPLICATION SLAVE" ๋Œ€์‹  "REPLICATION MASTER ADMIN" ๊ถŒํ•œ์ด ํ•„์š”ํ•˜๋ฉฐ, "SHOW SLAVE STATUS"์—๋Š” "REPLICATION SLAVE ADMIN"์ด ํ•„์š”ํ•˜๊ฑฐ๋‚˜ "REPLICATION CLIENT" ๋Œ€์‹  "SUPER", "SHOW RELAYLOG EVENTS"์—๋Š” "REPLICATION SLAVE" ๋Œ€์‹  "REPLICATION SLAVE ADMIN" ๊ถŒํ•œ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
  • ์ถ”๊ฐ€๋œ ๋””์ž์ธ "์‚ฝ์ž…...๋ฐ˜ํ™˜ ์ค‘"๊ทธ๋ฆฌ๊ณ "๊ต์ฒด...๋ฐ˜ํ’ˆ ์ค‘", SELECT ํ‘œํ˜„์‹์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ ๊ฒƒ์ฒ˜๋Ÿผ ํ˜•์‹์œผ๋กœ ์‚ฝ์ž…/๊ต์ฒด๋œ ํ•ญ๋ชฉ ๋ชฉ๋ก์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค("DELETE ... RETURNING"๊ณผ ์œ ์‚ฌ).

    INSERT INTO t2 ๊ฐ’ (1,'๊ฐœ'),(2,'์‚ฌ์ž'),(3,'ํ˜ธ๋ž‘์ด'),(4,'ํ‘œ๋ฒ”')
    RETURNING id2,id2+id2,id2&id2,id2||id2;
    +โ€”โ€”+โ€”โ€”โ€”+โ€”โ€”โ€”+โ€”โ€”โ€”-+
    | ์•„์ด๋””2 | ์•„์ด๋””2+์•„์ด๋””2 | ID2&ID2 | ID2||ID2 |
    +โ€”โ€”+โ€”โ€”โ€”+โ€”โ€”โ€”+โ€”โ€”โ€”-+
    | 1 | 2 | 1 | 1 |
    | 2 | 4 | 2 | 1 |
    | 3 | 6 | 3 | 1 |
    | 4 | 8 | 4 | 1 |
    +โ€”โ€”+โ€”โ€”โ€”+โ€”โ€”โ€”+โ€”โ€”โ€”-+

  • "๋ผ๋Š” ํ‘œํ˜„์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.๋ชจ๋‘ ์ œ์™ธ"๊ทธ๋ฆฌ๊ณ "๋ชจ๋‘ ๊ต์ฐจยป ํŠน์ • ๊ฐ’ ์„ธํŠธ๋กœ ๊ฒฐ๊ณผ๋ฅผ ์ œ์™ธ/๋ณด์ถฉํ•ฉ๋‹ˆ๋‹ค.
  • ์ด์ œ "CREATE DATABASE" ๋ฐ "ALTER DATABASE" ๋ธ”๋ก ๋‚ด์— ์ฃผ์„์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์ธ๋ฑ์Šค์™€ ์—ด์˜ ์ด๋ฆ„์„ ๋ฐ”๊พธ๊ธฐ ์œ„ํ•œ ๊ตฌ์„ฑ์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค."ALTER TABLE ... ์ธ๋ฑ์Šค/ํ‚ค ์ด๋ฆ„ ๋ฐ”๊พธ๊ธฐ" ๊ทธ๋ฆฌ๊ณ  "ALTER TABLE ... ์—ด ์ด๋ฆ„ ๋ฐ”๊พธ๊ธฐ".
  • "ALTER TABLE" ๋ฐ "RENAME TABLE" ์ž‘์—…์—์„œ ํ…Œ์ด๋ธ”์ด ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ์—๋งŒ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋„๋ก "IF EXISTS" ์กฐ๊ฑด์— ๋Œ€ํ•œ ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • "CREATE TABLE"์˜ ์ธ๋ฑ์Šค์˜ ๊ฒฝ์šฐ "๋ณด์ด๋Š”".
  • ์žฌ๊ท€ ๋ฃจํ”„๋ฅผ ์‹๋ณ„ํ•˜๊ธฐ ์œ„ํ•ด "CYCLE" ํ‘œํ˜„์‹์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. CTE.
  • ์ถ”๊ฐ€๋œ ๊ธฐ๋Šฅ JSON_ARRAYAGG ะธ JSON_OBJECTAGG ์ง€์ •๋œ ์—ด์˜ ๊ฐ’์ด ํฌํ•จ๋œ ๋ฐฐ์—ด ๋˜๋Š” JSON ๊ฐœ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
  • ์Šค๋ ˆ๋“œ ํ’€(thread_pool)์— ๋Œ€ํ•œ ์„œ๋น„์Šค ์ •๋ณด ํ…Œ์ด๋ธ”(THREAD_POOL_GROUPS, THREAD_POOL_QUEUES, THREAD_POOL_STATS ๋ฐ THREAD_POOL_WAITS)์„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ANALYZE ํ‘œํ˜„์‹์€ WHERE ๋ธ”๋ก์„ ํ™•์ธํ•˜๊ณ  ๋ณด์กฐ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐ ์†Œ์š”๋œ ์‹œ๊ฐ„์„ ํ‘œ์‹œํ•˜๋„๋ก ํ™•์žฅ๋ฉ๋‹ˆ๋‹ค.
  • ๋ฒ”์œ„ ์ฒ˜๋ฆฌ ์ตœ์ ํ™” ํ”„๋กœ๊ทธ๋žจ์€ "IS NOT NULL" ํŠน์„ฑ์„ ๊ณ ๋ คํ•ฉ๋‹ˆ๋‹ค.
  • VARCHAR, CHAR, BLOB ์œ ํ˜•์œผ๋กœ ์ •๋ ฌํ•  ๋•Œ ์‚ฌ์šฉ๋˜๋Š” ์ž„์‹œ ํŒŒ์ผ์˜ ํฌ๊ธฐ๊ฐ€ ํฌ๊ฒŒ ์ค„์—ˆ์Šต๋‹ˆ๋‹ค.
  • ะ’ ๋ฐ”์ด๋„ˆ๋ฆฌ ๋กœ๊ทธ๋ณต์ œ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ๊ธฐ๋ณธ ํ‚ค, ์—ด ์ด๋ฆ„, ๋ฌธ์ž ์„ธํŠธ ๋ฐ ๊ธฐํ•˜ํ•™ ์œ ํ˜•์„ ํฌํ•จํ•œ ์ƒˆ๋กœ์šด ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ํ•„๋“œ๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. mariadb-binlog ์œ ํ‹ธ๋ฆฌํ‹ฐ์™€ "SHOW BINLOG EVENTS" ๋ฐ "SHOW RELAYLOG EVENTS" ๋ช…๋ น์€ ๋ณต์ œ ํ”Œ๋ž˜๊ทธ ํ‘œ์‹œ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • ๋””์ž์ธ ๋“œ๋กญ ํ…Œ์ด๋ธ” ์ด์ œ ์•ˆ์ „ํ•ด ์ œ๊ฑฐ ".frm" ๋˜๋Š” ".par" ํŒŒ์ผ์ด ์—†๋”๋ผ๋„ ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์— ๋‚จ์•„ ์žˆ๋Š” ํ…Œ์ด๋ธ”์ž…๋‹ˆ๋‹ค.
  • AMD32, ARMv64 ๋ฐ POWER 8 CPU์— ๋Œ€ํ•œ crc8() ํ•จ์ˆ˜์˜ ํ•˜๋“œ์›จ์–ด ๊ฐ€์† ๋ฒ„์ „์„ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ์ผ๋ถ€ ๊ธฐ๋ณธ ์„ค์ •์„ ๋ณ€๊ฒฝํ–ˆ์Šต๋‹ˆ๋‹ค. innodb_encryption_threads๊ฐ€ 255๋กœ ์ฆ๊ฐ€ํ•˜๊ณ  max_sort_length๊ฐ€ 4์—์„œ 8๋กœ ์ฆ๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
  • InnoDB ์—”์ง„์— ๋Œ€ํ•œ ๋‹ค์–‘ํ•œ ์„ฑ๋Šฅ ์ตœ์ ํ™”๊ฐ€ ์ œ๊ณต๋ฉ๋‹ˆ๋‹ค.
  • Galera ๋™๊ธฐ ๋‹ค์ค‘ ๋งˆ์Šคํ„ฐ ๋ณต์ œ ๋ฉ”์ปค๋‹ˆ์ฆ˜์— ์ „์ฒด ์ง€์›์ด ์ถ”๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. GTID (๊ธ€๋กœ๋ฒŒ ํŠธ๋žœ์žญ์…˜ ID), ๋ชจ๋“  ํด๋Ÿฌ์Šคํ„ฐ ๋…ธ๋“œ์— ๊ณตํ†ต๋œ ํŠธ๋žœ์žญ์…˜ ์‹๋ณ„์ž์ž…๋‹ˆ๋‹ค.
  • ๋„์„œ๊ด€์˜ ์ƒˆ๋กœ์šด ์ง€์ ์œผ๋กœ ์ „ํ™˜๋˜์—ˆ์Šต๋‹ˆ๋‹ค. PCRE2 (Perl Compatible Regular Expressions), ๊ธฐ์กด PCRE 8.x ์‹œ๋ฆฌ์ฆˆ ๋Œ€์‹ .
  • Python ๋ฐ C ํ”„๋กœ๊ทธ๋žจ์—์„œ MariaDB ๋ฐ MySQL DBMS์— ์—ฐ๊ฒฐํ•˜๊ธฐ ์œ„ํ•œ ์ƒˆ๋กœ์šด ๋ฒ„์ „์˜ ํ•˜๋„ค์Šค๊ฐ€ ์ œ์•ˆ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. MariaDB ์ปค๋„ฅํ„ฐ/ํŒŒ์ด์ฌ 1.0.0 ะธ MariaDB ์ปค๋„ฅํ„ฐ/C 3.1.9. Python ๋ฐ”์ธ๋”ฉ์€ Python DB API 2.0์„ ์ค€์ˆ˜ํ•˜๊ณ  C๋กœ ์ž‘์„ฑ๋˜์—ˆ์œผ๋ฉฐ Connector/C ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋ฒ„์— ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค.

์ถœ์ฒ˜ : opennet.ru

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€