본문 바로가기
728x90

전체 글331

[NoSQL] MongoDB 집계(Aggregation)1 #집계 프레임워크 -파이프라인의 각 단계에서의 출력이 다음 단계로의 입력으로 제공되는 파이프라인(집계 파이프라인,aggregation pipeline)을 정의한다. $project - 출력 도큐먼트상에 배치할 필드를 지정한다.(projected) $match - 처리될 도큐먼트를 선택하는 것. find()와 비슷한 역할을 수행한다. $limit - 다음 단계에 전달될 도큐먼트의 수를 제한한다. $skip - 지정된 수의 도큐먼트를 건너뛴다. $unwind -배열을 확장하여 각 배열 항목에 대해 하나의 출력 도큐먼트를 생성한다. $group -지정된 키로 도큐먼트를 그룹화한다. $sort -도큐먼트를 정렬한다. $geoNear - 지리 공간위치 근처의 도큐먼트를 선택한다. $out - 파이프라인의 결과(출.. 2021. 1. 21.
[NoSQL] MongoDB 쿼리 언어 총정리2 #자바스크립트 쿼리 연산자 -쿼리에 자바스크립트 표현식을 넘겨주기 위해서는 특수한 $where 연산자를 사용할 수 있다. ex) db.컬렉션이름.find({ '$where': "function() {return this.helpful_votes > 3;}" }) //this는 현재의 도큐먼트를 가리킨다. db.컬렉션이름.find({'$where': "this.helpful_votes > 3"})처럼 표현할 수 있다. -자바스크림트 쿼리는 성능 저하 문제와 인젝션 공격에 노출되는 위험성을 가지고 있다. #정규 표현식(regular expression) -$regex연산자: 요소를 제공된 정규 표현식과 맞춰 본다. -prefix 타입의 쿼리를 제외하고는 정규 표현식 쿼리는 인덱스를 사용할 수 없고, 대부분의.. 2021. 1. 20.
[NoSQL] MongoDB 쿼리 언어 총정리1 #셀렉터 매칭 -가장 간단한 쿼리는 키-값 쌍이 도큐먼트에 문자적으로 일치하는 셀렉터를 사용하는 쿼리다. ex) db.컬렉션이름.find({"키":"값"}) db.컬렉션이름.find({"키1":"값1","키2":"값2"}) -하나 이상의 키 값을 넘겨줄 때는 조건이 모두 매치되어야 한다.(쿼리 조건 함수는 논리적 AND) -MongoDB에서 모든 텍스트 문자열 일치는 대소문자를 구분한다.(Case sensitive) #범위 연산자 범위 해당하는 연산자 $lt ~보다 작은 $lte ~보다 작거나 같은 = ex) db.컬렉션.find({'birth_year': {'gte': 1985}, 'birth_year': {'$lte': 2015}}) 위의 쿼리는 1985년보다 크거나 같고 2015년보다 작거나 같은 .. 2021. 1. 20.
[Data&SQL] Ad-Hoc , Ad-Hoc 쿼리란? Ad-Hoc이란? 라틴어로, 직역하면 그것에 대해서라는 뜻. '임시변통 가설'이라고 번역되기도 한다. '거짓말은 하지 않는다'의 훌륭한 예시이며, 대개 무의미하다. 학문적인 의미로 쓰일 때는 Ad Hoc가설이라 해서, '어떤 이론이나 학설, 논리에 대한 부정적인 근거나 반박이 나왔을 때 오직 그것에 대해서 반박하기 위해서만 필요한 가설', '반박을 위한 반박', '임시방편'을 일컫는다. 피반박자가 갖고 있는 의제가 논파되지 않도록 하기 위한 일종의 궤변이라고 생각하면 편하다. 즉, 문제에 대해 충분히 일반화되지 않은 해법인 셈.(임시(임기변통)의 뜻, 즉석에서 만드는 의 뜻이 강함) Ad-Hoc 쿼리란? 말그대로 Ad-Hoc의 성격을 띈 query이다. ex) 좀 여유롭게,혹은 특정한 형식 없이 사용할 .. 2021. 1. 19.
[NoSQL] MongoDB Index 생성,예제,효율확인 1. 50만개의 도큐먼트 생성 use testdb //testdb 데이터베이스 > for (i =0; i 2021. 1. 19.
[NoSQL] MongoDB capped collection, TTL collection Capped Collection -캡드 컬렉션은 높은 성능의 로깅 기능을 위해 설계되었다. -일반 컬렉션과 다른 점은 고정된 크기를 갖는다는 점이다. -더 이상의 공간이 없게 되면 도큐먼트를 삽입할 때 컬렉션에 추가된 지 가장 오래된 도큐먼트를 덮어쓰게 된다. -일반적인 보통 컬렉션에 모든 연산이 가능하도록 허용하지는 않는다. -개별 도큐먼트를 삭제할 수 없고, 도큐먼트의 크기를 증가시키는 어떤 업데이트도 수행할 수 없다. -만드는 방법 db.createCollection("컬렉션이름",{capped: true, size: 16384, max:100}) 최대 크기가 16384바이트고, 최대 100도큐먼트까지 저장되는 컬렉션 ex) capped 컬렉션 생성 for문을 이용하여 500개의 데이터 삽입 cap.. 2021. 1. 19.
[DataBase] MySQL Index 1 (B-tree index) 인덱스(index) -인덱스는 데이터의 저장(INSERT,UPDATE,DELETE)의 성능을 희생하는 대신에, 데이터의 읽기(SELECT)속도를 높이는 기능이다. -MySQL에서는 B-TREE 알고리즘 HASH 알고리즘, FRACTAL-TREE알고리즘 및 R-TREE알고리즘이있다. 1)B-Tree 알고리즘: 가장 일반적으로 사용되는 알고리즘으로 컬럼을 변형하지 않고, 원래의 값을 이용해 인덱싱하는 알고리즘 2)Hash 알고리즘: 컬럼의 값으로 해시 값을 인덱싱하는 알고리즘으로 매우 빠른 검색을 지원. 값을 변형해서 인덱싱하므로 전방일치와 같이 값의 일부만 검색하고자 할 때는 인덱스를 사용할 수 없다. B-Tree Index -B-Tree 인덱스는 가장 범용적인 목적으로 사용되는 인덱스 -최상위에 하나의 .. 2021. 1. 18.
[DataBase] MySQL 아키텍처(구조) MySQL의 전체구조 MySQL 서버는 MySQL엔진과 스토리지 엔진으로 구분된다. MySQL 엔진 -클라이언트로부터 접속 및 쿼리 요청을 처리하는 커넥션 핸들러, SQL 파서 및 전처리기, 그리고 쿼리의 최적화를 위한 옵티마이저, DBMS의 두뇌에 해당하는 처리를 수행한다. 스토리지 엔진(Storage engine) -스토리지 엔진은 실제 데이터를 디스크 스토리지에 저장하거나 읽어오는 부분을 전담한다. -MySQL 서버에서의 MySQL엔진은 1개, 스토리지 엔진은 여러개를 동시에 사용 가능하다. ex) CREATE TABLE test_table(컬럼명1 데이터타입, 컬럼명2 데이터타입) ENGINE=InnoDB; 처럼 스토리지 엔진을 지정하면, 테이블의 모든 작업은 해당 스토리지 엔진이 처리 -SHOW.. 2021. 1. 18.
[DataBase] DBMS별 function 비교(ms-sql(sql-server),oracle,mysql) 출처: hackersstudy.tistory.com/25 2021. 1. 18.
728x90