본문 바로가기
반응형

Data Base103

[MariaDB] : CentOS에서 MariaDB 설치 및 셋팅 MySQL 유료화로 인해 개발된 관계형 데이터 베이스 코어는 MySQL을 사용해서 MySQL에서 사용하는 쿼리를 그대로 사용할 수 있다. 즉, 그냥 완전 똑같다고 보면 된다. 기업들도 MySQL에서 MariaDB로 전환하는 추세이다. vi /etc/yum.repos.d/MariaDB.repo [mariadb] name = MariaDB baseurl = gpgkey = gpgcheck = 1 repo 파일 생성하기 yum install MariaDB-server MariaDB-client mariadb 설치 systemctl status mariadb mariadb 상태 확인 systemctl start mariadb mariadb 실행하기 systemctl enable mariadb 부팅할 때 자동 실.. 2022. 3. 8.
[Hadoop] : Hadoop 자문 자답 12제 1. 다음 gz로 압축된 로그 파일에 존재하는 이미지 호출에 대해 하둡분산파일시스템에 업로드하는 명령어를 작성하시오. - 이미지 파일 확장자 : jpeg, jpg, png, gif - 업로드되는 파일명 : /img/log - 로그파일 : /access_log.gz 💡 대소문자 구분) zcat access_log.gz | grep -E 'JPEG|JPG|PNG|GIF' | hadoop fs -put - /img/log 대소문자 구분없음) zcat access_log.gz | grep -Ei 'JPEG|JPG|PNG|GIF' | hadoop fs -put - /img/log 2. 다음 gz로 압축된 로그 파일에 10.250 대역의 IP 호출에 대해 하둡분산파일시스템에 업로드하는 명령어를 작성하시오. - 업로.. 2021. 12. 9.
[NOSQL] : MongoDB의 설계 기준 MongoDB를 구축하기 위한 설계 기준입니다. 데이터 조작은 어떻게 하나요? 하나의 Collection은 여러 개의 필드로 구성됩니다. 소량의 데이터, 대용량의 데이터 등 여러 데이터를 저장하는 필드들이 있습니다. 매일 참조되는 필드가 있을 수도 있고, 일 년에 한 번씩 참조되는 필드가 있을 수도 있습니다. 다양한 필드들을 하나의 Collection으로 생성하게 되면 불필요하게 메모리와 CPU 등 시스템 자원을 낭비하게 되고 시스템 성능을 저하시키는 원인이 될 수 있습니다. ACCESS PATTERN은 어떤가요? 빅데이터에 대한 쓰기 작업이 빈번한 Collection은 여러 개의 Collection으로 분리 설계하게 되면 초당 몇 만건의 데이터를 빠르게 저장하는데 한계가 있을 수 밖에 없습니다. 빅데이.. 2021. 12. 6.
[NOSQL] : MongoDB 논리적 구조 설계 MongoDB, 몽고디비 논리적 구조 설계 시 주요 특징 MongoDB는 데이터와 프로세스 모두가 설계의 중심입니다. 파일 시스템을 이용한 데이터 저장 기술은 기업의 업무적 프로세스 중심으로 데이터를 해석하고 구조를 설계하는 방법입니다. 데이터베이스 관리 시스템을 이용한 방ㅂ접은 기업에서 발생하는 데이터를 중심으로 분석, 설계하는 방법입니다. NoSQL 기술에서는 기업의 업무적 프로세스와 데이터 모두를 설계의 중심으로 두어 유연한 데이터 구조를 설계하고 관리할 수 있습니다. Rich Document Structure를 제공합니다. Rich Document Structure는 일부 데이터 중복이 발생한다고 해도 빠른 데이터 처리 및 효율적인 관리가 보장도니다면 비정규화된 설계구조도 하나의 설계 방법이 될 .. 2021. 12. 6.
[SQL] : 정렬을 위한 ORDER BY 절 정렬을 위한 ORDER BY 절 정렬은 크기 순서대로 나열하는 것으로 오름차순(ASC)과 내림차순(DESC)로 나눌 수 있습니다. ASC 오름차순 DESC 내림차순 숫자 작은 값부터 정렬 큰 값부터 정렬 문자 사전 순서로 정렬 사전 역순으로 정렬 날짜 빠른 날짜 순서로 정렬 늦은 날짜 순서로 정렬 NULL 가장 마지막에 나온다. 가장 먼저 나온다. 표로 쉽게 보면 오름차순과 내림차순을 쉽게 구분할 수 있습니다. 로우를 정렬하기 위해 select 문에 order by 절을 추가하고 어떤 컬럼을 기준으로 어떤 정렬을 할 것인지 결정해야 합니다. ASC 오름차순 select * from emp order by sal asc; 급여 컬럼을 오름차순 정렬한 것을 볼 수 있습니다. 숫자는 작은 값부터 큰 값으로 정.. 2021. 11. 30.
[SQL] : NULL을 위한 연산자 NULL을 위한 연산자 select * from emp where comm=null; #예시를 위한 오류코드입니다. NULL 값은 = 연산자로 판단할 수 없습니다. select * from emp where comm is null; IS NULL 연산자로 커미션을 받지 않는 사원을 검색할 수 있습니다. 아래에서 조금 더 자세히 보겠습니다. COMM이 NULL값인 데이터만 가져왔습니다. 2021. 11. 30.
[SQL] : LIKE 연산자와 와일드카드 LIKE 연산자와 와일드 카드 LIKE 연산자는 검색하고자 하는 값을 정확히 모를 때 사용합니다. 와일드카드 % 사용하기 select * from emp where ename like 'F%'; 검색하고자 하는 이름을 정확히 모를 때 F를 맨 앞에 포함하고 그 뒤를 모른다는 뜻으로 F% 처럼 사용합니다. %는 어떤 문자가 몇 개가 오든지 상관이 없다는 의미를 가지고 있습니다. select * from emp where ename like '%A%'; 이름 중 A를 포함하는 사원을 검색합니다. 문자 앞,뒤에 %를 써주면 중간에 A라는 문자만 있으면 앞,뒤에 문자열이 몇 개가 오든 없이 찾습니다. 와일드카드 _ 사용하기 select * from emp where ename like '_A%'; _ 는 어떤 .. 2021. 11. 30.
[SQL] : IN 연산자 IN 연산자 select * from emp where comm=300 or comm=500 or comm=1400; 커미션이 300이거나 500이거나 1400인 사원을 검색하기 위한 쿼리입니다. OR을 사용해야 합니다. OR 연산자 대신 간단하게 IN 연산자를 사용할 수도 있습니다. select * from emp where comm in(300, 500, 1400); 이렇게 쓰면 or 연산자보다 간단한데 결과 값은 똑같습니다. select * from emp where comm not in(300, 500, 1400); COMM이 300, 500, 1400이 아닌 사원을 모두 가져왔습니다. not in 연산자를 사용했습니다. select * 2 from emp 3 where comm300 and co.. 2021. 11. 30.
[SQL] : BETWEEN AND 연산자 Between and 연산자 select 2 * 3 from 4 emp 5 where 6 sal >= 2000 and sal 3000; sal(급여)이 2000 미만이거나 3000 초과인 사원을 검색하기 위해 or 연산자를 활용할 수도 있습니다. select 2 * 3 from 4 emp 5 where 6 hiredate between '1981/01/01' and '1981/12/31'; between and 연산자는 숫자 뿐만 아니라 문자형과 날짜형에도 사용할 수 있습니다. 주의할 점은 비교 대상이 되는 값을 작은 따옴표로 감싸줘야 합니다. 2021. 11. 30.
[SQL] : WHERE 문으로 조건에 맞는 데이터 검색하기 조건에 맞는 데이터 검색 select 2 * 3 from 4 emp 5 where 6 deptno = 10; deptno(부서번호)가 10번인 데이터만 조회합니다. where 문법을 통해 조건을 걸 수 있습니다. 문자 데이터 조회 select 2 empno, ename, sal 3 from 4 emp 5 where 6 ename = 'FORD'; 이름이 FORD인 사원의 empno(사원번호), ename(사원이름), sal(급여)를 출력하는 예제입니다. SQL 쿼리는 대소문자를 딱히 구분하지 않지만 ename에 들어가는 테이블 내에 저장된 데이터 값은 대소문자를 구분하기 때문에 ename = 'ford';로 사용하면 조회가 되지 않습니다. 날짜 데이터 조회 select 2 * 3 from 4 emp 5 .. 2021. 11. 28.
[SQL] : SQL 편집 명령어 편집 명령어 명령어 설명 LIST (L) 버퍼에 저장된 모든 SQL문, 검색한 라인의 SQL문을 나타냅니다. / SQL문을 보여주지 않고 바로 실행합니다. RUN (R) 버퍼에 저장된 SQL문을 보여주고 실행합니다. select 2 ename, sal*12+nvl(comm,0) 3 from 4 emp; 편집 명령을 실행해 보기 위해서 연봉을 계산하는 쿼리를 작성했습니다. L 연봉을 계산하는 쿼리문을 다시 한 번 나타내기 위해서 LIST라는 명령어를 사용합니다. LIST의 약어인 L을 입력합니다. / 버퍼에 저장된 쿼리문을 실행시키기 위해서 /를 입력합니다. R SQL 버퍼에 저장된 쿼리문을 실행하는 R명령어입니다. R명령어는 L명령어 + /명령어라고 볼 수 있습니다. 2021. 11. 27.
[SQL] : 파일 명령어 SQL 파일 명령어 파일 명령어는 보관중인 버퍼의 내용을 영구적으로 기록하기 위해서 파일에 저장하는 명령어입니다. 명령어 설명 EDIT (ED) 파일의 내용을 vi(유닉스)나 notepad(윈도우즈)와 같은 에디터로 읽어 편집을 할 수 있도록 합니다. HOST 오라클을 종료하지 않고 OS 명령어를 수행할 수 있게 OS 환경으로 잠시 빠져나갈 수 있도록 합니다. HOST로 OS를 잠시 빠져나간 상태에서는 EXIT를 통해 다시 Oracle로 돌아올 수 있습니다. SAVE SQL 버퍼 내의 현재 내용을 실제 파일로 저장합니다. @ SQL 파일에 저장된 내용을 실행합니다. SPOOL 오라클 화면을 갈무리하여 파일로 저장합니다. GET 파일의 내용을 SQL 버퍼로 읽어 들입니다. EXIT 오라클을 종료합니다. 파.. 2021. 11. 27.
[Data Modeling] : 반정규화의 장점 및 단점과 절차 반정규화 (Denormalization) 장점 : 성능이 향상되고 관리 효율이 올라갑니다. 단점 : 데이타의 일관성, 정합성을 해칠 가능성이 있습니다. 중복된 내용이 많다보니 비용이 많이 발생합니다. 지나치게 반정규화가 많으면 오히려 성능에 악영향을 미칠 수 있습니다. 모델러나 설계자가 단독으로 정하지 않고 관련자들과 협의를 통해 반정규화를 결정합니다. 모델러나 설계자의 다양한 경험이 필요합니다. 반정규화 절차 1. 반정규화 대상 조사 - 범위 처리 빈도수 - 대량의 범위 처리 - 통계성 프로세스 - 테이블 조인 개수 2. 다른 방법 유도 검토 - 뷰, 테이블 - 클러스터링 적용 - 인덱스 조정 - 응용 어플리케이션 3. 반정규화 적용 - 테이블의 반정규화 - 속성의 반정규화 - 관계의 반정규화 참고 2.. 2021. 11. 26.
[Data Modeling] : 칼럼(column) 명명 규칙 칼럼 명명 규칙 1. 통용되는 약어가 있다면 그대로 표현합니다. 2. 가급적 4자리 이내로 정의하고 영문의미 약자 형태로 표현합니다. 3. 가급적 영어 자음위주로 구성하고 필요에 따라 모음도 사용합니다. 4. 자음이 중복되는 경우 중복 자음 중 하나만 사용합니다. 5. 영문의미가 3개 이상의 단어로 구성된 경우 각 단어의 첫 자를 사용합니다. 6. 단어영문명의 중복이 발생한 경우 중복 제거 우선 순위 - 영문의미를 다른 영문 단어로 변경하여 정의합니다. - 모음을 포함하여 정의합니다. - 길이를 4자로 정의합니다. 7. 접사가 포함된 표준단어는 공백이나 특수문자 사용을 배제합니다. 8. 숫자가 포함된 경우 단어영문명+숫자 형태로 구성합니다. - 숫자가 먼저 오지 않도록 합니다. 2021. 11. 26.
[Data Modeling] : 물리 데이터 모델링 기초 물리 데이터 모델링 정의 물리 데이터 모델링은 논리적 모델을 특정 데이터베이스로 설계함으로써 생성된 데이터를 저장할 수 있는 물리적인 스키마를 말합니다. (논리데이터 모델을 사용하고자 하는 DBMS 특성을 고려해서 데이터 베이스의 저장 구조로 변환하는 것 ( 그 데이터의 타입, 사이즈 등)) 물리 데이터 모델링과 데이터베이스 디자인 - 물리 데이터 모델링은 데이터의 구조에 관련된 것들을 물리적인 모습까지 설계하는 것 입니다. -데이터베이스 디자인은 이러한 물리적인 모델(설계도면)을 DBMS 관점의 오브젝트로 생성하는 최적의 설계(디자인)를 하는 것입니다. 물리 데이터 모델의 의의 물리적 데이터 모델링은 관계 데이터 모델링이라고도 합니다. 논리적 데이터 모델을 각각 관계형 데이터 베이스 관리 시스템의 특성.. 2021. 11. 19.
[Data Modeling] : 논리 데이터 모델링 연습 논리 데이터 모델링 연습하기 이 엔터티를 가지고 정규화를 해 봅니다. 색상이 중복될 수 있기 때문에 따로 빼 줍니다. 식별자를 줘서 M : M 관계를 만들어 줄 수 있습니다. 이 엔터티를 가지고 정규화 작업을 해 봅니다. 우선 딱 보이는 것은 반복적인 것은 하위 엔터티로 만들어줘야 하는 것 입니다. 출고 하나에 제품이 여러개가 생기기 때문에 1차 정규화를 했습니다. 그리고 나머지는 다 3차 정규화를 진행해 주면 이렇게 만들 수 있습니다. 주문을 할 때 하나만 하는 것이 아니라 여러개를 하기 때문에 출고, 출고상세 이렇게 나누어 볼 수 있습니다. 이것들을 하나로 관리하다 보면 출고에 대한 정보가 반복적으로 들어가게 됩니다. 그렇게 되면 변경 이상이 발생할 수 있기 때문에 데이터의 특정 정보만 수정하기 위해.. 2021. 11. 19.
[Hadoop] : 웹 서버 배포(3부) 데이터 수집 환경설정 Flume에서 자주 사용되는 예제입니다. vi로 flume-netcat을 만들어 줍니다. # The configuration file needs to define the sources, # ths channels and the sinks. # Sources, chnnels and sinks are defined per agent, # in this case called 'agent' agent.sources = s1 agent.channels = c1 agent.sinks = k1 agent.sources.s1.type = netcat agent.sources.s1.bind = localhost agent.sources.s1.port = 10001 agent.sources.s1.ch.. 2021. 11. 18.
[Hadoop] : 웹 서버 배포(2부) 웹 접속 포트 변경 8080 포트에서 10000 포트로 변경합니다. server.xml 파일 내용을 수정해 줍니다. vi server.xml 편집 모드를 통해 server를 편집해 줍니다. 위에 8080포트는 변경이 가능합니다. 포트 번호를 10000으로 변경해 줬습니다. 이 부분은 https에서 ssl 인증서가 사용된 톰켓 서버라고 보면 됩니다. 아파치와 충돌하면 안 되기 때문에 정해준 것 입니다. 웹 서버 웹 애플리케이션 서버 ws was 아파치 톰켓 nginx 간단하게 보면 웹 서버와 웹 애플리케이션 서버에서 아파치와 톰켓이 나누어 집니다. 여기서 웹 서버는 html, css, js 등을 실행할 목적으로 사용되고 웹 애플리케이션 서버는 말 그대로 애플리케이션을 돌아가게 하기 위해 만들어진 것 입니다.. 2021. 11. 18.
[Hadoop] : 웹 서버 배포(1부) 웹 서버 배포 스프링 프레임워크 등 웹 프로젝트의 배포 방법은 보통 war 파일로 프로젝트를 압축하여 웹 서버에 파일을 업로드 합니다. war 파일은 압축효율 0%의 순하게 파일을 묶은 압축파일입니다. - war 파일명은 반드시 ROOT.war (대소문자 구분)으로 생성해야 합니다. tar 압축과 유사합니다. War 파일을 압축하는 방법입니다. 우클릭하여 익스포트해 줍니다. 바탕화면에 ROOT.war 파일을 생성해 줍니다. ROOT.war 파일이 정상적으로 바탕화면에 익스포트 되었습니다. war 파일을 WinSCP를 통해 옮겨줍니다. 파일이 정상적으로 들어왔습니다. cp ROOT.war /usr/local/tomcat/webapps/ cd /usr/local/tomcat/webapps/ 복사를 해주고 확.. 2021. 11. 18.
[NOSQL] : Replica Set 멤버의 동기화 리프리카셋(Replica Set) 멤버의 동기화 리프리카셋을 운영하다 보면 각 멤버의 데이터 구조에 장애가 발생하는 프라이머리 서버 또는 세컨더리 서버의 데이터를 이용하여 각 서버들간에 데이터들을 동기화해야 하는 경우가 발생합니다. 멤버들 간에 자동화된 동기화 방법입니다. 리프리카셋을 설정하게 되면 인스턴스를 활성화 했을 때 하나의 멤버와 다른 멤버와 동기화가 되어 있지 않은 경우 자동으로 동기화 작업을 수행해 줍니다. db.shutdownServer() 우선 실습을 위해 DB를 종료해 줍니다. 데이터 파일과 저널 파일을 모두 삭제해 줍니다. mongod --dbpath c:\mongodb\disk2 --port 10002 --bind_ip localhost --replSet rptmongo --oplo.. 2021. 11. 16.
[NOSQL] : 복제 서버의 추가, 삭제 NOSQL 복제 서버 추가, 삭제하기 mkdir disk3 mongod --dbpath c:\mongodb\disk3 --port 10004 --bind_ip localhost --replSet rptmongo --oplogSize 10 db.printSlaveReplicationInfo() Secondray가 Primary가 된 것을 확인할 수 있습니다. rs.add("localhost:10004") 새로운 복제 서버를 추가합니다. db.printSlaveReplicationInfo() 10001이 Secondary 서버입니다. 10004도 정상적으로 추가가 된 것을 확인할 수 있습니다. rs.remove("localhost:10004") 복제 서버를 제거해주고 다시 확인해 보면 Port 10004 복.. 2021. 11. 16.
반응형