전체보기
-
Headless CMS카테고리 없음 2016. 12. 16. 22:17
A "regular" CMS gives us three things A way to store data A CRUD UI Ways to display to data A "headless" CMS onle shares the first two A way to store data A CRUD UI An API to the data Headless CMS Headless CMS는 간단히 말해 순수하게 콘텐츠를 생성/저장/관리하는 부분만을 담당하고 사용자들에게 콘텐츠를 보이는 부분은 따로 담당하지 않는 CMS를 말한다. WordPress로 비유하자면 관리자 대시보드만 있고 테마(theme)는 없는 셈이다. 생각하기에 따라 CMS 따로 프론트 따로인 콘텐츠 처리 방식이 일을 더 번잡하게 만드는게 아닐까 싶기도 하..
-
[74번째 책] 거꾸로 읽는 세계사 (★★★★★)1000권 독서 2016. 12. 16. 21:34
대한민국의 국민으로 살아오면서 사실 내가 사는 국가에 대한 관심이 없었다. 내 삶이 평안하고 필요성을 느끼지 않았기에, 시험의 한 과목으로서의 역사 이외에는 나에게 역사관이란 존재하지 않았다.이번에 거꾸로 읽는 세계사를 읽으며, 굉장한 감탄과 부끄러움을 동시에 느꼈다. '내'가 아닌 '타인'을 위해 '국가'를 위해 인생과 목숨을 걸었던 수많은 사람들의 발걸음에 감탄을 느꼈고, 학교교육을 통해 배운 내 나라의 역사에 대해서 일말의 의구심이나 의심없이 아는 것이 진실이고 전부인 걸로 알고 살아왔던 내 자신을 반성해본다.시험을 위한 역사공부가 아닌 내 뿌리를 바로알게 되어 감사하다. 사람의 이야기가 쓰여지는 역사는 사람냄새가 풀풀 넘쳐난다. 눈물을 머금게 하는 감동이 있으면서도, 파렴치한 매국노의 이야기까지 ..
-
Real MySQL [6-9] 실행계획 - DISTINCTMySQL 2016. 12. 14. 21:29
본 게시물의 내용과 이미지는 도서 Real MySQL의 내용을 재구성하여 작성되었습니다. 저자, 출판사에 의해 저작권 문제 발생시 게시물이 비공개 될 수 있음을 알립니다. DISTINCT 특정 칼럼의 유니크한 값만을 조회하려면 SELECT 쿼리에 DISTINCT를 사용한다. DISTINCT는 MIN(), MAX() 또는 COUNT()와 같은 집합 함수와 함께 사용되는 경우와 집합 함수 없는 경우 두 가지로 구분된다. 집합 함수로 구분하는 이유는 DISTINCT 키워드가 영향을 미치는 범위가 달라지기 때문이다. 집합 함수와 같이 DISTINCT가 사용되는 쿼리의 실행계획에서 DISTINCT가 인덱스를 사용하지 못할 때는 항상 임시 테이블이 필요하다. 하지만 이런 경우 실행 계획 Extra 칼럼에 Using..
-
Real MySQL [6-8] 실행계획 - GROUP BYMySQL 2016. 12. 13. 23:29
본 게시물의 내용과 이미지는 도서 Real MySQL의 내용을 재구성하여 작성되었습니다. 저자, 출판사에 의해 저작권 문제 발생시 게시물이 비공개 될 수 있음을 알립니다. GROUP BY 처리 GROUP BY 또한 ORDER BY와 같이 쿼리가 스트리밍된 처리를 할 수 없게 하는 요소 중 하나다. GROUP BY 절이 있는 쿼리에서는 HAVING 절을 사용할 수 있는데 HAVING 절은 GROUP BY 결과에 대해 필터링 역할을 수행한다. 일반적으로 GROUP BY 처리 결과는 임시 테이블이나 버퍼에 존재하는 값을 필터링하는 역할을 수행한다. GROUP BY 에 사용된 조건은 인덱스를 사용해서 처리될 수 없으므로 HAVING 절을 튜닝하려고 인덱스를 생성하거나 다른 방법을 고민할 필요가 없다. GROUP..
-
Real MySQL [6-7] 실행계획 - ORDER BY 정렬 방식 성능 비교, 정렬 관련 상태 변수MySQL 2016. 12. 13. 21:57
본 게시물의 내용과 이미지는 도서 Real MySQL의 내용을 재구성하여 작성되었습니다. 저자, 출판사에 의해 저작권 문제 발생시 게시물이 비공개 될 수 있음을 알립니다. 정렬 방식의 성능 비교 웹 서비스용 쿼리에는 LIMIT가 필수적으로 사용되곤 한다. LIMIT는 테이블이나 처리 결과의 일부만 가져오기 때문에 MySQL 서버가 처리해야 할 작업량을 줄이는 역할을 한다. ORDER BY나 GROUP BY 같은 작업은 WHERE 조건을 만족하는 레코드를 LIMIT 건수만큼만 가져와서 처리될 수 없다. WHERE 조건이 인덱스를 잘 활용하도록 튜닝해도 잘못된 ORDER BY나 GROUP BY 때문에 쿼리가 느려지는 경우가 자주 발생한다. 쿼리에서 인덱스를 사용하지 못하는 정렬이나 그룹핑 작업이 왜 느리게 ..
-
Real MySQL [6-6] 실행계획 - 풀 테이블 스캔, ORDER BY (Filesort)MySQL 2016. 12. 13. 21:23
본 게시물의 내용과 이미지는 도서 Real MySQL의 내용을 재구성하여 작성되었습니다. 저자, 출판사에 의해 저작권 문제 발생시 게시물이 비공개 될 수 있음을 알립니다. MySQL 주요 처리방식 이번 포스팅에서는 성능에 미치는 영향이 큰 실행 계획과 연관이 있는 단위 작업에 대해 살펴보고자 한다. 설명하는 내용중 풀 테이블 스캔을 제외한 나머지는 모두 스토리지 엔진이 아니라 MySQL 엔진에서 처리되는 내용이다. 또한 MySQL 엔진에서 부가적으로 처리하는 작업은 대부분 성능에 미치는 영향이 큰데, 모두 쿼리의 성능을 저하시키는 데 한몫을 하는 작업들이다. MySQL 엔진에서 처리하는 데 시간이 오래 걸리는 작업의 원리를 알아둔다면 쿼리를 튜닝하는데 상당히 많은 도움이 될 것이다. 풀 테이블 스캔 인덱..
-
Real MySQL [6-5] 실행계획 - EXPLAIN EXTENDED, PARTITIONSMySQL 2016. 12. 13. 20:12
본 게시물의 내용과 이미지는 도서 Real MySQL의 내용을 재구성하여 작성되었습니다. 저자, 출판사에 의해 저작권 문제 발생시 게시물이 비공개 될 수 있음을 알립니다. EXPLAIN EXTENDED(Filtered 칼럼) 스토리지 엔진에서 최종적으로 사용자에게 전달되는 레코드를 MySQL에서 필터링 한다. 이 과정에서 버려지는 레코드가 발생할 수 있는데 필터링이 얼마나 효율적으로 실행됬는지를 Filtered 칼럼으로 알 수 있다. 실행계획에서 Filtered 칼럼을 함께 조회하려면 EXPLAIN 명령 뒤에 "EXTENDED"라는 키워드를 지정하면 된다. "EXTENDED" 키워드가 사용된 실행 계획 예제를 살펴보자. EXPLAIN EXTENDED SELECT * FROM employees WHERE ..