๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • ๐Ÿ‘ฉ๐Ÿปโ€๐Ÿ’ป ๐ŸŒฎ ๐Ÿ’ฌ

๐Ÿ‘ฉ๐Ÿป‍๐Ÿ’ป/database10

[MySQL] match ... against ํ•œ๊ธ€์ž ๊ฒ€์ƒ‰ ์˜ค๋ฅ˜ (innodb_ft_min_token_size, ngram_token_size) ๊ฐœ์š”SELECT * FROM articles_cn WHERE MATCH(ner_text) AGAINST('็ซ' IN BOOLEAN MODE); ์ด ์ฟผ๋ฆฌ๋กœ ๊ฒ€์ƒ‰์„ ํ•˜๋‹ˆ, ์•„๋ฌด๊ฒƒ๋„ ์ถœ๋ ฅ๋ฐ›์ง€ ๋ชปํ–ˆ๋‹ค. ํ˜น์‹œ๋‚˜ ํ•ด์„œ ๋‹ค๋ฅธ ์ฟผ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ด ๊ฒ€์ƒ‰ํ–ˆ์„ ๋•SELECT * FROM articles_cn WHERE JSON_CONTAINS(ner, '"็ซ"'); ์ž˜ ๋‚˜์˜จ๋‹ค.. ๋ญ ๋•Œ๋ฌธ์— ์•ˆ๋‚˜์˜ค๋Š” ๊ฑธ๊นŒ? ํ™•์ธCREATE TABLE `articles_cn` ( `id` int unsigned NOT NULL AUTO_INCREMENT, `title` varchar(255) NOT NULL, `content` text NOT NULL, `ner` json, `ner_text` text, PRIMARY KEY (`id`.. 2025. 5. 30.
[MySQL] Mac์— my.cnf ํŒŒ์ผ์ด ์—†๋‹ค (mysql ๋‹ค์šด๋ฐ›์•„์„œ ์ง์ ‘ ์„ค์น˜ํ–ˆ์„ ๊ฒฝ์šฐ) ๊ฐœ์š”ํ•œ ๊ธ€์ž ๊ฒ€์ƒ‰์„ ์œ„ํ•ด ngram_token_size๋ฅผ default 2์—์„œ 1๋กœ ์ˆ˜์ •ํ•˜๋ ค๊ณ  ํ•˜๋Š”๋ฐ, my.cnf ํŒŒ์ผ์„ ์ฐพ์„ ์ˆ˜ ์—†๋‹ค!homebrew๋กœ ์„ค์น˜ํ•œ ๊ฒŒ ์•„๋‹ˆ๊ณ  ์ง์ ‘ ๋‹ค์šด๋กœ๋“œํ•ด์„œ ์„ค์น˜ํ•ด์„œ ๊ทธ๋Ÿฐ๊ฐ€ .. ํ™•์ธ1๏ธโƒฃ config ํŒŒ์ผ ํ™•์ธmysql --help | grep -A 1 "Default options"Default options are read from the following files in the given order:/etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf mysql์€ ์™ผ์ชฝ๋ถ€ํ„ฐ ์ˆœ์„œ๋Œ€๋กœ my.cnf๋ฅผ ์ฐพ๋Š”๋‹ค. 2๏ธโƒฃ ์ฒซ๋ฒˆ์งธ ๊ฒฝ๋กœ( /etc/my.cnf )์— my.cnf๋ฅผ ์ƒ์„ฑํ•ด์ค€๋‹ค. (์™œ๋ƒ๋ฉด .. ์ง์ ‘.. 2025. 5. 30.
[MySQL] ๊ฒ€์ƒ‰ ์ฟผ๋ฆฌ ์„ฑ๋Šฅ ๋น„๊ต ๊ฐœ์š”- ner์„ ํฌํ•จํ•˜๋Š” ๊ธฐ์‚ฌ๋“ค์„ ์ถœ๋ ฅํ•  ๋•Œ, ํšจ์œจ์ ์œผ๋กœ ๊ฒ€์ƒ‰ํ•˜๊ธฐ ์œ„ํ•œ ์ฟผ๋ฆฌ ์„ฑ๋Šฅ ๋น„๊ต 1) JSON_CONTAIN 2) MATCH … AGAINST 3) MATCH … AGAINST + REGEXP- 100,000๊ฐœ์˜ article๋กœ ์ง„ํ–‰ ํ™•์ธEXPLAIN ANALYZE ๋กœ ๋ถ„์„์„ ์ง„ํ–‰ํ–ˆ๋‹ค. 1. JSON_CONTAINEXPLAIN ANALYZE SELECT * FROM articles WHERE JSON_CONTAINS(ner, '"์‚ผ์„ฑ"');-> Filter: json_contains(articles.ner,('"์‚ผ์„ฑ"')) (cost=10185.55 rows=98728) (actual time=0.148..102.554 rows=27555 loops=1)-> Table .. 2025. 5. 28.
[MySQL] FULLTEXT ์ธ๋ฑ์Šค ๊ฒ€์ƒ‰ ๊ธ€์ž์ˆ˜ ์ œํ•œ ๊ฐœ์š” article์ด ์žˆ๋Š” ํ…Œ์ด๋ธ”์—์„œ ํŠน์ • ner๋ฅผ ํฌํ•จํ•œ ๊ธฐ์‚ฌ๋“ค์„ select ํ•˜๋Š” ์ฟผ๋ฆฌ๋ฅผ ์ž‘์„ฑ ์ค‘์— ์žˆ์—ˆ๋‹ค. โœ… ์—ฌ๊ธฐ์„œ ๋ฌธ์ œ ๋ฐœ์ƒ2๊ธ€์ž๋Š” ๊ฒ€์ƒ‰์ด ์•ˆ๋˜๊ณ , 3๊ธ€์ž๋ถ€ํ„ฐ ๊ฒ€์ƒ‰ ๊ฐ€๋Šฅ 1๏ธโƒฃ ner ํ‚ค์›Œ๋“œ ์ค‘ "์‚ผ์„ฑ"์„ ํฌํ•จํ•œ ๊ธฐ์‚ฌ๋ฅผ ๊ฐ€์ง€๊ณ  ์˜ค๋Š” querySELECT * FROM articles WHERE MATCH(ner_text) AGAINST('+์‚ผ์„ฑ' IN BOOLEAN MODE);→ ์•„๋ฌด๊ฒƒ๋„ ์ถœ๋ ฅ ์•ˆ๋จ 2๏ธโƒฃ ์‚ผ์„ฑ์ „์ž๋ฅผ ํฌํ•จํ•œ ๊ธฐ์‚ฌ๋ฅผ ๊ฐ€์ง€๊ณ  ์˜ค๋Š” querySELECT * FROM articles WHERE MATCH(ner_text) AGAINST('+์‚ผ์„ฑ์ „์ž' IN BOOLEAN MODE);→ ์ •์ƒ์ ์œผ๋กœ ์ถœ๋ ฅ ํ™•์ธMySQL FULLTEXT ์ธ๋ฑ์Šค์—์„œ 2๊ธ€์ž ์ด์ƒ์ด ๊ฒ€์ƒ‰์ด ๋˜์ง€ ์•Š๋Š”๋‹ค.SHOW VA.. 2025. 5. 28.
[MySQL] localhost ๋น„๋ฐ€๋ฒˆํ˜ธ ๊นŒ๋จน์—ˆ๋‹ค local ์—์„œ ํ…Œ์ŠคํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋˜ ์ค‘ ๋กœ์ปฌ mysql์— ๋ฐ์ดํ„ฐ๋ฅผ ์ ์žฌํ•˜๋ ค๊ณ  python์œผ๋กœ ์—ฐ๊ฒฐ ์‹œ๋„ ํ–ˆ๋Š”๋ฐimport pymysql# MySQL ์—ฐ๊ฒฐconn = pymysql.connect( host="localhost", user="root", password="12341234", database="study", charset="utf8mb4", cursorclass=pymysql.cursors.DictCursor)pymysql.err.OperationalError: (1045, "Access denied for user 'root'@'localhost' (using password: YES)") ์ด๋Ÿฐ Access denied ๋˜์—ˆ๋‹ค. ๋‹คํ–‰ํžˆ DBeaver๋ฅผ ํ†ตํ•œ ์—ฐ๊ฒฐ.. 2025. 2. 14.
ํฌ๋กค๋ง ๋ฐ์ดํ„ฐ ์ ์žฌ SQL vs NoSQL ๊ฐœ์š”์ „์— ์ง„ํ–‰๋˜์—ˆ๋˜ ํ”„๋กœ์ ํŠธ์—์„œ์˜ ํฌ๋กค๋ง์€ MongoDB์— ์ ์žฌํ–ˆ๋‹ค.๋ฐ์ดํ„ฐ๋ฅผ ์ ์žฌํ•  ๋•Œ SQL(MySQL), NoSQL(MongoDB) ๋‘๊ฐ€์ง€ ์ค‘์— ์–ด๋–ค ๊ณณ์ด ๋” ์ ํ•ฉํ•œ์ง€ ๊ณ ๋ฏผ์ด ๋˜์–ด์„œ ๋‘๊ฐ€์ง€๋ฅผ ๋น„๊ตํ•ด๋ณด์Ÿˆ ~ ! ๊ธฐ๋ณธ ๊ฐœ๋…DB ์ข…๋ฅ˜ํŠน์ง•์ ํ•ฉํ•œ ๊ฒฝ์šฐMySQL (Relational)ํ…Œ์ด๋ธ” ๊ธฐ๋ฐ˜์˜ ๊ด€๊ณ„ํ˜• DB (SQL)์ •ํ˜• ๋ฐ์ดํ„ฐ, ๊ฒ€์ƒ‰ ์„ฑ๋Šฅ ์ค‘์š”MongoDB (NoSQL, Document-based)JSON-like ๋ฌธ์„œ ์ €์žฅ (NoSQL)๋น„์ •ํ˜• ๋ฐ์ดํ„ฐ, ์œ ์—ฐํ•œ ์Šคํ‚ค๋งˆํฌ๋กค๋ง ๋ฐ์ดํ„ฐํฌ๋กค๋ง ๋ฐ์ดํ„ฐ๋Š” ์ด๋Ÿฌํ•œ ํ˜•ํƒœ๋กœ ์ˆ˜์ง‘๋œ๋‹ค.{ "title": "Example Title", "url": "https://example.com", "content": "Some article content...", .. 2025. 2. 6.
[MongoDB] ๊ฐ„๋‹จํ•œ ๊ฐœ๋…์ •๋ฆฌ ๊ฐœ์š”์ด๋ฒˆ์— ํฌ๋กค๋งํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋ชฝ๊ณ ๋””๋น„์— ์ ์žฌํ•ด๋‹ฌ๋ผ๋Š” ์š”์ฒญ์„ ๋ฐ›์•„์„œ ์ง„ํ–‰ํ–ˆ๋‹ค.์ฒ˜์Œ์œผ๋กœ ๋ชฝ๊ณ ๋””๋น„๋ฅผ ์ ‘ํ•ด๋ณด๋Š” ๊ฒธ ๊ฐœ๋… ์ •๋ฆฌ๋ฅผ ํ•ด๋ณผ๊นŒ ํ•œ๋‹ค.๋ชฝ๊ณ ๋””๋น„ MongoDB์˜คํ”ˆ์†Œ์Šค์ด๋‹คNoSQL ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์œผ๋กœ ๋ฐ์ดํ„ฐ๊ฐ€ JSON ์œ ์‚ฌํ•œ ๋ฌธ์„œ ํ˜•ํƒœ๋กœ ์ €์žฅ๋˜๋Š”๊ฒŒ ํŠน์ง•์ด๋‹ค.์ „ํ†ต์ ์ธ ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค(RDBMS)์™€๋Š” ๋‹ฌ๋ฆฌ, ์Šคํ‚ค๋งˆ๊ฐ€ ์—†๋‹ค. ํŠน์ง•(1) ๋ฌธ์„œ ๊ธฐ๋ฐ˜(Document-oriented) ์ €์žฅ- ๋ฐ์ดํ„ฐ๋ฅผ ํ…Œ์ด๋ธ”์˜ ํ–‰(row)์œผ๋กœ ์ €์žฅํ•˜๋Š” RDBMS์™€ ๋‹ฌ๋ฆฌ, MongoDB๋Š” BSON(Binary JOSN) ํฌ๋งท์˜ ๋ฌธ์„œ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•œ๋‹ค.- ์˜ˆ:{ "name": "John", "age": 30, "skills": ["Python", "JavaScript"]} (2) ์Šคํ‚ค๋งˆ๋ฆฌ์Šค(Schema-less)- ๋ฐ์ด.. 2025. 1. 10.
[MySQL] ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ ์‹ค์‹œ๊ฐ„ ํ™•์ธ ์ง„ํ–‰ mysql ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ์„ ์‹ค์‹œ๊ฐ„์œผ๋กœ ํ™•์ธํ•˜๊ณ  ์‹ถ์–ด์„œ searchํ•˜๊ณ  ์ •๋ฆฌํ–ˆ๋‹ค. mysql ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ ์‹ค์‹œ๊ฐ„ ํ™•์ธ๊ฐœ์š”์ด๋ฒˆ์— ์ƒˆ๋กœ ์ง„ํ–‰๋˜๋Š” ํ”„๋กœ์ ํŠธ์—์„œ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•ด์•ผํ•œ๋‹ค.๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋ณ€ํ™”๊ฐ€ ์žˆ์„ ๋•Œ, ์‹ค์‹œ๊ฐ„์œผ๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์— ๋Œ€ํ•ด์„œ search ํ–ˆ๋‹ค.์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃจ๊ณ  ์‹ถ์—ˆ๋Š”๋ฐbonory.tistory.com์ด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์‹ค์ œ๋กœ ์ง„ํ–‰ํ•ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค.์šฐ์„  ๋‚˜๋Š” docker๋กœ zookeeper, kafka, kafka-connect, mysql์„ ์˜ฌ๋ฆด ๊ฒƒ์ด๋‹ค๊ทธ๋ž˜์„œ docker-compose.yml์„ ์•„๋ž˜์™€ ๊ฐ™์ด ์ž‘์„ฑํ–ˆ๋‹คdocker-compose.ymlversion: '3'services: zookeeper: image: confluentinc/cp-zookeeper:latest .. 2024. 10. 20.
[MySQL] ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ ์‹ค์‹œ๊ฐ„ ํ™•์ธ ๊ฐœ์š”์ด๋ฒˆ์— ์ƒˆ๋กœ ์ง„ํ–‰๋˜๋Š” ํ”„๋กœ์ ํŠธ์—์„œ ์ƒˆ๋กœ์šด ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•ด์•ผํ•œ๋‹ค.๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋ณ€ํ™”๊ฐ€ ์žˆ์„ ๋•Œ, ์‹ค์‹œ๊ฐ„์œผ๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์— ๋Œ€ํ•ด์„œ search ํ–ˆ๋‹ค.์‹ค์‹œ๊ฐ„ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃจ๊ณ  ์‹ถ์—ˆ๋Š”๋ฐ ์ด๋ฒˆ์— ํ•˜๊ฒŒ๋˜์–ด์„œ ๋„ˆ๋ฌด ์ข‹๋‹ค !์ด๋ฒˆ ํ”„๋กœ์ ํŠธ์˜ Back์€ Fastapi, Front๋Š” javascript๋กœ ์ง„ํ–‰ํ•  ๊ฒƒ์ด๋‹ค. ๊ฐ„๋‹จํ•˜๋‹ค.1. Robot์—์„œ Database์— ๋ฐ์ดํ„ฐ updateํ•œ๋‹ค.2. Database์— ๋ณ€ํ™”๊ฐ€ ์žˆ์„ ์‹œ Fastapi (Back)์ด ์•Œ์•„์•ผํ•œ๋‹ค.3. Fastapi (Back)์—์„œ javascript (Front) ๋กœ ๋ณ€ํ™”๋ฅผ ์ „๋‹ฌํ•œ๋‹ค. ํ™•์ธ1. Database → Back : polling / CDC2. Back → Front : web socket Polling์ผ์ • ์ฃผ๊ธฐ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ํŠน์ •.. 2024. 10. 2.