๐Ÿค– Backend/Database

์†Œ๋งˆ ๋ฉ˜ํ† ๋‹˜๊ณผ ๋ฐฐํฌ DB์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ง์ ‘ ์ˆ˜์ •ํ•˜๋Š” ์ผ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•˜๋Š” ๋„์ค‘์— ํ„ฐ๋ฏธ๋„์„ ์ผœ๋Š” ๋‚˜๋ฅผ ๋ณด๊ณ  ๊นœ์ง ๋†€๋ผ๋ฉฐ ํ„ฐ๋ฏธ๋„๋กœ ๊ด€๋ฆฌ๋ฅผ ํ•˜๊ณ  ์žˆ๋ƒ๊ณ  ๋ฌผ์—ˆ๋˜ ๊ฒƒ์ด ์•„์ง๋„ ๊ธฐ์–ต๋‚œ๋‹ค. ์ปฌ๋Ÿผ๋ช… ์กฐ์ฐจ๋„ ์ œ๋Œ€๋กœ ๋ณด์ด์ง€ ์•Š๋Š” mysql cli๋ฅผ ์ผ๋˜ ์ด์œ ๋ฅผ ์ƒ๊ฐํ•ด๋ดค๋”๋‹ˆ, ๋ฐฑ์—”๋“œ ๊ฐœ๋ฐœ์„ ์—ฌ๊ธฐ์ €๊ธฐ์„œ ๋ฐฐ์šธ ๋•Œ ์ด๋ ‡๊ฒŒ ํ•˜๋Š” ๊ฒƒ๋งŒ ๋ด์™”๊ณ  ํ”„๋กœ์ ํŠธ ๊ฐœ๋ฐœ๊นŒ์ง€๋งŒ ํ•˜๊ณ  ์œ ์ง€๋ณด์ˆ˜ ๋‹จ๊ณ„๊นŒ์ง€ ๊ฐ€๋ณด์ง€ ์•Š์•„ ๋ถˆํŽธํ•จ์„ ํฌ๊ฒŒ ๋Š๊ปด๋ณด์ง€ ๋ชปํ•ด์„œ ์˜€๋˜ ๊ฒƒ ๊ฐ™๋‹ค. Datagrip์„ ๋ฐฐ์šฐ๋ฉด์„œ ์‹ ์„ธ๊ณ„๋ฅผ ๋ง›๋ณด๊ณ  ์—ฌ๊ธฐ์ €๊ธฐ์— ์ธ„๋ผ์ดํ•ด์™”๋Š”๋ฐ, ๋ถˆํ˜ธํ•˜๋Š” ์‚ฌ๋žŒ์€ ๋ชป๋ณธ ๊ฒƒ ๊ฐ™๋‹ค. ํ•˜๋‚˜ ์•„์‰ฌ์šด ์ ์€ public subnet์— ์žˆ์–ด์•ผ๋งŒ ๊ฐ€๋Šฅํ•ด์„œ ๋ณด์•ˆ์ ์œผ๋กœ ์•„์‰ฝ๋‹ค๋Š” ๊ฒƒ์ด์—ˆ๋Š”๋ฐ, ๋‚ด๊ฐ€ ๋ชจ๋ฅด๋Š” ๊ฒƒ์ด์˜€๋‹ค.... SSH Tunneling์„ ํ†ตํ•ด ์•ˆ์ „ํ•˜๋ฉด์„œ๋„ ํŽธํ•˜๊ฒŒ DB๋ฅผ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ..
์ด์ „ ๋…ธ์…˜ ๋ธ”๋กœ๊ทธ์˜ SQL Tutorial (2021.01.17)๋กœ๋ถ€ํ„ฐ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜๋œ ๊ธ€์ž…๋‹ˆ๋‹ค. Aggreate Functions aggregate functions(์ง‘๊ณ„ ํ•จ์ˆ˜)์€ ํ•ญ์ƒ ์‚ฌ์šฉํ•˜๊ฒŒ ๋  ๊ฒƒ์ด๋‹ˆ ์ต์ˆ™ํ•ด์ ธ์•ผ ํ•œ๋‹ค. arithmetic operators๋Š” ํ•œ ํ–‰์˜ ์—ด๊ฐ„์˜ ์—ฐ์‚ฐ๋งŒ ์ˆ˜ํ–‰ํ•˜์ง€๋งŒ, aggregate functions์€ ํ–‰ ์ „์ฒด์— ๊ฑธ์ณ์„œ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. COUNT Counting all rows COUNT ๋Š” ํŠน์ • ์—ด์˜ ์ˆซ์ž๋ฅผ ์„ธ๋ฆฌ๋Š” aggregate function์ด๋‹ค.. ์•„๋ž˜์˜ ๋‘ SQL ๋ฌธ์˜ ๊ฒฐ๊ณผ๋Š” ๊ฐ™๋‹ค. SELECT COUNT(*) FROM tutorial.aapl_historical_stock_price SELECT * FROM tutorial.aapl_historical_sto..
์ด์ „ ๋…ธ์…˜ ๋ธ”๋กœ๊ทธ์˜ [MySQL] DB Authentication ๋ฌธ์ œ | ERROR 1698 | Access denied for user 'root' (2021.07.26)๋กœ๋ถ€ํ„ฐ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜๋œ ๊ธ€์ž…๋‹ˆ๋‹ค. MariaDB 10.0 ๋ฒ„์ „๋ถ€ํ„ฐ๋Š” ๋ณด์•ˆ ๋ฐฉ์‹์ด 'Unix Socket' ๋ฐฉ์‹์ด ์ ์šฉ๋œ๋‹ค. mysql -u root -p password spring datasource ์ ‘์† ๋”ฐ๋ผ์„œ ์ด ๋‘ ๊ฐ€์ง€๋ฅผ ์œ„ํ•ด์„œ๋Š” plugin ์„ ๋ฐ”๊ฟ”์•ผํ•œ๋‹ค. ๋งŒ์•ฝ ์ดˆ๊ธฐ ์ ‘์†์ด๋ผ๋ฉด, ๋น„๋ฐ€๋ฒˆํ˜ธ๋„ ์„ค์ •ํ•ด์ค˜์•ผํ•œ๋‹ค. $ sudo mysql mysql> use mysql; mysql> CREATE USER 'user'@'localhost' IDENTIFIED BY 'password'; mysql> CREATE USER 'user'@'%' ..
์ด์ „ Velog์˜ ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์กฐํšŒ ์„ฑ๋Šฅ์„ ๊ฐœ์„ ํ•ด๋ณด์ž (2) : ์ธ๋ฑ์Šค ํŠœ๋‹ (2023.11.12) ๋กœ๋ถ€ํ„ฐ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜๋œ ๊ธ€์ž…๋‹ˆ๋‹ค. Github main repo / Github server repo ๋™๊ธฐ 1ํŽธ์˜ ์นดํ…Œ๊ณ ๋ฆฌ๋ณ„ ๋ฆฌ๋ทฐ ์กฐํšŒ๋ฅผ ์‹œ์ž‘์œผ๋กœ 500ms๊ฐ€ ๋„˜์–ด๊ฐ€๋Š” ์š”์ฒญ๋“ค์„ ์œ„์ฃผ๋กœ Cardinality/Selectivity๋ฅผ ๊ณ ๋ คํ•˜์—ฌ ์ธ๋ฑ์Šค๋ฅผ ์ƒ์„ฑํ–ˆ๋‹ค. ํ•˜์ง€๋งŒ 1ํŽธ๊นŒ์ง€๋Š” ์ง„์งœ ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ์•„๋‹ˆ์˜€๋‹ค. 2ํŽธ๋ถ€ํ„ฐ ์—ฌ๊ธฐ์–ด๋•Œ์ปดํผ๋‹ˆ ๋ฒค์ฒ˜ ํ”„๋กœ์ ํŠธ์ธ๋งŒํผ ์—ฌ๊ธฐ์–ด๋•Œ ํ™๋ณด์ž๋ฃŒ์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ ๊ทœ๋ชจ์—์„œ ์„ฑ๋Šฅ์„ ์ธก์ •ํ•ด๋ณด๊ณ  ํ•„์š”ํ•˜๋‹ค๋ฉด ๊ฐœ์„ ๊นŒ์ง€ ์ง„ํ–‰ํ•ด๋ณด์ž. ๊ธฐ์กด ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ ์Šค์ผ€์ผ ์—ฌํ–‰์ƒํ’ˆ: 30 (๊ฐ ์นดํ…Œ๊ณ ๋ฆฌ 10๊ฐœ์”ฉ, ์ˆ™์†Œ, ์‹๋‹น, ๋ Œํ„ฐ์นด) ์˜ˆ์•ฝ: 540,000 (์นดํ…Œ๊ณ ๋ฆฌ ๋ณ„ 180,000) - ์—ฌํ–‰์ƒํ’ˆ ๋งˆ..
์ด์ „ Velog์˜ ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์กฐํšŒ ์„ฑ๋Šฅ์„ ๊ฐœ์„ ํ•ด๋ณด์ž (1) : ์ธ๋ฑ์Šค ์ ์šฉ (2023.10.27) ๋กœ๋ถ€ํ„ฐ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜๋œ ๊ธ€์ž…๋‹ˆ๋‹ค. Github main repo / Github server repo ๋™๊ธฐ ์ง€๋‚œ ๋ฒˆ์— ๋‹ค์–‘ํ•œ JPA ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ณ  ๋น„ํšจ์œจ์ ์œผ๋กœ ์ƒ์„ฑ๋˜๋Š” ์ฟผ๋ฆฌ๋ฅผ ์ตœ์ ํ™”ํ•ด ์ „์ฒด์ ์ธ ์„œ๋ฒ„ ์„ฑ๋Šฅ์ด ๋Œ€ํญ ํ–ฅ์ƒ๋˜์—ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋ฆฌ๋ทฐ ์กฐํšŒ API์˜ ์ผ๋ถ€ ์š”์ฒญ์˜ ๊ฒฝ์šฐ ๋Œ€ํญ ํ–ฅ์ƒ๋˜์—ˆ์Œ์—๋„ ๋งŒ์กฑ์Šค๋Ÿฌ์šด ์ฟผ๋ฆฌ ์ฒ˜๋ฆฌ ์‹œ๊ฐ„์— ๋„๋‹ฌํ•˜์ง€ ๋ชปํ–ˆ๋‹ค. ๋‹ค์–‘ํ•œ ์ •๋ ฌ๊ณผ ํ•„ํ„ฐ๋ง์„ ์ง€์›ํ•˜๋Š” ์กฐํšŒ ์ฟผ๋ฆฌ์ธ๋งŒํผ ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์กฐ๊ฑด์ ˆ, ์ •๋ ฌ ์ ์šฉํ•˜๋Š”๋ฐ ๋งŽ์€ ๋น„์šฉ์ด ๋“ค๊ณ , ํŠนํžˆ ๋ฆฌ๋ทฐ์˜ ๋ถ„์„ ๊ฒฐ๊ณผ ์ค‘ '์ฒญ๊ฒฐ' ์†์„ฑ์ด ํฌํ•จ๋œ ๋ฆฌ๋ทฐ๋“ค์ด๋‚˜ ๋ฆฌ๋ทฐ์˜ ๋ถ„์„ ๊ฒฐ๊ณผ ์ค‘ '์ฒญ๊ฒฐ' ์†์„ฑ์˜ '๋จผ์ง€' ํ‚ค์›Œ๋“œ๊ฐ€ ํฌํ•จ๋œ ๋ฆฌ๋ทฐ๋“ค๊ณผ ๊ฐ™์ด review ํ…Œ์ด๋ธ”๊ณผ..
๋””ํ”„๋งŒ 14๊ธฐ์—์„œ ์ฐธ์—ฌ ์ค‘์ธ ํ”„๋กœ์ ํŠธ์—์„œ ๋ฐฑ์—”๋“œ ๋ฆฌ๋“œ ๋ถ„์ด ์—”ํ‹ฐํ‹ฐ์˜ id๋ฅผ UUID, ULID๋กœ ์„ค์ •ํ•œ ๊ฒƒ์„ ๋ณด์•˜๋‹ค. ๋Š˜ IDENTITY๋กœ ์„ค์ •ํ•˜์—ฌ MySQL์ด AUTO_INCREMENT๋กœ ๊ด€๋ฆฌํ•˜๋„๋ก ์œ„์ž„ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ธฐ์กด ๋ฐฉ์‹๊ณผ ๋Œ€๋น„ํ•ด์„œ ์–ด๋–ค ์žฅ์ ์ด ์žˆ๊ธธ๋ž˜ ์‚ฌ์šฉํ•˜๋Š”์ง€ ์•Œ์•„๋ณด์•˜๋‹ค. AUTO_INCREMENT ์ „๋žต์˜ ๋‹จ์  ์™ธ๋ถ€์—์„œ ์˜ˆ์ธกํ•˜๊ธฐ ์‰ฌ์šด PK PK๊ฐ€ ์„ ํ˜•์ ์œผ๋กœ ์ฆ๊ฐ€ํ•˜๋Š” ์ •์ˆ˜์ด๊ธฐ ๋•Œ๋ฌธ์—, ํŠน์ • ๋ฐ์ดํ„ฐ์˜ PK๋ฅผ ์˜ˆ์ธกํ•˜๊ธฐ ์‰ฌ์›Œ์ง„๋‹ค. ์‹ค์ œ๋กœ request๋“ค์˜ ํŒŒ๋ผ๋ฏธํ„ฐ๋ฅผ ํ…Œ์ŠคํŠธํ•  ๋•Œ ์ข…์ข… ๋Š๊ผˆ๋˜ ๊ฒƒ์ด๋‹ค. ํ˜„์žฌ ์œ ์ €์˜ id 2000์ด๋ฉด 1 ~ 1999๊นŒ์ง€์˜ id๋ฅผ ๊ฐ€์ง„ ์œ ์ €๊ฐ€ ์กด์žฌํ•  ํ™•๋ฅ ๋„ ๋†’์€ ๊ฒƒ์ด๋‹ค. ์ด๋Š” ๋‹จ์ˆœํžˆ ๋…ธ์ถœ๋œ๋‹ค์˜ ๋ฌธ์ œ๋ฅผ ๋„˜์–ด SQL Injection ๊ณต๊ฒฉ์—๋„ ์ทจ์•ฝํ•ด์ง„๋‹ค. DB์— ์˜์กด์ ์ธ PK ๊ฐœ๋ฐœ..
sckwon770
'๐Ÿค– Backend/Database' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก