node.js를 처음 접하는 개발자를 위한 스터디 자료입니다.
실습 위주로, 간단한 웹 페이지를 만들어 보는 것을 목표로 하며,
express를 활용하기에 앞서, node.js 기본 API만으로 GET/POST 처리 방식을 알아봅니다.
내용의 깊이가 있지는 않으며, 단지 node.js의 입문을 위한 가벼운 수준으로 내용이 구성되었습니다.
Adied 2014, 봄싹 세미나에서 발표한 `Resource Handling in Spring MVC`의 발표자료입니다.
주요 내용으로 Spring MVC에서 정적 자원(css, js, etc)을 다루는 방법을 다루고 있습니다.
데모 코드 : https://github.com/arawn/resource-handling-in-springmvc
node.js를 처음 접하는 개발자를 위한 스터디 자료입니다.
실습 위주로, 간단한 웹 페이지를 만들어 보는 것을 목표로 하며,
express를 활용하기에 앞서, node.js 기본 API만으로 GET/POST 처리 방식을 알아봅니다.
내용의 깊이가 있지는 않으며, 단지 node.js의 입문을 위한 가벼운 수준으로 내용이 구성되었습니다.
Adied 2014, 봄싹 세미나에서 발표한 `Resource Handling in Spring MVC`의 발표자료입니다.
주요 내용으로 Spring MVC에서 정적 자원(css, js, etc)을 다루는 방법을 다루고 있습니다.
데모 코드 : https://github.com/arawn/resource-handling-in-springmvc
Golang Project Guide from A to Z: From Feature Development to Enterprise Appl...Kyuhyun Byun
This comprehensive presentation offers a deep dive into Go language development methodologies, covering projects of all scales. Whether you're working on a small prototype or a large-scale enterprise application, this guide provides valuable insights and best practices.
Key topics covered:
Distinguishing between small and large projects in Go
Code patterns for small, feature-focused projects
Comparison of Handler and HandlerFunc approaches
Enterprise application design using Domain Driven Design (DDD)
Detailed explanations of architectural layers: Presenter, Handler, Usecase, Service, Repository, and Recorder
NoSQL (DynamoDB) modeling techniques
Writing effective test code and using mocking tools like 'counterfeiter'
Essential tools for production-ready applications: APM, error monitoring, metric collection, and logging services
This presentation is ideal for Go developers of all levels, from beginners looking to structure their first projects to experienced developers aiming to optimize large-scale applications. It provides practical advice on code organization, testing strategies, and operational considerations to help you build robust, maintainable Go applications.
Whether you're starting a new project or looking to improve an existing one, this guide offers valuable insights into Go development best practices across different project scales and complexities.
MySQL Administrator
Basic course
- MySQL 개요
- MySQL 설치 / 설정
- MySQL 아키텍처 - MySQL 스토리지 엔진
- MySQL 관리
- MySQL 백업 / 복구
- MySQL 모니터링
Advanced course
- MySQL Optimization
- MariaDB / Percona
- MySQL HA (High Availability)
- MySQL troubleshooting
네오클로바
http://neoclova.co.kr/
3. Overview
◦ 2000년 리처드 힙(D. Richard Hipp)과 그의 친구들이 만
들었습니다. 2000년 8월에 1.0 버전이 출시.
◦ Android, iOS등 거의 모든 모바일 디바이스에서 사용되
고 있는 DBMS.
◦ 그 외 firefox, dropbox, 등 왠만한 client-side 앱들도
거의 다 사용.
4. 단일 데이터베이스 파일
◦ SQLite에서는 데이터베이스의 모든 정보가 단 하나의 파
일에 저장됨.
즉, 테이블 스키마, 레코드 데이터, 인덱스와 같은 모든 정보
가 한 파일에 저장
단일 파일로 동작하기 때문에 프로그램이 다중 프로세스나
다중 스레드로 동작하는 경우 파일 잠금(lock) 이슈가 발생할
수 있음.
5. 설정 파일 X
◦ SQLite는 라이브러리 형태로 제공되며, 별도의 설정 파일
이 없고 별도 서버를 구동하는 등의 사전 작업이 없음.
6. 간결성
◦ 매우 간결한 데이터베이스
모바일 client-side에 적합.
페이지 크기(page size) 제한이 있으며, 데이터베이스 파일
이 파일시스템에 파일로 저장되기 때문에 파일 크기 제한이
있는 경우 데이터베이스가 동작하는 데 문제가 생길 수 있음.
7. 동시성
◦ 읽기는 여러 프로세스에서 가능하지만, 쓰기는 한 순간에
오직 하나의 프로세스만 가능
모든 SQL문을 지원하지 않음.
◦ 예 : RIGHT / FULL OUTER JOIN, VIEW 수정, GRANT.
9. SQL문
◦ http://www.sqlite.org/lang.html를 참고
API
◦ https://github.com/developmentseed/node-
sqlite3/wiki/API를 참고.
14. 세계에서 가장 많이 쓰이는 관계형 DBMS.
Mediawiki, drupal, bugzilla, …
mysql : http://www.mysql.com/
node-mysql :
https://npmjs.org/package/mysql
server-client 구조.
◦ node-mysql을 설치하고 mysql-server도 설치해야함.
15. 다양한 storage 엔진
◦ MyISAM
인덱스만 메모리에 올려서 처리.
테이블 레벨 잠금.
동시다발적인 변경 작업에는 부적합함.
◦ InnoDB
인덱스/데이터를 모두 메모리에 올려서 처리.
트랜잭션 제공.
행단위 잠금.
OLTP(OnLine Transaction Processing)에 적합.
16. Archive
◦ 트랜젝션, 인덱스 모두 지원하지 않음.
◦ 행 단위 잠금.
◦ 메모리에서 데이터압축을 수행하며 디스크에 기록.
◦ 원시로그수집에 적합.
출처 : http://gywn.net/2011/12/mysql-three-features/
17. Live replication
◦ 단순한 복사가 아닌 연속적인 업데이트 제공
읽기 부하 분산 가능
◦ Read traffic이 많은 서비스에서 활용 가능
◦ 그러나 write는 master만 가능
출처 : http://gywn.net/2011/12/mysql-three-features/
19. NoSQL
◦ SQL을 사용하지 않는 데이터베이스 소프트웨어를 총괄
하는 용어
문서지향 데이터베이스
◦ 문서 지향 데이터베이스는 테이블과 같은 경직된 구조에
데이터를 저장하지 않고 느슨하게 정의된 문서에 데이터
를 저장
◦ 관계형 데이터베이스 시스템(RDBMS) 테이블에서는 열을
새로 추가하려면 테이블 자체의 정의를 변경해야 한다.
그러나 문서를 사용하는 경우에는 기타 모든 문서를 변경
하지 않고도 개별 문서에 속성을 새로 추가할 수 있다. 이
는 문서 지향 데이터베이스가 일반적으로 스키마를 사용
하지 않도록 설계되기 때문.
20. JSON 형태의 문서 콜렉션으로 데이터를 저장
◦ JSON의 2진 버전인 BSON을 사용하여, 키/값 쌍으로 데
이터를 유지하는 JSON 형태의 문서에 데이터를 저장
SQL문을 MongoDB 쿼리 함수 호출로 매우 간단
하게 변환 가능
MySQL과 비슷한 마스터/슬레이브 복제
자동 샤딩(Auto-sharding)을 이용한 수평적 확장
fourSquare 등에서 사용.
25. > show collections
colors
system.indexes
> db.colors.drop();
true
> show collections
system.indexes
> show dbs
local (empty)
test 0.203125GB
> db.dropDatabase();
{ "dropped" : "test", "ok" : 1 }
> show dbs
local (empty)
26. Sharding
◦ 데이터를 여러 서버에 분할하여 저장
mongoDB에서는 auto sharding을 제공.
Write가 빈번하고, 공간이 부족할 경우 사용.
http://hochul.net/blog/%ED%8F%AC%EC%8A%A4%ED%80%98%EC%96%B4%EA%B0%80-mongodb%EB%A5%BC-%EC%84%A0%ED%83%9D%ED%95%9C-%EC%9D%B4%EC%9C%A0-auto-sharding/