๊ธ€๋กœ๋ฒŒ ๋ณ€์ˆ˜์™€ ์„ธ์…˜ ๋ณ€์ˆ˜

    RealMySQL 8.0์„ ์ฝ๊ณ  ์ •๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค. DBMS Variables ๋น„๊ต ํŽ˜์ด์ง€๋ฅผ ๋งŒ๋“ค ๋•Œ ๊ธ€๋กœ๋ฒŒ์ธ์ง€ ์„ธ์…˜์ธ์ง€ ๋Œ€ํ•ด์„œ ๊ตฌ๋ถ„ํ•  ์ผ๋„ ์žˆ๊ณ  ํ–ˆ๋Š”๋ฐ,, ์ด๋ฒˆ ๊ธฐํšŒ์— ์ •๋ฆฌํ•ด๋ณด๊ณ ์ž ํ•œ๋‹ค. MySQL์˜ ์‹œ์Šคํ…œ ๋ณ€์ˆ˜๋Š” ์ ์šฉ ๋ฒ”์œ„์— ๋”ฐ๋ผ ๊ธ€๋กœ๋ฒŒ ๋ณ€์ˆ˜์™€ ์„ธ์…˜ ๋ณ€์ˆ˜๋กœ ๋‚˜๋‰œ๋‹ค. ๊ธ€๋กœ๋ฒŒ ๋ณ€์ˆ˜ MySQL ์„œ๋ฒ„ ์ธ์Šคํ„ด์Šค์—์„œ ์ „์ฒด์ ์œผ๋กœ ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ์‹œ์Šคํ…œ ๋ณ€์ˆ˜ MySQL ์„œ๋ฒ„ ์ž์ฒด์— ๊ด€๋ จ๋œ ์„ค์ •์ผ ๋•Œ๊ฐ€ ๋งŽ์Œ MySQL ์„œ๋ฒ„์—์„œ ๋‹จ ํ•˜๋‚˜๋งŒ ์กด์žฌ innodb_buffer_pool_size : InnoDB ๋ฒ„ํผ ํ’€ ํฌ๊ธฐ key_buffer_size : MyISAM์˜ ํ‚ค ์บ์‹œ ํฌ๊ธฐ ์„ธ์…˜ ๋ณ€์ˆ˜ MySQL ํด๋ผ์ด์–ธํŠธ๊ฐ€ MySQL ์„œ๋ฒ„์— ์ ‘์†ํ•  ๋•Œ ๊ธฐ๋ณธ์œผ๋กœ ๋ถ€์—ฌํ•˜๋Š” ์˜ต์…˜์˜ ๊ธฐ๋ณธ๊ฐ’์„ ์ œ์–ดํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ ํด๋ผ์ด์–ธํŠธ์˜ ํ•„์š”์— ๋”ฐ๋ผ ๊ฐœ๋ณ„ ์ปค๋„ฅ์…˜..

    Percona Toolkit์ด๋ž€?

    MySQLDBA ์šด์˜๊ต์œก์—์„œ ํผ์ฝ”๋‚˜ ํˆดํ‚ท์— ๋Œ€ํ•ด ์ ‘ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค. ์–ด๋–ค ๊ธฐ๋Šฅ์„ ํ•˜๋Š” ํˆด์ธ์ง€ ์•Œ์•„๋ณด์ž! Percona Toolkit Percona ์‚ฌ์—์„œ ์ œ์ž‘ํ•œ Toolkit ์œผ๋กœ์„œ DB์˜ ์„ฑ๋Šฅ ์ถ”์ด, Disk ์‚ฌ์šฉ๋Ÿ‰, DB ๋‚ด ํ†ต๊ณ„์ •๋ณด๋ฅผ ์ •๋ฆฌํ•˜์—ฌ ์‰ฝ๊ฒŒ ๋ณด์—ฌ์ฃผ๋Š” tool ๊ธฐ๋Šฅ ๋ณ„๋กœ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Œ (์œ„์น˜: /db/mysql/util/ptkit/bin) ์•„๋ž˜ ๊ณต์‹ ์‚ฌ์ดํŠธ๋ฅผ ๋ณด๋ฉด ๋‹ค๋ฅธ DBMS์— ๋Œ€ํ•ด์„œ๋„ ์ง€์›ํ•˜๋Š” ๊ฒƒ ๊ฐ™์€๋ฐ ์šฐ๋ฆฌ ํŒ€์—์„œ๋Š” ๋‚ด๊ฐ€ ์•„๋Š” ํ•œ์—์„œ๋Š” ์ผ๋‹จ MySQL ์šด์˜์—์„œ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค. https://percona.com/ Open Source Database Software Support & Services | Percona Percona delivers enterprise-class su..

    RealMySQL 8.0 | 5์žฅ ํŠธ๋žœ์žญ์…˜๊ณผ ์ž ๊ธˆ

    RealMySQL 8.0 ์„ ์ฝ๊ณ  ์ •๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ชฉ์ฐจ ํŠธ๋žœ์žญ์…˜ MySQL ์—”์ง„์˜ ์ž ๊ธˆ InnoDB ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„ ์ž ๊ธˆ MySQL์˜ ๊ฒฉ๋ฆฌ ์ˆ˜์ค€ ํŠธ๋žœ์žญ์…˜(Transaction) ์ž‘์—…์˜ ์™„์ „์„ฑ์„ ๋ณด์žฅํ•ด ์ฃผ๋Š” ๊ฒƒ 100% : ๋ชจ๋‘ ์™„๋ฒฝํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•˜๊ฑฐ๋‚˜ 0% : ์ฒ˜๋ฆฌํ•˜์ง€ ๋ชปํ•  ๊ฒฝ์šฐ์—๋Š” ์› ์ƒํƒœ๋กœ ๋ณต๊ตฌํ•ด์„œ ์ž‘์—…์˜ ์ผ๋ถ€๋งŒ ์ ์šฉ๋˜๋Š” ํ˜„์ƒ(Partial update)์„ ๋ฐฉ์ง€ ์ž ๊ธˆ(Lock) ๐Ÿค” ์ž ๊ธˆ ์—†์ด ์—ฌ๋Ÿฌ ์ปค๋„ฅ์…˜์ด ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋™์‹œ์— ๋ณ€๊ฒฝํ•œ๋‹ค๋ฉด? ๊ทธ ๋ฐ์ดํ„ฐ์˜ ๊ฐ’์€ ์˜ˆ์ธกํ•  ์ˆ˜ ์—†๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ฆ‰, ์—ฌ๋Ÿฌ ์ปค๋„ฅ์…˜์—์„œ ๋™์‹œ์— ๋™์ผํ•œ ์ž์›์„ ์š”์ฒญํ•œ ๊ฒฝ์šฐ ์ˆœ์„œ๋Œ€๋กœ ํ•œ ์‹œ์ ์—๋Š” ํ•˜๋‚˜์˜ ์ปค๋„ฅ์…˜๋งŒ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋„๋ก ๋™์‹œ์„ฑ์„ ์ œ์–ดํ•˜๋Š” ์—ญํ•  ํŠธ๋žœ์žญ์…˜ : ๋ฐ์ดํ„ฐ์˜ ์ •ํ•ฉ์„ฑ์„ ๋ณด์žฅํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ๋Šฅ ์ž ๊ธˆ : ๋™์‹œ์„ฑ์„ ์ œ์–ดํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ๋Šฅ ๊ฒฉ๋ฆฌ ์ˆ˜..

    Redis ๋‹ค๋ฅธ ํฌํŠธ๋กœ ์„ค์น˜ํ•˜๊ธฐ

    2023.05.16 - [๐ŸŒ ์ธํ”„๋ผ/๋ชจ๋‹ˆํ„ฐ๋ง] - Prometheus + Grafana๋กœ Redis ๋ชจ๋‹ˆํ„ฐ๋ง ๊ตฌ์ถ•ํ•˜๊ธฐ ์œ„์˜ ๊ณผ์ œ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ ํ•œ ์ธ์Šคํ„ด์Šค์— ๊ฐ๊ฐ ๋‹ค๋ฅธ ๋ฒ„์ „์˜ Redis๋ฅผ ์„ค์น˜ํ•ด์ฃผ์–ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค. Redis์˜ ๊ธฐ๋ณธ ํฌํŠธ๋Š” 6379์ด๊ธฐ ๋•Œ๋ฌธ์—, ๋‘ Redis์˜ ํฌํŠธ๊ฐ€ ๊ฒน์น˜์ง€ ์•Š๋„๋ก ํฌํŠธ ๋ฒˆํ˜ธ๋ฅผ ๋ณ€๊ฒฝํ•ด ์„ค์น˜๋˜๋„๋ก ์ง„ํ–‰ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค! ์•„๋ž˜ ๊ณผ์ •๋Œ€๋กœ ์ง„ํ–‰ํ•ด์ค๋‹ˆ๋‹ค. # Redis ์†Œ์Šค ์ฝ”๋“œ ๋‹ค์šด๋กœ๋“œ ๋ฐ ์••์ถ• ํ•ด์ œ $ wget http://download.redis.io/releases/redis-x.x.x.tar.gz $ tar xzf redis-x.x.x.tar.gz $ cd redis-x.x.x # redis.conf ํŒŒ์ผ ์—ด๊ณ  ํฌํŠธ ๋ฒˆํ˜ธ ๋ณ€๊ฒฝ $ vi redis.conf # port 6379 ->..

    Redis warning ์—†์ด ๊น”๋”ํ•˜๊ฒŒ ๋„์šฐ๊ธฐ

    2023.01.25 - [๐ŸŒ ์ธํ”„๋ผ/NHN Cloud] - NHN Cloud ์ธ์Šคํ„ด์Šค์— Redis ์„ค์น˜ํ•˜๊ธฐ (1) - ์••์ถ•ํŒŒ์ผ ์ด์šฉ 2023.02.08 - [๐Ÿ’ป ํ”„๋กœ๊ทธ๋ž˜๋ฐ/Shell] - Redis ์„ค์น˜ ์ž๋™ํ™” ์Šคํฌ๋ฆฝํŠธ (1) - binary ๋ฐฉ์‹ ์œ„์˜ ํฌ์ŠคํŒ…์„ ์ด์šฉํ•ด์„œ Redis๋ฅผ ์„ค์น˜ํ–ˆ์„ ๋•Œ ์ดˆ๊ธฐ ์‹คํ–‰ ํ™”๋ฉด์ž…๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋ญ”๊ฐ€ ๊น”๋”ํ•˜์ง€ ์•Š๊ณ  ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฉ”์‹œ์ง€๋“ค์ด ๋– ์žˆ๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Warning: no config file specified, using the default config. In order to specify a config file use src/redis-server /path/to/redis.conf WARNING: The TCP backlog setting of 51..

    [ํ† ์Šค SLASH 21] MYSQL HA & DR Topology

    โœ… ๋ฐœํ‘œ ์˜์ƒ https://www.youtube.com/watch?v=t96l6ry_qmw โœ”๏ธ ๋ฐœํ‘œ ๋‚ด์šฉ MMM HA ์˜คํ”ˆ์†Œ์Šค ์†”๋ฃจ์…˜ ์ด๋ฆ„ ํ† ์Šค์˜ Live MySQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค HA ์†”๋ฃจ์…˜์œผ๋กœ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ์Œ Google์—์„œ ๊ฐœ๋ฐœ๋œ ์†”๋ฃจ์…˜ ๋ฒ„์ „ ์—…๋ฐ์ดํŠธ๋Š” ์ค‘์ง€๋˜์–ด์„œ, ํ•„์š” ์‹œ ์ž์ฒด ์—…๋ฐ์ดํŠธ๋ฅผ ํ•˜๋ฉด์„œ ์‚ฌ์šฉ ์ค‘ ๊ธฐ๋ณธ ๊ตฌ์„ฑ๋„ MASTER-MASTER 01, 02๋…ธ๋“œ๋งŒ MMM์ด ๊ด€๋ฆฌํ•˜๋„๋ก ๊ตฌ์„ฑ 03๋ฒˆ SLAVE๋„ MMM์ด ๊ด€๋ฆฌํ•˜๋„๋ก ํฌํ•จ์‹œํ‚ฌ ์ˆ˜ ์žˆ์ง€๋งŒ, ์‹ ๊ทœ MASTER๋กœ failover ํ•˜๋Š” ๊ณผ์ •์—์„œ ๋Œ€์‘๋˜์ง€ ์•Š๋Š” ์ผ€์ด์Šค๊ฐ€ ์žˆ์–ด์„œ ์ด ๊ตฌ์„ฑ์€ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Œ 1. ๋ฐ๋ชฌ 2๊ฐœ : Monitoring, Agent 2. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„ failover๋ฅผ ์œ„ํ•ด ๊ฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„œ๋ฒ„์— ์˜ฌ๋ผ๊ฐ€๋Š” ์„œ๋น„์Šค IP Monit..

    Ubuntu์—์„œ PostgreSQL ์™ธ๋ถ€ ์ ‘์† ํ—ˆ์šฉํ•˜๊ธฐ

    1. ์ƒํ™ฉ Ubuntu ์ธ์Šคํ„ด์Šค์— CentOS ๋„์ปค ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋„์šฐ๊ณ , ๊ทธ ์•ˆ์— PostgreSQL๋ฅผ ์„ค์น˜ํ•œ ์ƒํƒœ ๊ทธ๋ฆผ์œผ๋กœ ๋‚˜ํƒ€๋‚ด๋ณด์ž๋ฉด ์•„๋ž˜์™€ ๊ฐ™๋‹ค. ๋‚ด๊ฐ€ ํ•˜๊ณ  ์‹ถ์€ ๊ฒƒ์€ ์šฐ๋ถ„ํˆฌ์—์„œ "CentOS์— ์„ค์น˜๋œ PostgreSQL"์— ์ ‘์†ํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ถœํ•ด MySQL(๊ฐœ๋ฐœ DB)๋กœ ๋ณด๋‚ด๋Š” ๊ฒƒ! ๊ทธ๋ƒฅ ์ ‘์†ํ•˜๋ ค๊ณ  ํ–ˆ๋”๋‹ˆ ๊ณ„์† connection ์—๋Ÿฌ๊ฐ€ ๋‚˜์„œ ์ฐพ์•„๋ณด๋‹ˆ.. ์ด๋Ÿฐ ๊ฒฝ์šฐ๋Š” PostgreSQL์—์„œ ์™ธ๋ถ€ ์ ‘์†์„ ํ—ˆ์šฉํ•ด์ฃผ์–ด์•ผ ํ•˜๊ณ , ๊ทธ๋Ÿฌ๋ ค๋ฉด ๋ฐ”๊ฟ”์•ผ ํ•  ์„ค์ •๊ณผ ์„ค์น˜ํ•ด์•ผ ํ•  ํŒจํ‚ค์ง€๋“ค์ด ์žˆ์–ด์„œ ๊ณผ์ •์„ ์ •๋ฆฌํ•ด๋ณด๊ณ ์ž ํ•œ๋‹ค :) 2. ๊ณผ์ • 0. ํ•„์š” ํŒจํ‚ค์ง€ ์„ค์น˜ # Ubuntu์— sudo apt-get install -y postgresql-client sudo apt-get install -y postgresql-c..

    [๊ต์œก] ์‹ค์ „! ๋ฐ์ดํ„ฐ๋ชจ๋ธ๋ง

    ํŒ€ ์ˆ˜์„๋‹˜๊ป˜์„œ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ๋ง์„ ์ฃผ์ œ๋กœ ์‚ฌ๋‚ด๊ต์œก์„ ์ง„ํ–‰ํ•˜์…”์„œ ์ฐธ์—ฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐํšŒ๊ฐ€ ์ƒ๊ฒผ๋‹ค. ์ฐธ์—ฌํ˜• ์‹ค์Šต๋„ ์žˆ๊ณ  ์™„์ „ ์œ ์ตํ•˜๊ณ  ์žฌ๋ฐŒ๋Š” ๊ต์œก์ด๋ผ๊ณ  ํ•˜์…”์„œ ๊ธฐ๋Œ€๋ฅผ ์ž”๋œฉ ํ•˜๊ณ  ๊ฐ”๋‹ค. ํ•™๊ต์—์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์„ค๊ณ„ ์ˆ˜์—… ๋•Œ ๋ฐฐ์šด ๋‚ด์šฉ๋„ ์ƒˆ๋ก์ƒˆ๋ก ์ƒ๊ฐ์ด ๋‚˜๊ณ  ์ตœ๊ทผ์— ๊ณ„์† ๋ชจ๋ธ๋ง ์ž‘์—…์„ ํ•˜๊ณ  ์žˆ์–ด์„œ ๋‚ด์šฉ์ด ๋” ์ž˜ ๋“ค๋ฆฌ๊ธฐ๋„ ํ•˜๊ณ , ํ˜„์—… ํฌ์ธํŠธ๊นŒ์ง€ ์•Œ ์ˆ˜ ์žˆ๋Š” ๊ฐ’์ง„ ์‹œ๊ฐ„์ด์—ˆ๋‹ค. ๋‹ค๋ฅธ ๋ถ€์„œ๋ถ„๋“ค์„ ๋งŒ๋‚˜๋Š” ์ž์ฒด๋„ ์žฌ๋ฐŒ์—ˆ๋Š”๋ฐ ๋‹ค๋“ค ์ž˜ ์ฐธ์—ฌํ•ด์ฃผ์‹œ๊ณ , ์–˜๊ธฐ๋„ ์ž˜ ํ†ตํ•ด์„œ ์ฆ๊ฑฐ์šด ์‹œ๊ฐ„์ด์—ˆ๋‹ค. ํŠนํžˆ ์‹ค์Šต์—์„œ ์ž‘์€ ๋ชจ๋ธ๋“ค์ด ๋ชจ์—ฌ์„œ ๋งˆ์ง€๋ง‰์— ํ•˜๋‚˜์˜ ๋ชจ๋ธ๋กœ ํƒ„์ƒํ•  ๋•Œ ๊ฐ๋™์ด์—ˆ๋‹ค..๐Ÿฅบ (์ˆ˜์„๋‹˜ ์กด๊ฒฝํ•ฉ๋‹ˆ๋‹ค..) ๋ฐ์ดํ„ฐ ํ‘œ์ค€ํ™”์˜ ๊ธฐ๋ณธ ๋ฐ์ดํ„ฐ๊ฐ€ ์ค‘์š”ํ•˜๋‹ค! ๋น„์ฆˆ๋‹ˆ์Šค์˜ ๋ชฉ์ ์ด ๋ฐ”๋€Œ์ง€ ์•Š๋Š” ํ•œ, ์ค‘์š” ๋ฐ์ดํ„ฐ๋Š” ๋ณ€ํ•˜์ง€ ์•Š๋Š”๋‹ค. ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ๋งŒ๋“œ๋Š”๊ฒŒ ๊ฐœ๋ฐœ์˜ ..

    ํด๋Ÿฌ์Šคํ„ฐ ํ…Œ์ด๋ธ”๊ณผ ๋…ผํด๋Ÿฌ์Šคํ„ฐ ํ…Œ์ด๋ธ”

    ํด๋Ÿฌ์Šคํ„ฐ ํ…Œ์ด๋ธ” vs ๋…ผํด๋Ÿฌ์Šคํ„ฐ ํ…Œ์ด๋ธ” ๋น„๊ต ํด๋Ÿฌ์Šคํ„ฐ๋ž€? ๋””์Šคํฌ๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์˜ค๋Š” ์‹œ๊ฐ„์„ ์ค„์ด๊ธฐ ์œ„ํ•ด์„œ ์ž์ฃผ ์‚ฌ์šฉ๋˜๋Š” ํ…Œ์ด๋ธ”์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋””์Šคํฌ์˜ ๊ฐ™์€ ์œ„์น˜์— ์ €์žฅํ•˜๋Š” ๋ฐฉ๋ฒ• ๋น„์Šทํ•œ ๋ ˆ์ฝ”๋“œ๋“ค์„ ๋™์‹œ์— ์กฐํšŒํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์•„ ํšจ์œจ์ ์œผ๋กœ ์กฐํšŒํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ๊ณ ์•ˆ๋จ PK๊ฐ€ ๋น„์Šทํ•œ ๋ ˆ์ฝ”๋“œ๋ผ๋ฆฌ ๋ฌถ์–ด์„œ ์ €์žฅํ•˜๋Š” ๊ฒƒ (MySQL) ํด๋Ÿฌ์Šคํ„ฐ ํ…Œ์ด๋ธ”(์ธ๋ฑ์Šค) ํ…Œ์ด๋ธ”๋‹น 1๊ฐœ์”ฉ๋งŒ ํ—ˆ์šฉ๋จ PK ์ƒ์„ฑ ์‹œ ๊ทธ ์ปฌ๋Ÿผ์€ ์ž๋™์œผ๋กœ ํด๋Ÿฌ์Šคํ„ฐ ์ธ๋ฑ์Šค๊ฐ€ ์ƒ์„ฑ๋จ * ์ผ๋ฐ˜ ์ธ๋ฑ์Šค์™€์˜ ์ฐจ์ด ํด๋Ÿฌ์Šคํ„ฐ๋ง ๋˜์–ด ์žˆ๋‹ค๋Š” ์š”์†Œ๊ฐ€ ์ถ”๊ฐ€๋จ ์˜ตํ‹ฐ๋งˆ์ด์ €์—์„œ ์ผ๋ฐ˜ ์ธ๋ฑ์Šค๋ณด๋‹ค ๋†’์€ ๋žญํ‚น PK๋ฅผ ์„ค์ •ํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ๋Š”? InnoDB๊ฐ€ ๋‹ค์Œ์˜ ์šฐ์„ ์ˆœ์œ„๋Œ€๋กœ ๋Œ€์ฒด ์ปฌ๋Ÿผ์„ ์„ ํƒ UNIQUE NOT NULL ์ค‘ ์ฒซ๋ฒˆ์งธ ์ธ๋ฑ์Šค๋ฅผ ํด๋Ÿฌ์Šคํ„ฐ ํ‚ค๋กœ ์„ ํƒ ์ž๋™์œผ๋กœ ์œ ๋‹ˆํฌํ•œ ๊ฐ’์„ ๊ฐ€์ง€๋„๋ก..

    ๋ณธ์งˆ์‹๋ณ„์ž์™€ ์ธ์กฐ์‹๋ณ„์ž

    ๋ณธ์งˆ ์‹๋ณ„์ž vs ์ธ์กฐ ์‹๋ณ„์ž ๋น„๊ต ๋ณธ์งˆ ์‹๋ณ„์ž ์—…๋ฌด์— ์˜ํ•ด ๋งŒ๋“ค์–ด์ง„ ์‹๋ณ„์ž ์žฅ์  PK ์ธ๋ฑ์Šค ํ™œ์šฉ ๊ฐ€๋Šฅ ์ธ์กฐ ์‹๋ณ„์ž ์—…๋ฌด์ ์œผ๋กœ ๋งŒ๋“ค์–ด์ง€์ง€๋Š” ์•Š์ง€๋งŒ ๋ณธ์งˆ ์‹๋ณ„์ž๊ฐ€ ๋ณต์žกํ•œ ๊ตฌ์„ฑ์„ ๊ฐ–๊ณ  ์žˆ์–ด ์ธ์œ„์ ์œผ๋กœ ๋งŒ๋“  ์‹๋ณ„์ž ํ›„๋ณด ์‹๋ณ„์ž ์ค‘ PK๋กœ ์„ ์ •ํ• ๋งŒ ํ•œ ๊ฒƒ์ด ์—†์„ ๋•Œ ์‚ฌ์šฉ ์žฅ์  ๋ชจ๋ธ์ด๋‚˜ SQL์ด ๊ฐ„๋‹จํ•ด์ง ๋‹จ์  ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ ๊ธฐ์ค€์„ ์ธ์กฐ ์‹๋ณ„์ž๋งŒ์œผ๋กœ ํŒ๋‹จํ•˜๊ธฐ ์–ด๋ ค์›€ ๋ชจ๋ธ๋งŒ ๋ณด๊ณ  ์—…๋ฌด๋ฅผ ์ดํ•ดํ•˜๊ธฐ ์–ด๋ ค์›€, ํŠนํžˆ ํ–‰์œ„ ์—”ํ„ฐํ‹ฐ์—์„œ ๊ฐ€๋…์„ฑ์ด ์ €ํ•˜๋จ ์œ ๋‹ˆํฌ ์ธ๋ฑ์Šค๋ฅผ ์ถ”๊ฐ€๋กœ ์‚ฌ์šฉํ•˜์—ฌ ์ถ”๊ฐ€์ ์œผ๋กœ ํ‚ค๋ฅผ ๊ด€๋ฆฌํ•ด์•ผ ํ•จ ์ค‘๋ณต ๋ฐ์ดํ„ฐ๋กœ ์ธํ•œ ํ’ˆ์งˆ ๋ฌธ์ œ PK๋ฅผ ์ธ์กฐ ์‹๋ณ„์ž๋กœ ๊ตฌ์„ฑํ•œ ๊ฒฝ์šฐ, PK ์ œ์•ฝ์€ ์ธ์กฐ์‹๋ณ„ID์— ๋Œ€ํ•ด ์ ์šฉ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ค‘๋ณต ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฐœ์ƒํ•˜๋”๋ผ๋„ DBMS์—์„œ๋Š” ๋ง‰์„ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋‹จ์—์„œ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋Š” ..

    PostgreSQL configuration

    ๋ฐ์ดํ„ฐ ์ˆ˜์ง‘ ๋ฐฉ์‹ 1. ๋ฒ„์ „๋ณ„๋กœ DB ์„ค์น˜ ํ›„ ์—ฐ๊ฒฐํ•ด์„œ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ฟผ๋ฆฌ ๋‚ ๋ ค์„œ ๋ฟŒ๋ ค์ฃผ๊ธฐ 2. ๋ฒ„์ „๋ณ„๋กœ ๋‚ด์šฉ์„ ์ถ”์ถœํ•ด์„œ ํ•œ DB์— ๋ฒ„์ „๋ณ„๋กœ ํ…Œ์ด๋ธ” ๋งŒ๋“ค์–ด์„œ ์ €์žฅํ•˜๊ธฐ ํ…Œ์ด๋ธ”์„ ๋ฒ„์ „๋ณ„๋กœ ๋งŒ๋“œ๋Š” ์ด์œ  : ๋ฒ„์ „๋ณ„๋กœ ์ปฌ๋Ÿผ์ด ๋‹ค๋ฅผ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— configuration ํ™•์ธ ์ฟผ๋ฆฌ select * from pg_settings; ์•„๋ž˜์™€ ๊ฐ™์ด ํ•„์š”ํ•œ ๋‚ด์šฉ์ด ํ•œ๋ฒˆ์— ์กฐํšŒ๋œ๋‹ค. postgres.conf์™€ pg_settings์˜ ์ฐจ์ด postgres.conf PostgreSQL ์ธ์Šคํ„ด์Šค์— ๋Œ€ํ•œ ํ˜„์žฌ ์„ค์ • ๋ณ€์ˆ˜๊ฐ€ ํฌํ•จ๋œ ํŒŒ์ผ ์ผ๋ฐ˜์ ์œผ๋กœ ๋ฐ์ดํ„ฐ ๋””๋ ‰ํ† ๋ฆฌ์— ์กด์žฌ vi๋กœ ์ˆ˜์ •ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ฐฉ์‹์œผ๋กœ ์กฐ์ž‘ํ•˜๊ธฐ ์‰ฝ์ง€ ์•Š์Œ pg_settings ์ธ์Šคํ„ด์Šค์— ๋Œ€ํ•œ ํ˜„์žฌ ์„ค์ • ๋ณ€์ˆ˜๊ฐ€ ํฌํ•จ๋œ ์‹œ์Šคํ…œ ์นดํƒˆ๋กœ๊ทธ ํ…Œ์ด๋ธ” ALTER SYST..

    ๋งฅ(Mac)์— PostgreSQL ์„ค์น˜ + DBeaver ์—ฐ๊ฒฐ

    PostgreSQL ์„ค์น˜ 1. ํ„ฐ๋ฏธ๋„์—์„œ brew๋ฅผ ์ด์šฉํ•˜์—ฌ ์„ค์น˜ brew install postgresql 2. ๋ฒ„์ „ ํ™•์ธ postgres -V 3. ์‹œ์ž‘ brew services start postgresql 4. ์ ‘์† psql postgres ์œ ์ € ํ™•์ธ ์ข…๋ฃŒ brew services stop postgresql DBeaver ์—ฐ๊ฒฐ 1. DBeaver ๋‹ค์šด๋กœ๋“œ ๊ณต์‹ ์‚ฌ์ดํŠธ์— ์ ‘์†ํ•˜์—ฌ ์šด์˜์ฒด์ œ์— ๋งž๋Š” ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œ ํ•œ๋‹ค 2. PostgreSQL ์„ ํƒ 3. ์ •๋ณด ์ž…๋ ฅ (์œ ์ € ์ƒ์„ฑ ํ›„ ์ง„ํ–‰ํ•ด์•ผํ•จ) ํ›„ Test Connection ํด๋ฆญ 4. ๋“œ๋ผ์ด๋ฒ„ ์„ค์น˜ 5. ์™„๋ฃŒ Reference https://shanepark.tistory.com/186 https://pbj0812.tistory.com/407

    ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ฒซ๊ฑธ์Œ | 8์žฅ

    8. ํ…Œ์ด๋ธ” ์„ค๊ณ„์˜ ๊ธฐ์ดˆ ํ…Œ์ด๋ธ”์˜ ๊ฐœ๋…๊ณผ ์ •๊ทœํ˜• ํ…Œ์ด๋ธ” ์„ค๊ณ„ ์ •๊ทœํ˜• ์ฒดํฌํฌ์ธํŠธ ๐Ÿง ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์ฃผ๋ฅ˜๊ฐ€ ๋œ ์ด์œ ๋Š” ๋ฌด์—‡์ผ๊นŒ? โ—๏ธ Garbage in, Garbage out ์ด๋ผ๋Š” ๋ง์ด ์žˆ๋“ฏ์ด, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋ฐ์ดํ„ฐ ์ €์žฅ์€ ๋งค์šฐ ์ค‘์š”ํ•จ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋ฐ์ดํ„ฐ์˜ ์ •ํ•ฉ์„ฑ์€ ๋งค์šฐ ๋†’์€ ๋‹จ๊ณ„๋กœ ์š”๊ตฌ๋จ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ๋ฐ์ดํ„ฐ์˜ ์ •ํ•ฉ์„ฑ์„ ๋†’์ด๊ธฐ ์œ„ํ•œ ์„ค๊ณ„ ๋…ธํ•˜์šฐ๊ฐ€ ๋งค์šฐ ๋ฐœ๋‹ฌํ•จ ํ…Œ์ด๋ธ” ์„ค๊ณ„ ํ…Œ์ด๋ธ” ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๊ทธ๋ฆ‡ ์—ด๊ณผ ํ–‰์œผ๋กœ ๊ตฌ์„ฑ๋œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ (์—‘์…€) ์œ ๋‹ˆํฌํ•œ ๊ธฐ๋ณธํ‚ค๋ฅผ ๊ฐ€์ง€๋Š” ๊ณตํ†ต ์†์„ฑ์„ ๊ฐ€์ง„ ๊ฒƒ์˜ ์ง‘ํ•ฉ ํ˜„์‹ค ์„ธ๊ณ„์˜ ๊ฐœ๋…์ด๋‚˜ ์ง‘ํ•ฉ์„ ๋‚˜ํƒ€๋‚ธ ๊ฒƒ ์„œ๋ฒ„๋‚˜ ์Šคํ† ๋ฆฌ์ง€ ๊ฐ™์€ ๋ฌผ๋ฆฌ์ธต๊ณผ ๊ด€๊ณ„์—†์ด ๋…๋ฆฝ์ ์œผ๋กœ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•ด์„œ '๋…ผ๋ฆฌ ์„ค๊ณ„'๋ผ๊ณ ๋„ ๋ถ€๋ฆ„ ์›์น™ ํ…Œ์ด๋ธ”์ด๋ž€ ๊ณตํ†ต์ ์„ ๊ฐ€์ง„ ์‚ฌ๋ฌผ์˜ ์ง‘ํ•ฉ์„ ๋‚˜ํƒ€๋‚ธ ๊ฒƒ..

    [Redis] ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ธฐ! (8) - ACL

    ACL Access Control List์˜ ์ค„์ž„๋ง๋กœ redis 6๋ถ€ํ„ฐ ๋„์ž…๋œ ๊ธฐ๋Šฅ์ž…๋‹ˆ๋‹ค. ๋‹ค๋ฅธ RDBMS(MySQL, Oracle ๋“ฑ)์—๋Š” ์œ ์ €๋ณ„๋กœ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ ๋ฒ”์œ„๋ฅผ ์ •ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ redis์—๋Š” ์œ ์ €๋ผ๋Š” ๊ฐœ๋…์ด ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ACL์€ ์œ ์ €๋ฅผ ์„ค์ •ํ•˜๊ณ  ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์ปค๋งจ๋“œ์™€ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ํ‚ค ์ธก๋ฉด์—์„œ ํŠน์ • ์—ฐ๊ฒฐ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค. # 1 ACL SETUSER alice on >p1pp0 ~cached:* +get # 2 AUTH alice p1pp0 #1 : alice ๋ผ๋Š” user๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. ์ด๋ฆ„ ํŒจ์Šค์›Œ๋“œ : p1pp0 ์ ‘๊ทผ ๊ฐ€๋Šฅํ•œ ํ‚ค ํŒจํ„ด : cached ๋กœ ์‹œ์ž‘ํ•˜๋Š” key๋“ค์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค. (allkeys : ๋ชจ๋“  ํ‚ค์— ์ ‘๊ทผ ๊ฐ€๋Šฅ) ์‹คํ–‰ ๊ฐ€๋Šฅํ•œ ์ปค๋งจ๋“œ : ์ ‘๊ทผํ•  ๋•Œ๋Š” get ๋งŒ ์‚ฌ์šฉํ•  ์ˆ˜ ..

    [Redis] ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ธฐ! (7) - Pub/Sub

    Pub/Sub - ๋ฉ”์‹œ์ง€ ๋ธŒ๋กœ์ปค Pub/Sub์€ Publish/Subscribe์˜ ์ค„์ž„๋ง์ž…๋‹ˆ๋‹ค. ๋‹จ์–ด ์ž์ฒด์— ๊ตฌ๋…/๊ฒŒ์‹œ๋ผ๋Š” ๋œป์ด ์žˆ๋“ฏ์ด Redis์—์„œ Pub/Sub ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋ฉด ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ฑ„๋„์„ ํ†ตํ•ด ๋ฉ”์‹œ์ง€๋ฅผ ์ฃผ๊ณ ๋ฐ›์Œ์œผ๋กœ์จ ์„œ๋กœ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ตฌ์กฐ ํด๋ผ์ด์–ธํŠธ๋Š” ํ•˜๋‚˜์˜ Topic์„ "Sub"ํ•˜๊ณ , ํ•ด๋‹น ํ† ํ”ฝ์„ "Sub"ํ•œ ๋‹ค๋ฅธ ๋ชจ๋“  ํด๋ผ์ด์–ธํŠธ๋Š” ํ•ด๋‹น Topic์—์„œ "Pub"๋˜๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ์ˆ˜์‹ ํ•ฉ๋‹ˆ๋‹ค. Topic์ด๋ผ๋Š” ๋งค๊ฐœ์ฒด๋ฅผ ํ†ตํ•ด์„œ ๋ฉ”์‹œ์ง€๋ฅผ ์ „๋‹ฌํ•˜๋ฏ€๋กœ ์ˆ˜์‹ ์ž์™€ ๋ฐœ์‹ ์ž๊ฐ€ ์„œ๋กœ๋ฅผ ์•Œ์ง€ ๋ชปํ•˜๋”๋ผ๋„ ๋ฉ”์‹œ์ง€๋ฅผ ์†ก์ˆ˜์‹ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŠน์ง• ๋ฉ”์‹œ์ง€๋Š” Redis์— ์ €์žฅ๋˜์ง€ ์•Š๊ณ  ์ฑ„๋„์„ ๊ตฌ๋…ํ•˜๋Š” ํด๋ผ์ด์–ธํŠธ์— ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ „์†ก๋œ๋‹ค๋Š” ์ ์— ์œ ์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ ์ „๋‹ฌ๋˜๋ฉด ์ด๋ฅผ ๋ฐ”๋กœ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ์‹œ ์ด๋ฅผ ํ†ต..

    ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ฒซ๊ฑธ์Œ | 6์žฅ

    6์žฅ. SQL ๋ฌธ์˜ ๊ธฐ๋ณธ SELECT ๋ฌธ์˜ ์ดํ•ด SELECT INSERT, UPDATE, DELETE VIEW SUBQUERY JOIN ์ฒดํฌํฌ์ธํŠธ ๐Ÿง SQL์„ ์™œ ์‚ฌ์šฉํ• ๊นŒ? ์š”์ฆ˜์€ ORM์œผ๋กœ ์ž‘์—…์„ ๋งŽ์ด ํ•˜๋‹ˆ๊นŒ SQL.. ์ž์„ธํžˆ ๋ชฐ๋ผ๋„ ๋˜๋Š”๊ฑฐ ์•„๋‹๊นŒ? SQL์„ ์•Œ์•„์•ผ ํ•˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ผ๊นŒ? โ—๏ธ ORM์€ SQL์„ ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•˜์—ฌ, ์ ‘๊ทผ์„ฑ์„ ์œ„ํ•ด ๋งŒ๋“ค์–ด์ง„ ํ•˜๋‚˜์˜ ๋„๊ตฌ ORM์ด ์™œ ๋‚˜์˜ค๊ฒŒ ๋˜์—ˆ๋Š”์ง€ SQL ๋™์ž‘์›๋ฆฌ๋Š” ์–ด๋–ป๊ฒŒ ๋œ๊ฑด์ง€ ORM์ด ์—†์„ ๋•Œ๋Š” ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ•˜๋Š”์ง€ ์ œ์ผ ์ค‘์š”ํ•œ ๊ฒƒ์€ ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ๊ฒƒ, DB์— ์ง์ ‘ ์ ‘๊ทผํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์—ด๋žŒํ•˜๊ฑฐ๋‚˜ ํ•„ํ„ฐ๋ง ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. SELECT ๋ฌธ MySQL CLI๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ๋กœ๊ทธ์ธ์„ ํ•œ ํ›„ MySQL ์„œ๋ฒ„์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ชฉ๋ก ํ‘œ์‹œ mysql> show d..

    ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ฒซ๊ฑธ์Œ | 5์žฅ

    5์žฅ. DBMS๋ฅผ ์กฐ์ž‘ํ•  ๋•Œ ํ•„์š”ํ•œ ๊ธฐ๋ณธ ์ง€์‹ ์กฐ์ž‘ํ•˜๊ธฐ ์ „์— ์•Œ์•„๋‘์–ด์•ผ ํ•  ๊ฒƒ โฌ‡๏ธ MySQL ์„ค์น˜๋ฐฉ๋ฒ• โฌ‡๏ธ 2023.01.18 - [์ธํ”„๋ผ/NHN Cloud] - NHN Cloud ์ธ์Šคํ„ด์Šค์— MySQL ์„ค์น˜ํ•˜๊ธฐ (1) - ์••์ถ•ํŒŒ์ผ ์ด์šฉ 2023.01.18 - [์ธํ”„๋ผ/NHN Cloud] - NHN Cloud ์ธ์Šคํ„ด์Šค์— MySQL ์„ค์น˜ํ•˜๊ธฐ (2) - Yum ์ด์šฉ 2023.01.18 - [์ธํ”„๋ผ/NHN Cloud] - NHN Cloud ์ธ์Šคํ„ด์Šค์— MySQL ์„ค์น˜ํ•˜๊ธฐ (3) - ์„ค์ • MySQL๊ณผ ์ปค๋„ฅ์…˜ ๋งŒ๋“ค๊ธฐ ๋กœ๊ทธ์ธ ๋กœ๊ทธ์ธ ์„ฑ๊ณต: MySQL์ด๋ผ๋Š” DBMS์— ์‚ฌ์šฉ์ž๊ฐ€ ๋กœ๊ทธ์ธํ•ด์„œ ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ ์ƒํƒœ mysql> : ํ”„๋กฌํ”„ํŠธ, ์‚ฌ์šฉ์ž ๋ช…๋ น์„ ์ž…๋ ฅ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ์ƒํƒœ ์ปค๋„ฅ์…˜ ๋กœ๊ทธ์ธํ•ด์„œ ํ”„๋กฌํ”„ํŠธ๊ฐ€ ํ‘œ์‹œ๋˜์—ˆ๋‹ค๋Š” ..

    ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ฒซ๊ฑธ์Œ | 4์žฅ

    4์žฅ. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ์•„ํ‚คํ…์ฒ˜ ๊ตฌ์„ฑ ๊ฒฌ๊ณ ํ•˜๊ณ  ๊ณ ์†์˜ ์‹œ์Šคํ…œ์„ ๊ตฌ์ถ•ํ•˜๊ธฐ ์œ„ํ•ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์•„ํ‚คํ…์ฒ˜ ํด๋Ÿฌ์Šคํ„ฐ๋ง ๋ฆฌํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ƒค๋”ฉ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์•„ํ‚คํ…์ฒ˜ ๐Ÿ’ก ์•„ํ‚คํ…์ฒ˜๋ž€ ์‹œ์Šคํ…œ์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ๋ฌผ๋ฆฌ ๋ ˆ๋ฒจ์˜ ์กฐํ•ฉ โžก๏ธ ํ•˜๋“œ์›จ์–ด์™€ ๋ฏธ๋“ค์›จ์–ด์˜ ๊ตฌ์„ฑ = ์–ด๋–ค ๊ธฐ๋Šฅ์„ ๊ฐ€์ง„ ์„œ๋ฒ„๋ฅผ ์ค€๋น„ํ•˜๊ณ  ์–ด๋– ํ•œ ์ €์žฅ์†Œ๋‚˜ ๋„คํŠธ์›Œํฌ ๊ธฐ๊ธฐ์™€ ์กฐํ•ฉํ•  ๊ฒƒ์ธ์ง€? 1. ์—ญ์‚ฌ์™€ ๊ฐœ์š” ์•„ํ‚คํ…์ฒ˜์˜ ์—ญ์‚ฌ '์•„ํ‚คํ…์ฒ˜'๋ผ๋Š” ๋ง์€ ์ถ”์ƒ์ ์ด์–ด์„œ ๋”ฑ ๋“ค์—ˆ์„ ๋•Œ ์ด๋ฏธ์ง€๋ฅผ ๋– ์˜ฌ๋ฆฌ๊ธฐ๊ฐ€ ์‰ฝ์ง€ ์•Š๋‹ค. ๊ทธ๋ž˜์„œ ๊ตฌ์ฒด์ ์ธ ์‹œ์Šคํ…œ ๊ตฌ์„ฑ์„ ์˜ˆ๋กœ ๋“ค์–ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๊ด€ํ•œ ์•„ํ‚คํ…์ฒ˜์˜ ์—ญ์‚ฌ๋Š” ๋‹ค์Œ 3๋‹จ๊ณ„๋กœ ๋‚˜๋ˆ„์–ด์ง„๋‹ค. 1) Stand-alone (~1980๋…„๋Œ€) 2) ํด๋ผ์ด์–ธํŠธ/์„œ๋ฒ„ (1990๋…„๋Œ€~2000๋…„) 3) Web 3๊ณ„์ธต (2000๋…„~ํ˜„์žฌ) 1) Stand-alone ..

    [MySQL] Transaction Isolation Level๊ณผ Lock

    Transaction์˜ ํŠน์„ฑ ํŠธ๋žœ์žญ์…˜์€ DBMS์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐ์ž‘ํ•˜๋Š” ์ตœ์†Œํ•œ์˜ ์ž‘์—…(unit of work) ํŠธ๋žœ์žญ์…˜์€ ์•„๋ž˜์˜ 4๊ฐ€์ง€ ํŠน์„ฑ์ธ ACID๋ฅผ ๋ณด์žฅํ•ด์•ผ ํ•œ๋‹ค. ์›์ž์„ฑ(Atomicity) ์ผ๊ด€์„ฑ(Consistency) ๊ฒฉ๋ฆฌ์„ฑ(Isolation) ์ง€์†์„ฑ(Durability) Transaction Isolation Level ๊ทธ๋Ÿฐ๋ฐ ACID๋ฅผ ์—„๊ฒฉํ•˜๊ฒŒ ์ง€ํ‚ค๋‹ค ๋ณด๋ฉด ๋™์‹œ์„ฑ(Concurrency)๊ฐ€ ๋งค์šฐ ๋–จ์–ด์ง€๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. ๊ทธ๋ž˜์„œ DB ์—”์ง„์€ ACID๋ฅผ ํฌ์ƒํ•ด์„œ ๋™์‹œ์„ฑ์„ ์–ป์„ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•˜๋Š”๋ฐ ๊ทธ๊ฒƒ์ด ๋ฐ”๋กœ ํŠธ๋žœ์žญ์…˜ ๊ฒฉ๋ฆฌ ๋ ˆ๋ฒจ์ด๋‹ค. ๊ฒฉ๋ฆฌ์„ฑ์„ ๋œ ์ง€ํ‚ค๋Š” level์„ ์‚ฌ์šฉํ• ์ˆ˜๋ก ๋ฌธ์ œ ๋ฐœ์ƒ ๊ฐ€๋Šฅ์„ฑ์€ ์ปค์ง€์ง€๋งŒ ๋™์‹œ์— ๋” ๋†’์€ ๋™์‹œ์„ฑ์„ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค. ์ผ๊ด€์„ฑ(Consistency)์™€ ๋™์‹œ์„ฑ(Concur..

    [MySQL] SSL ๋ณด์•ˆ ์ ‘์†๋ฐฉ๋ฒ•

    โœ… ๊ณต์‹๋ฌธ์„œ 4.4.3 mysql_ssl_rsa_setup — SSL/RSA ํŒŒ์ผ ์ƒ์„ฑ 6.3.3.1 MySQL์„ ์‚ฌ์šฉํ•˜์—ฌ SSL ๋ฐ RSA ์ธ์ฆ์„œ ๋ฐ ํ‚ค ์ƒ์„ฑ SSL์ด๋ž€? 1994๋…„ Nescape ์‚ฌ์—์„œ ๊ฐœ๋ฐœํ•œ ๋ณด์•ˆ๊ธฐ์ˆ ๋กœ Secure Sockets Layer์˜ ์•ฝ์ž์ด๋‹ค. ํ˜„์žฌ๋Š” ํ‘œ์ค€ ๋ณด์•ˆ๊ธฐ์ˆ ๋กœ ์‚ฌ์šฉ๋˜๊ณ  ์žˆ์œผ๋ฉฐ SSL์„ ์‚ฌ์šฉ์‹œ ์Šค๋‹ˆํ•‘๊ณผ ํ”ผ์‹ฑ์„ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ๋‹ค. SSL/RSA ํŒŒ์ผ ์ƒ์„ฑ MySQL ์„ค์น˜์‹œ ๋ฒ„์ „๋ณ„๋กœ SSL ํ•„์ˆ˜ ์—ฌ๋ถ€๊ฐ€ ๋‹ฌ๋ผ์ง„๋‹ค. SSL์„ ์‚ฌ์šฉํ•˜๋Š” ๋ณด์•ˆ ์—ฐ๊ฒฐ์„ ์ง€์›ํ•˜๊ณ , ์•”ํ˜ธํ™”๋˜์ง€ ์•Š์€ ์—ฐ๊ฒฐ์—์„œ RSA๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ณด์•ˆ ์•”ํ˜ธ ๊ตํ™˜์„ ์ง€์›ํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ SSL ์ธ์ฆ์„œ ๋ฐ ํ‚ค ํŒŒ์ผ๊ณผ RSA ํ‚ค ์Œ ํŒŒ์ผ์„ ์ƒ์„ฑํ•œ๋‹ค(ํ•ด๋‹น ํŒŒ์ผ์ด ์—†๋Š” ๊ฒฝ์šฐ). ๊ธฐ์กด SSL ํŒŒ์ผ์ด ๋งŒ๋ฃŒ๋œ ๊ฒฝ์šฐ ์ƒˆ SSL ํŒŒ์ผ์„ ์ƒ์„ฑํ•  ์ˆ˜ ..

    [MySQL] InnoDB ๋ฒ„ํผ ํ’€์— ๋Œ€ํ•ด์„œ

    Buffer Pool InnoDB ๋ฒ„ํผ ํ’€์€ InnoDB์—์„œ ๊ฐ€์žฅ ํ•ต์‹ฌ์ ์ธ ๋ถ€๋ถ„ MySQL ์„ฑ๋Šฅ ํŠœ๋‹์˜ ์ค‘์š”ํ•œ ์ธก๋ฉด innodb_buffer_pool_size๋กœ ์„ค์ •ํ•˜๊ณ , ์ „์ฒด ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ์˜ 50~80% ์ˆ˜์ค€์œผ๋กœ ์„ค์ • ๋ฒ„ํผ ํ’€ ๋ฉ”๋ชจ๋ฆฌ๋Š” ํŽ˜์ด์ง•๊ณผ ์บ์‹œ ํšจ์œจ์„ฑ์„ ์œ„ํ•ด LRU ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฆฌ์ŠคํŠธ ํ˜•ํƒœ ์ธ๋ฑ์Šค ์„ค๊ณ„์— ์ž˜ ๋˜์–ด ์žˆ์ง€๋งŒ ์Šฌ๋กœ์šฐ ์ฟผ๋ฆฌ๊ฐ€ ํ•ด๊ฒฐ๋˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ์ด ๋ถ€๋ถ„์„ ์˜์‹ฌํ•ด ๋ด์•ผ ํ•œ๋‹ค. ์‚ฌ์šฉ๋˜๊ณ  ์žˆ๋Š” ์ƒํƒœ ํ™•์ธ ์ฟผ๋ฆฌ SHOW STATUS LIKE '%innodb_buffer_pool%'; innodb_buffer_pool_size ๋ฒ„ํผ ํ’€์˜ ํฌ๊ธฐ๊ฐ€ ํด์ˆ˜๋ก ์„ฑ๋Šฅ์— ์œ ๋ฆฌํ•จ ๋ฒ„ํผ ํ’€ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์ถฉ๋ถ„ํžˆ ํฐ ์–‘์œผ๋กœ ํ• ๋‹น๋˜์–ด ์žˆ๋‹ค๋ฉด innodb๋Š” ์ธ๋ฉ”๋ชจ๋ฆฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์ฒ˜๋Ÿผ ๋™์ž‘ ๋””์Šคํฌ์˜ ๋ฐ์ดํ„ฐ ํŒŒ์ผ์ด๋‚˜ ์ธ๋ฑ์Šค ..

    RealMySQL 8.0 | 4.2 InnoDB ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„ ์•„ํ‚คํ…์ฒ˜

    RealMySQL 8.0 ์„ ์ฝ๊ณ  ์ •๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค. InnoDB ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„ ์•„ํ‚คํ…์ฒ˜ InnoDB → MySQL์˜ ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„ ๊ฐ€์šด๋ฐ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋˜๊ณ , ๊ฑฐ์˜ ์œ ์ผํ•˜๊ฒŒ ๋ ˆ์ฝ”๋“œ ๊ธฐ๋ฐ˜์˜ ์ž ๊ธˆ์„ ์ œ๊ณตํ•˜์—ฌ ๋™์‹œ์„ฑ ์ฒ˜๋ฆฌ๊ฐ€ ๊ฐ€๋Šฅํ•˜๊ณ , ์•ˆ์ •์ ์ด๋ฉฐ ๋›ฐ์–ด๋‚œ ์„ฑ๋Šฅ ๊ตฌ์กฐ 4.2.1 ํ”„๋ผ์ด๋จธ๋ฆฌ ํ‚ค์— ์˜ํ•œ ํด๋Ÿฌ์Šคํ„ฐ๋ง InnoDB์˜ ๋ชจ๋“  ํ…Œ์ด๋ธ”์€ ๊ธฐ๋ณธ์ ์œผ๋กœ ํ”„๋ผ์ด๋จธ๋ฆฌ ํ‚ค๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํด๋Ÿฌ์Šคํ„ฐ๋ง ๋˜์–ด ์ €์žฅ → ์ฆ‰, ํ”„๋ผ์ด๋จธ๋ฆฌ ํ‚ค ๊ฐ’์˜ ์ˆœ์„œ๋Œ€๋กœ ๋””์Šคํฌ์— ์ €์žฅ๋˜์–ด → ํ”„๋ผ์ด๋จธ๋ฆฌ ํ‚ค์— ์˜ํ•œ ์Šค์บ”์€ ์ƒ๋‹นํžˆ ๋นจ๋ฆฌ ์ฒ˜๋ฆฌ๋จ ๊ฒฐ๊ณผ์ ์œผ๋กœ ์ฟผ๋ฆฌ์˜ ์‹คํ–‰ ๊ณ„ํš์—์„œ ํ”„๋ผ์ด๋จธ๋ฆฌ ํ‚ค๋Š” ๋‹ค๋ฅธ ๋ณด์กฐ ์ธ๋ฑ์Šค์— ๋น„ํ•ด ๋†’์€ ๋น„์ค‘์œผ๋กœ ์„ค์ • InnoDB ํ…Œ์ด๋ธ” ๊ตฌ์กฐ = ์˜ค๋ผํด์˜ IOT(Index Organized Table) ๊ตฌ์กฐ 4.2.2 ์™ธ๋ž˜ ํ‚ค ์ง€์› Only In..

    RealMySQL 8.0 | 4.1 MySQL ์—”์ง„ ์•„ํ‚คํ…์ฒ˜

    RealMySQL 8.0 ์„ ์ฝ๊ณ  ์ •๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค. 4.1.1 ์ „์ฒด ๊ตฌ์กฐ MySQL ์„œ๋ฒ„ = ์‚ฌ๋žŒ์˜ ๋จธ๋ฆฌ ์—ญํ• ์„ ๋‹ด๋‹นํ•˜๋Š” MySQL ์—”์ง„ + ์†๋ฐœ ์—ญํ• ์„ ๋‹ด๋‹นํ•˜๋Š” ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„ MySQL ์—”์ง„ ์ปค๋„ฅ์…˜ ํ•ธ๋“ค๋Ÿฌ : ํด๋ผ์ด์–ธํŠธ๋กœ๋ถ€ํ„ฐ ์ปค๋„ฅ์…˜ ๋ฐ ์ฟผ๋ฆฌ ์š”์ฒญ์„ ์ฒ˜๋ฆฌ SQL ์ธํ„ฐํŽ˜์ด์Šค : DML, DDL, Procedure, View ๋“ฑ SQL ์ธํ„ฐํŽ˜์ด์Šค ์ œ๊ณต SQL ํŒŒ์„œ : SQL ๋ฌธ๋ฒ• ์˜ค๋ฅ˜ ํƒ์ง€ ๋ฐ SQL ์ฟผ๋ฆฌ ๋ฌธ์žฅ์„ MySQL์ด ์ฒ˜๋ฆฌํ•˜๊ธฐ ์ข‹์€ ํ† ํฐ ๋‹จ์œ„๋กœ ๋‚˜๋ˆ ์„œ ํŠธ๋ฆฌ ํ˜•ํƒœ๋กœ ํŒŒ์‹ฑํ•˜๋Š” ์ž‘์—… ๋‹ด๋‹น SQL ์˜ตํ‹ฐ๋งˆ์ด์ € : ์ฟผ๋ฆฌ์˜ ์ตœ์ ํ™”๋œ ์‹คํ–‰์„ ๋‹ด๋‹น ์บ์‹œ & ๋ฒ„ํผ : ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ์œ„ํ•œ ๋ณด์กฐ ์ €์žฅ์†Œ ๊ธฐ๋Šฅ ๋‹ด๋‹น ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„ ํ•ธ๋“ค๋Ÿฌ API๋ฅผ ๋งŒ์กฑํ•˜๋ฉด ๋ˆ„๊ตฌ๋“ ์ง€ ์Šคํ† ๋ฆฌ์ง€ ์—”์ง„์„ ๊ตฌํ˜„ํ•˜์—ฌ MySQL์„ ์ถ”๊ฐ€ํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ ์‹ค์ œ..

    [Redis] ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ธฐ! (6) - ํ™œ์šฉ ์˜ˆ์ œ์™€ ์žฅ์•  ํฌ์ธํŠธ

    ํ™œ์šฉ ์˜ˆ์ œ Counting Strings ๋‹จ์ˆœ ์ฆ๊ฐ ์—ฐ์‚ฐ INCR / INCRBY / INCRBYFLOAT / HINCRBY / HINCRBYFLOAT / ZINCRBY Bits ๋ฐ์ดํ„ฐ ์ €์žฅ๊ณต๊ฐ„ ์ ˆ์•ฝ ์ •์ˆ˜๋กœ ๋œ ๋ฐ์ดํ„ฐ๋งŒ ์นด์šดํŒ… ๊ฐ€๋Šฅ userid ๊ฐ’์ด 0 ์ด์ƒ์˜ ์ •์ˆ˜๊ฐ’์ผ ๋•Œ๋งŒ ์นด์šดํŒ…์ด ๊ฐ€๋Šฅ ์‹œํ€€์…œํ•œ ๊ฐ’์ด ์—†์„ ๋•Œ์—๋Š” ์‚ฌ์šฉ ๋ถˆ๊ฐ€ SETBIT / BITCOUNT HyperLogLogs ๋Œ€๋Ÿ‰์˜ ์œ ๋‹ˆํฌํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์นด์šดํŒ…ํ•  ๋•Œ ์ ์ ˆ set๊ณผ ๋น„์Šทํ•˜์ง€๋งŒ ์ €์žฅ๋˜๋Š” ์šฉ๋Ÿ‰์ด ๋งค์šฐ ์ž‘์Œ ์›น์‚ฌ์ดํŠธ์— ๋ฐฉ๋ฌธํ•œ ์œ ๋‹ˆํฌํ•œ IP ์ˆ˜ / ํ•˜๋ฃจ ์ข…์ผ ํฌ๋กค๋งํ•œ URL ์ˆ˜ / ๊ฒ€์ƒ‰์—”์ง„์—์„œ ๊ฒ€์ƒ‰๋œ ์œ ๋‹ˆํฌํ•œ ๋‹จ์–ด ์ˆ˜ PFADD / PFCOUNT / PFMERGE Messaging Lists ์ž์ฒด์ ์œผ๋กœ blocking ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ด์„œ Event ..

    [Redis] ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ธฐ! (5) - ์•„ํ‚คํ…์ฒ˜

    Replication replicaof ์ปค๋งจ๋“œ๋กœ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋ณต์ œ ์—ฐ๊ฒฐ ๋น„๋™๊ธฐ์‹ ๋ณต์ œ Master๊ฐ€ ๋‹ค์šด๋˜๋”๋ผ๋„ Replica๊ฐ€ ์„œ๋น„์Šค๋ฅผ ๊ณ„์† ํ•  ์ˆ˜ ์žˆ์Œ HA ๊ธฐ๋Šฅ์ด ์—†์œผ๋ฏ€๋กœ ์žฅ์•  ์ƒํ™ฉ ์‹œ ์ˆ˜๋™ ๋ณต๊ตฌ replicaof no one ์„œ๋ฒ„ ๋‹ค์šด์‹œ AOF ๋˜๋Š” RDB๋กœ ์žฌ์‹œ์ž‘ replication ๊ณผ์ •์—์„œ fork๊ฐ€ ๋ฐœ์ƒํ•˜๋ฏ€๋กœ ๋ฉ”๋ชจ๋ฆฌ ๋ถ€์กฑ ๋ฐœ์ƒ ๊ฐ€๋Šฅ ํŠน์ • ์ปค๋งจ๋“œ disable ํ•˜๊ธฐ Sentinel ์„ผํ‹ฐ๋„์€ ์ผ๋ฐ˜ ๋…ธ๋“œ๋“ค์„ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ชจ๋‹ˆํ„ฐ๋ง(monitoring)ํ•˜๋Š” ์—ญํ•  ์ž๋™ ํŽ˜์ผ์˜ค๋ฒ„ ๊ฐ€๋Šฅํ•œ HA ๊ตฌ์„ฑ ๋งˆ์Šคํ„ฐ๊ฐ€ ๋น„์ •์ƒ์ด๋ฉด ์ž๋™ ํŽ˜์ผ์˜ค๋ฒ„(Automatic Failover) ์—ฐ๊ฒฐ ์ •๋ณด ๋ณ€๊ฒฝ ํ•„์š” ์—†์Œ ์„ผํ‹ฐ๋„ ๋…ธ๋“œ๋Š” ํ•ญ์ƒ 3๋Œ€ ์ด์ƒ, ํ™€์ˆ˜๋กœ ์กด์žฌํ•ด์•ผ ํ•จ ๊ณผ๋ฐ˜์ˆ˜ ์ด์ƒ์˜ ์„ผํ‹ฐ๋„์ด ๋™์˜ํ•ด์•ผ ํŽ˜์ผ์˜ค๋ฒ„ ์ง„ํ–‰ ์˜ˆ) ๋„คํŠธ์›Œํฌ์˜ ์ž ..

    [Redis] ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ธฐ! (4) - ์˜์†์„ฑ

    ๋ฐ์ดํ„ฐ ์šด์˜๊ณผ ๊ด€๋ จ๋œ ๊ฒƒ์œผ๋กœ redis์— ๋ฐ์ดํ„ฐ๋ฅผ ์˜๊ตฌ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” 2๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค. Redis๋Š” In-memory ๋ฐ์ดํ„ฐ ์Šคํ† ์–ด ์„œ๋ฒ„ ์žฌ์‹œ์ž‘ ์‹œ ๋ชจ๋“  ๋ฐ์ดํ„ฐ ์œ ์‹ค ๋ณต์ œ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•ด๋„ ์‚ฌ๋žŒ์˜ ์‹ค์ˆ˜ ๋ฐœ์ƒ ์‹œ ๋ฐ์ดํ„ฐ ๋ณต์› ๋ถˆ๊ฐ€ Redis๋ฅผ ์บ์‹œ ์ด์™ธ์˜ ์šฉ๋„๋กœ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ์ ์ ˆํ•œ ๋ฐ์ดํ„ฐ ๋ฐฑ์—… ํ•„์š” AOF Append Only File ๋ฐฉ์‹ ๋ชจ๋“  write/update ์ปค๋งจ๋“œ๋ฅผ log ํŒŒ์ผ์— ๊ธฐ๋กํ•˜๋Š” ํ˜•ํƒœ redis ํ”„๋กœํ† ์ฝœ ํ˜•ํƒœ๋กœ ์ €์žฅ RDB snapshot ๋ฐฉ์‹ ์ˆœ๊ฐ„์ ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ์— ์žˆ๋Š” ๋‚ด์šฉ์„ disk์— ์˜ฎ๊ฒจ๋‹ด๋Š” ๋ฐฉ์‹ ๋ฐ”์ด๋„ˆ๋ฆฌ ํŒŒ์ผ ํ˜•ํƒœ๋กœ ์ €์žฅ AOF vs RDB ์„ ํƒ ๊ธฐ์ค€ redis๋ฅผ ์บ์‹œ๋กœ๋งŒ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ๋‘˜ ๋‹ค ์“ธ ํ•„์š” ์—†๋‹ค. 1. ๋ฐฑ์—…์€ ํ•„์š”ํ•˜์ง€๋งŒ ์–ด๋Š ์ •๋„ ๋ฐ์ดํ„ฐ ์†์‹ค์ด ๋ฐœ์ƒํ•ด๋„ ๊ดœ์ฐฎ์€ ๊ฒฝ์šฐ ..

    [Redis] ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ธฐ! (3) - ์บ์‹ฑ ์ „๋žต

    ๋ฐ์ดํ„ฐ ์œ ํ˜•๊ณผ ํ•ด๋‹น ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ์•ก์„ธ์Šค ํŒจํ„ด์„ ์ž˜ ๊ณ ๋ คํ•ด์„œ ์„ ํƒํ•ด์•ผ ํ•œ๋‹ค. ์ฝ๊ธฐ ์ „๋žต Look-Aside(Lazy Loading) ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๋Š” ์ž‘์—…์ด ๋งŽ์„ ๋•Œ ์‚ฌ์šฉ (๊ฐ€์žฅ ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•) Cache Hit ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•œ๋‹ค. ๋จผ์ € cache ์„œ๋ฒ„(redis)๋ฅผ ํ™•์ธํ•œ๋‹ค. cache์— ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ์œผ๋ฉด DB๋ฅผ ์กฐํšŒํ•˜์ง€ ์•Š๊ณ  cache์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ”๋กœ ๋ฐ˜ํ™˜ํ•œ๋‹ค. (Cache Hit) Cache Miss ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•œ๋‹ค. ๋จผ์ € cache ์„œ๋ฒ„(redis)๋ฅผ ํ™•์ธํ•œ๋‹ค. cache ์„œ๋ฒ„์— ๋ฐ์ดํ„ฐ๊ฐ€ ์—†์œผ๋ฉด DB๋ฅผ ์กฐํšŒํ•˜์—ฌ cache ์„œ๋ฒ„์— ์ €์žฅํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. (Cache Miss) Lazy Loading cache๋Š” ์ฐพ๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์—†์„ ๋•Œ์—๋งŒ ์ž…๋ ฅ๋˜๊ธฐ ๋•Œ๋ฌธ์— lazy loading์ด๋ผ๊ณ ..

    [Redis] ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ธฐ! (2) - ๋ฐ์ดํ„ฐ ํƒ€์ž…

    Redis๋Š” ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ ํƒ€์ž…๊ณผ ๋ฐ์ดํ„ฐ ํƒ€์ž…๋ณ„ ์ปค๋งจ๋“œ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. Key ์„ค์ • ํฌ์ธํŠธ Key๋Š” ๋ฌธ์ž์—ด์ด๋ฏ€๋กœ ์ตœ๋Œ€ 512MB๊นŒ์ง€ ๊ฐ€๋Šฅ ๊ธธ์ด ๋“ฑ ๊ฐ€๋…์„ฑ์„ ๊ณ ๋ คํ•ด์•ผํ•˜๊ณ , ์Šคํ‚ค๋งˆ๋ฅผ ์œ ์ง€ํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„ํ•  ๊ฒƒ ex) user:1000:followers Strings ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ Redis ๋ฐ์ดํ„ฐ ์œ ํ˜• ํ…์ŠคํŠธ, ์ง๋ ฌํ™”๋œ ๊ฐœ์ฒด ๋ฐ ์ด์ง„ ๋ฐฐ์—ด์„ ํฌํ•จํ•œ ๋ฐ”์ดํŠธ ์‹œํ€€์Šค๋ฅผ ์ €์žฅ, ์ด๋ฏธ์ง€ ์ €์žฅ ๊ฐ€๋Šฅ ์บ์‹ฑ์— ์ž์ฃผ ์‚ฌ์šฉ๋˜์ง€๋งŒ ์นด์šดํ„ฐ๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ , ๋น„ํŠธ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ๋„ ์ œ๊ณต ๋‹จ์ผ ๋ฌธ์ž์—ด์€ ์ตœ๋Œ€ 512MB ์˜ˆ ๋ฌธ์ž์—ด ์ €์žฅํ•˜๊ณ  ๊ฒ€์ƒ‰ > SET user:1 minju OK > GET user:1 "minju" ์ง๋ ฌํ™”๋œ JSON ๋ฌธ์ž์—ด ์ €์žฅํ•˜๊ณ  ์ง€๊ธˆ๋ถ€ํ„ฐ 100์ดˆ ํ›„์— ๋งŒ๋ฃŒ๋˜๋„๋ก ์„ค์ • > SET ticket:27 "\"..

    [Redis] ์ž์„ธํžˆ ์•Œ์•„๋ณด๊ธฐ! (1) - ๊ฐœ๋… ๋ฐ ํŠน์ง•

    redis๋ž€? โœ… ๊ณต์‹๋ฌธ์„œ์—์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ •์˜๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. Redis๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, ์บ์‹œ, ๋ฉ”์‹œ์ง€ ๋ธŒ๋กœ์ปค ๋ฐ ์ŠคํŠธ๋ฆฌ๋ฐ ์—”์ง„์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ์˜คํ”ˆ ์†Œ์Šค(BSD ๋ผ์ด์„ผ์Šค), ๋ฉ”๋ชจ๋ฆฌ ๋‚ด ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ์ €์žฅ์†Œ์ž…๋‹ˆ๋‹ค. Redis๋Š” strings, hashes, lists, sets, sorted sets with range queries, bitmaps, hyperloglogs, geospatial indexes, and streams๊ณผ ๊ฐ™์€ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. Redis๋Š” ๊ธฐ๋ณธ ์ œ๊ณต ๋ณต์ œ, Lua ์Šคํฌ๋ฆฝํŒ…, LRU ์ œ๊ฑฐ, ํŠธ๋žœ์žญ์…˜ ๋ฐ ๋‹ค์–‘ํ•œ ์ˆ˜์ค€์˜ ์˜จ๋””์Šคํฌ ์ง€์†์„ฑ์„ ๊ฐ–์ถ”๊ณ  ์žˆ์œผ๋ฉฐ Redis Sentinel์„ ํ†ตํ•œ ๊ณ ๊ฐ€์šฉ์„ฑ ๋ฐ Redis ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ํ†ตํ•œ ์ž๋™ ํŒŒํ‹ฐ์…”๋‹์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. redis๋Š” remot..

    ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ฒซ๊ฑธ์Œ | 3์žฅ

    ์™œ ์šฐ๋ฆฌ๋Š” ์‹œ์Šคํ…œ์— ๋ˆ์„ ๋‚ด๋Š”๊ฐ€ ์‹œ์Šคํ…œ์ด๋ž€ ๋ฌด์—‡์„ ์œ„ํ•ด ๋„์ž…ํ•˜๋Š”๊ฐ€? → ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ž€ ๋ฌด์—‡์„ ์œ„ํ•ด ๋„์ž…ํ•˜๋Š”๊ฐ€? → ์™œ ์‹œ์Šคํ…œ์— ๋ˆ์„ ๋‚ด๋Š”๊ฐ€? ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ดˆ๊ธฐ๋น„์šฉ ์‹œ์Šคํ…œ์˜ ์ „์ฒด๋น„์šฉ ๋‚ด์—ญ ์ดˆ๊ธฐ๋น„์šฉ : ์ตœ์ดˆ์— ์ง€๊ธ‰ํ•˜๋Š” ๋ˆ ์šด์˜๋น„์šฉ : ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•˜๋Š” ๊ธฐ๊ฐ„์— ๊ณ„์†ํ•ด์„œ ์ง€๊ธ‰ํ•˜๋Š” ๋ˆ ์ผ๋ฐ˜์ ์œผ๋กœ ์šด์˜๋น„์šฉ์˜ ๋‹จ์œ„ ๊ธˆ์•ก(์›” ๋น„์šฉ์ด๋‚˜ ์—ฐ๊ฐ„ ๋น„์šฉ)์€ ์ดˆ๊ธฐ๋น„์šฉ๋ณด๋‹ค ๋‚ฎ๊ฒŒ ์„ค์ •๋จ ํ•˜์ง€๋งŒ ์ดˆ๊ธฐ๋น„์šฉ < ์šด์˜๋น„์šฉ ํ•ฉ์ธ ๊ฒฝ์šฐ๋„ ๋“œ๋ฌผ์ง€ ์•Š์Œ ์ดˆ๊ธฐ๋น„์šฉ๊ณผ ์šด์˜๋น„์šฉ์˜ ๋น„์œจ์„ ๋ฐ”๊ฟ”์„œ ์ „์ฒด๋น„์šฉ์„ ๋‚ฎ๊ฒŒ ๋ณด์ด๋ ค๋Š” ์‹ฌ๋ฆฌ์ ์ธ ํŠธ๋ฆญ๋„ ์žˆ์Œ ๋ผ์ด์„ ์Šค ์š”๊ธˆ๊ณผ ๊ฐ€๊ฒฉ์˜ ์ฐจ์ด ๋ผ์ด์„ ์Šค : ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋„์ž…ํ•  ๋•Œ ์ดˆ๊ธฐ๋น„์šฉ, ์†Œํ”„ํŠธ์›จ์–ด ์‚ฌ์šฉํ—ˆ๊ฐ€๋ฃŒ ์ฐจ์ด ํŒ๋งค๋‹จ์œ„๊ฐ€ ํŠน์ˆ˜ํ•˜๋‹ค ์šด์˜๋น„์šฉ์„ ์ง€๊ธ‰ํ•˜์ง€ ์•Š์œผ๋ฉด ํ˜„์‹ค์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค. ํ”„๋กœ์„ธ์„œ ๋ผ์ด์„ ์Šค์™€ ์‚ฌ์šฉ์ž ๋ผ์ด์„ ์Šค ..