Index : 자료 내에서 특정 항목을 찾기 위한 메커니즘 - 인덱스는 일반적인 데이터 테이블과 달리 특정 순서로 유지되는 특수 테이블 - 모든 데이터를 포함하는 대신, 행이 실제로 존재하는 위치에 대한 정보와 함께 데이터 테이블에서 행을 찾을 때 필요한 열만 포함 - 인덱스의 역할 : 테이블의 모든 행을 확인할 필요 없이 테이블의 행과 열의 서브셋을 쉽게 검색하는 것 - 특정 테이블에서 행을 빨리 찾기 위해 사용된다. ☆ - 디스크 저장소에 얼마나 덜 접근하게 만드는지, 인덱스 Root에서 Leaf 까지 오고가는 횟수를 줄이는 것이 핵심 - 인덱스의 검색은 Root > Branch > Leaf > 디스크 저장소를 기준으로 검색한다. 고유 인덱스 : UNIQUE 속성 다중 열 인덱스 : 두 열을 함께 사..
ZRANGEBYSCORE (v.1.0.5) ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count] WITHSCORES : 요소와 Score를 모두 반환한다. (v.2.0) 시간복잡도 : O(log(N)+M) N : zSet의 요소 갯수 M : 반환되는 zSet 요소 갯수 M이 동일하다면 (LIMIT 설정) O(log(N))이 될 수 있다. ZRANGEBYSCORE geo:locationsExpire -INF +INF WITHSCORES result) '1' result) '3600' geo:locaitonsExpire 이름의 zSet의 모든 멤버와 Score를 조회한다. 1 멤버에 저장된 3600 Score를 출력한다. 만료 이벤트 만료 시간 설정: E..
-- GET /api/search/room 1. 모든 Posts를 출력 SELECT * FROM Posts; 2. Posts에서 해당하는 인자만 출력 SELECT postId, title, postImg, maxMember, startDate, endDate, place FROM Posts ; 3. currentMember 추가 SELECT p.postId, p.title, p.postImg, p.content, COUNT(c.userId) AS currentMember, p.maxMember, p.startDate, p.endDate, p.place FROM Posts AS p JOIN Channels AS c ON p.postId = c.postId GROUP BY c.postId ; 4. tag 추..
-- GROUP CONCAT으로 Tags의 데이터를 가져오는 방법 1. 모든 Tags 출력 SELECT * FROM Tags; 2. postId를 지정해 Tags를 출력 SELECT * FROM Tags WHERE postId = 1; 3. postId를 기준으로 GROUP BY를 지정 SELECT postId FROM Tags WHERE postId = 1 GROUP BY postId; 4. GROUP_CONCAT으로 tag데이터 출력 SELECT GROUP_CONCAT(tag SEPARATOR ', ') FROM Tags WHERE postId = 1 GROUP BY postId; 5. GROUP_CONCAT에서 알파벳 오름차순으로 정렬하기 SELECT GROUP_CONCAT(tag ORDER BY ..
-- GET /api/room/:postId 대화방 메시지 수신 API 1. 모든 메시지 출력 SELECT * FROM Messages; 2. postId에 해당하는 메시지 출력 SELECT * FROM Messages WHERE postId = 1; 3. postId에 해당하는 Channels에 참여중인 모든 유저의 userId를 출력 SELECT userId FROM Channels WHERE postId = 1; 4-1. userId가 해당하는 Channels에 참여중인지 확인 (COALESCE 사용) SELECT COALESCE(MIN('Y'), 'N') AS isUserId FROM Channels WHERE 4 IN (SELECT userId FROM Channels WHERE postId =..
MySQL Geometry DataSet POINT POINT 개념 POINT - 지도 상의 위도, 경도 값을 표현하는 객체 - MySQL의 Spatial Data Type - 포인트 값(한 쌍의 X, Y 좌표) - 경도 (Longitude) : X - 위도 (Latitute) : Y SRID (Spatial Reference Identifier) - SRS의 식별자 - GPS의 기준이 되는 WGS84 시스템의 SRID : 4326 - 단순 직교 좌표계의 SRID : 0 POINT 사용해보기 CREATE TABLE Points( pointId int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY, point POINT ); - POINT 형식이 포함된 테이블을 생성 INSERT ..
-- HTTPS 적용 $ sudo apt-get install iptables - 다른 포트로 들어오는 지정한 포트로 전달하기 위한 iptables 라이브러리를 설치한다. $ sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 4001 - 80번 포트로 들어오는 클라이언트를 4001번 포트로 보냄 $ certbot certonly --webroot -w ./public -d astraios.shop - astaios.shop 도메인의 80번 포트가 열려있을 경우 인증을 받을 수 있다. - app.use(express.static('public')); 으로 public 폴더의 경로를 들어갈 수 있도록 설정한다...
kakao.maps.Size(width, height) : 크기 정보를 담고 있는 사이즈 객체를 생성한다. kakao.maps.Point(x, y) : 화면 좌표 정보를 담고 있는 포인트 객체를 생성한다. kakao.maps.Marker() : 마커를 생성한다. kakao.maps.Marker().setMap() : Marker를 객체에 출력한다. kakao.maps.Marker().setPosition() : 위치로 Marker의 위치를 변경한다. - setMap()을 사용하지 않으면 포지션만 변경된체 지도에 존재하는 마커는 움직이지 않는다. kakao.maps.services.Status. - services 라이브러리의 응답 코드가 상수로 정의되어 있다. 종류 - OK : 검색 결과 있음 - ZER..
도커 네트워크 - 도커는 각 컨테이너에 외부와의 네트워크를 제공하기 위해 컨테이너마다 가상 네트워크 인터페이스를 호스트에 생성 - 이 인터페이스의 이름은 veth로 시작한다. - veth 인터페이스는 직접 생성할 필요는 없으며 컨테이너가 생성될 때 도커 엔진이 자동으로 생성한다. - docker() 브리지 : 각 veth 인터페이스와 바인딩돼 호스트의 eth() 인터페이스와 이어주는 역할 - 도커 컨테이너 > (eth()) > (veth) > docker() > eth0 - eth0 인터페이스는 호스트의 veth라는 인터페이스와 연결됐으며 - veth 인터페이스는 docker() 브리지와 바인딩돼 외부와 통신할 수 있다. ex) brctl show docker0 : docker() 브리지에 veth이 실..