λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
  • μž₯원읡 κΈ°μˆ λΈ”λ‘œκ·Έ

πŸ”¬web application41

[SQL] Window ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜λ©΄ Group By κ°€ λͺ»ν•˜λŠ” 것을 ν•  수 μžˆλ‹€ λ°°κ²½νšŒμ‚¬μ—μ„œ μ–΄λ–€ 업무λ₯Ό μ²˜λ¦¬ν•˜λ˜ 도쀑 μ•„λž˜μ™€ 같은 μš”κ΅¬μ‚¬ν•­μ„ λ§Œμ‘±ν•˜λŠ” SQL 을 μ§œμ•Όν–ˆλ‹€. νŠΉμ • 일에 λ°œμƒν•œ transaction 쀑 κ°€μž₯ μ΅œμ‹  transaction 데이터λ₯Ό 뽑아라 μ΄ tx λ°μ΄ν„°λŠ” λ§€μΌλ§ˆλ‹€ λŒ€λŸ‰μœΌλ‘œ λ°œμƒν•˜λŠ” λ°μ΄ν„°λ‘œ append only ν…Œμ΄λΈ”μ΄λ‹€. userId κ°€ key 둜 μž‘ν˜€μžˆκ³  n 개의 tx 데이터가 μžˆλŠ”λ° λ‚ μ§œ 순으둜 μ •λ ¬λœ μ΅œμ‹ μ˜ 데이터λ₯Ό 뽑기 μœ„ν•΄ distinct κ°€ ν•„μš”ν–ˆλ‹€. λ‚˜λŠ” μžμ—°μŠ€λŸ½κ²Œ group by 쿼리λ₯Ό μ§°λŠ”λ° μƒκ°ν•΄λ³΄λ‹ˆ λ‹Ήμ—°νžˆ group by λ‘œλŠ” ν•΄λ‹Ή μš”κ΅¬μ‚¬ν•­μ„ λ§Œμ‘±ν•  수 μ—†μ—ˆλ‹€. κ·ΈλŸ¬λ‹€ 데이터 μ—”μ§€λ‹ˆμ–΄λ§ νŒ€μ—κ²Œ 도움을 μš”μ²­ν•˜μ˜€κ³  window ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜λ©΄ λ‚΄κ°€ μ›ν•˜λŠ” 상황을 100% λ§Œμ‘±μ‹œν‚¬ 수 μžˆμ—ˆκ³  이에 λŒ€ν•œ λ‚΄μš©μ„ κ³΅μœ ν•΄λ³΄λ € ν•œλ‹€. Group B.. 2025. 2. 9.
100만개 1000만개의 더미데이터λ₯Ό μƒμ„±ν•˜λŠ” κ°€μž₯ μ‰¬μš΄ 방법 TL;DR μ΄λ²ˆ κΈ€μ˜ 핡심을 μš”μ•½ν•˜λ©΄ λ‹€μŒκ³Ό κ°™λ‹€ κ°€μž₯ 효율적인 더미데이터 생성 방법temp table 을 μ΄μš©ν•˜μ—¬ insert Query 날리기temp table 생성generate_series 와 random ν•¨μˆ˜λ₯Ό μ΄μš©ν•˜μ—¬ insertdocker-compose 둜 μ‹€ν–‰docker-compose μ΄μš©ν•˜κΈ°application runner μ΄μš©ν•˜κΈ°λ“±λ“± κ°€μž₯ 효율적인 더미데이터 생성 방법 DB λ‚˜ Application 의 μ²˜λ¦¬λŸ‰ ν˜Ήμ€ νŠΉμ • λŒ€λŸ‰ λ°μ΄ν„°μ˜ 상황을 ν…ŒμŠ€νŠΈν•˜κΈ° μœ„ν•΄ 더미 데이터가 ν•„μš”ν•˜λ‹€. excel, mockaroo, bulk insert λ“±λ“± λ‹€μ–‘ν•œ 방법을 μ΄μš©ν•΄μ„œ λŒ€λŸ‰μ˜ 데이터가 μžˆλŠ” μ‹€μŠ΅ ν™˜κ²½μ„ κ΅¬μ„±ν•΄λ΄€λŠ”λ° μΌ€μ΄μŠ€μ— 따라 λ‹€λ₯΄κ² μ§€λ§Œ 이 방법이 κ°€μž₯ νš¨μœ¨μ μ΄μ—ˆλ‹€. μ•„λž˜μ˜ 핡심 μ»¨μ…‰λ§Œ μ΄ν•΄ν•œ.. 2024. 10. 20.
DDD 의 aggregate 에 λŒ€ν•œ 이야기 TL;DR 이번 κΈ€μ˜ 핡심을 μš”μ•½ν•˜λ©΄ λ‹€μŒκ³Ό κ°™λ‹€ aggregate λž€ 무엇인가 3가지 핡심 도메인 κ΅¬μ„±μš”μ†Œ 쀑 κ°€μž₯ κΈ°λ³Έ entity 와 value 의 composition μ™„μ „ν•œ ν•˜λ‚˜μ˜ κ°œλ… μ™œ aggregate κ°€ ν•„μš”ν• κΉŒ κ³ μ •μž(invariant) 와 일관성 (consistency) 을 μ§€ν‚€λŠ” 핡심 객체 aggregate 의 핡심 κ΅¬μ„±μš”μ†Œ 3가지 entity, root-entity, value aggregate 을 μ„€κ³„ν•˜κΈ° 3가지 섀계 μ§€ν‘œ 일관성을 κΈ°μ€€μœΌλ‘œ λ‚˜λˆ„κΈ° actor λ₯Ό κΈ°μ€€μœΌλ‘œ λ‚˜λˆ„κΈ° usecase λ₯Ό κΈ°μ€€μœΌλ‘œ λ‚˜λˆ„κΈ° 잘 λ‚˜λ‰˜μ–΄μ§„ aggregate 의 νŠΉμ„± aggregate λž€ 무엇인가 에릭 μ—λ°˜μŠ€κ°€ μ œμ‹œν•œ DDD, domain driven design μ—μ„œ 핡심 도메인 κ΅¬μ„±μš”μ†ŒλŠ” 3κ°€.. 2024. 4. 10.
cache 101 - Spring Cache 에 λŒ€ν•˜μ—¬ (feat. μΊμ‹œλ‘œ todo list λ₯Ό λ§Œλ“€μ–΄λ³΄μž) cache 101 μ‹œλ¦¬μ¦ˆλŠ” web application 을 κ°œλ°œν•˜λ©° λ§ˆμ£Όν•˜λŠ” cache 에 λŒ€ν•΄ ν•„μš”ν•œ 지식과 λ„κ΅¬λ“€μ˜ μ‚¬μš©λ²•μ„ ν•™μŠ΅ν•˜λŠ” μ‹œλ¦¬μ¦ˆμž…λ‹ˆλ‹€. 1. Cache 에 λŒ€ν•œ 거의 λͺ¨λ“  것 의 μˆœμ„œλŒ€λ‘œ 글을 μ½μœΌμ‹œλ©΄ ν•™μŠ΅μ— 더 λ§Žμ€ 도움이 λ©λ‹ˆλ‹€. μ˜€λŠ˜μ€ Spring μ—μ„œ μ œκ³΅ν•˜λŠ” Cache 에 λŒ€ν•΄μ„œ 이야기 ν•΄λ³Ό 것이닀 Spring μ—μ„œλŠ” Cache 에 λŒ€ν•˜μ—¬ Spring Transaction κ³Ό λ§ˆμ°¬κ°€μ§€λ‘œ 높은 좔상화λ₯Ό μ œκ³΅ν•œλ‹€ @Transactional // spring transaction support public Todo create() {} @Cacheable // spring cache support public Todo create() {} Spring μ—μ„œλŠ” 이λ₯Ό Cache Abstr.. 2024. 3. 13.
cache 101 - μΊμ‹œμ— λŒ€ν•œ 거의 λͺ¨λ“  것 μ΄λ²ˆμ—λŠ” cache 에 λŒ€ν•΄μ„œ μ•Œμ•„λ³Ό 것이닀. cache 라고 ν•œλ‹€λ©΄ computer science μ—μ„œ 정말 λ‹€μ–‘ν•œ λΆ„μ•Όμ—μ„œ μ‚¬μš©λ˜κ³ , λ™μΌν•œ κΈ°λŠ₯을 μˆ˜ν–‰ν•˜μ§€λ§Œ λ¬Έλ§₯에 λ”°λΌμ„œ λ‹€λ₯Έ 이해도가 ν•„μš”ν•˜λ‹€. λ‚˜λŠ” cache 에 λŒ€ν•΄μ„œ web application layer 의 λ¬Έλ§₯μ—μ„œ μ„€λͺ…을 ν•  것이고, software cache 에 λŒ€ν•œ μ„€λͺ…을 주둜 ν•  것이닀. hardware cache 와 더 low level 의 cache λ₯Ό μ›ν•œλ‹€λ©΄ 이 글은 μ ν•©ν•˜μ§€ μ•Šμ„ 수 μžˆλ‹€. TL;DR 이번 κΈ€μ˜ 핡심을 μš”μ•½ν•˜λ©΄ λ‹€μŒκ³Ό κ°™λ‹€ 1. μΊμ‹œλž€ 무엇인가 cache: 데이터λ₯Ό μ €μž₯ν•˜μ—¬ λ―Έλž˜μ— ν•΄λ‹Ή 데이터에 λŒ€ν•œ μš”μ²­μ„ 더 λΉ λ₯΄κ²Œ μ²˜λ¦¬ν•  수 μžˆλ„λ‘ ν•˜λŠ” hardware ν˜Ήμ€ software cache 의 μ’…λ₯˜ h/w ca.. 2024. 2. 1.
μ˜€ν”„μ…‹ νŽ˜μ΄μ§•, λ‹¨κ³„λ³„λ‘œ μ΅œμ ν™”ν•˜κΈ° 이 글은 offset based pagination 을 빌미둜 λ°μ΄ν„°λ² μ΄μŠ€μ˜ λ‚΄λΆ€ λ™μž‘κ³Ό μ—¬λŸ¬ κ°œλ…λ“€μ„ μ•Œμ•„λ³΄λŠ” κΈ€ μž…λ‹ˆλ‹€. 2개의 κΈ€λ‘œ κ΅¬μ„±λ˜μ–΄ 있고, 각각의 κΈ€μ—μ„œ 얻을 수 μžˆλŠ” insight κ°€ λ‹€λ₯΄λ‹ˆ ν•¨κ»˜ 읽으면 λ”μš± μœ μ΅ν•©λ‹ˆλ‹€. μ˜€ν”„μ…‹ νŽ˜μ΄μ§•μ΄ 느린 μ§„μ§œ 이유 μ˜€ν”„μ…‹ νŽ˜μ΄μ§•, λ‹¨κ³„λ³„λ‘œ μ΅œμ ν™”ν•˜κΈ° 2023. 11. 19.