BigData (20)
MongoDB 서비스 설정 방법


※ 관리자 권한으로 명령 프롬프트를 실행해야 함

[명령 프롬프트 실행 후 명령어 입력]

echo logpath=C:\Program Files (x86)\MongoDB\log\my.log> "C:\Program Files (x86)\MongoDB\log\my.cfg"

echo dbpath=C:\Program Files (x86)\MongoDB\mydata>> "C:\Program Files (x86)\MongoDB\log\my.cfg"

sc.exe create MongoDB binPath= "\"C:\Program Files (x86)\MongoDB\bin\mongod.exe\" --service --config=\"C:\Program Files (x86)\MongoDB\log\my.cfg\"" DisplayName= "MongoDB" start= "auto"

Net start MongoDB

Net stop MongoDB


[관리도구] -> [서비스] 에서 아래와 같이 MongoDB가 서비스로 올라온 것을 확인한다.





신뢰할만한 mongoDB 매뉴얼 참조(Set up the MongoDB environment 부분) : http://docs.mongodb.org/manual/tutorial/install-mongodb-on-windows/




'BigData > NoSQL/MongoDB' 카테고리의 다른 글

[MongoDB] 일반 DB와 MongoDB 차이점  (0) 2015.05.19
[NoSQL] 빅데이터 구축 및 분석이란?  (0) 2015.05.18
  Comments,     Trackbacks
[MongoDB] 일반 DB와 MongoDB 차이점

http://docs.mongodb.org/manual/reference/sql-comparison/




컬렉션을 생성한 다음 키에 대한 필드 이름의 조건


1. $로 시작할 수 없다.


2. 255 크기 내에 작성한다. 


3. 연산자를 포함할 수 없다.


4. null(공백)이 중간에 들어갈 수 없다.


5. 필드 이름은 하나의 컬렉션 내에서 유일한 값으로 존재한다.


6. 전체 문서의 크기가 16M 제한적이다(네트워크의 대역폭).


7. 만일 문서가 대용량(16M 이상)이면 GridFS api를 사용해서 구현한다.





문서에 대한 정보(외부적인 상태)


1. mongod.lock : 서버의 프로세스 ID를 저장한다.


2. 0 파일(.ns) : 메타데이터를 네임스페이스 단위로 저장한다.


3. 2번의 크기는 ns 16M를 넘을 수 없다. - 28000개의 네임스페이스 하나의 데이터베이스는 컬렉션과 색인의 개수를 최대 28000개를 생성할 수 있다.

   --nssize arg(=16) 사이즈는 늘일 수 있으나 16M 단위로 처리한다.


4. test.0(64M), test.1(128M) 등의 파일은 순수 데이터 파일을 저장한다. 파일의 용량은 2GB까지가 최대이다.


5. 몽고는 데이터저장소의 크기를 정적으로 관리한다.





ObjectId("555a97730bd89a172bb8ab26")

   555a9773 : 타임스탬프 <4byte> 1970.1.1 표준타임

   0bd89a : 서버ID <3byte> 서버측 식별자.

   172b : 프로세스ID <2byte>

   b8ab26 : 로컬카운터 <3byte>


   <문서에 컬렉션이 추가되거나 문서가 추가될때마다 ID가 생성되며 프로세스가 생성된 ID를 카운팅해서 관리한다.>


   - 색인키

   - 문서 자체에서 bson 타입으로 생성해서 자동 추가된다.

   - 중복없음

   - 메모리를 가장 적은 크기로 차지한다.






//user_id:"eeee",age:43,status:"g"


1. my의 user_id를 출력하자.

   db.my.find({},{user_id:1});

   db.my.find({user_id:1},{});


2. age, status를 출력하자.

   db.my.find({},{"age":1,"status":1});


3. status, user_id를 출력하자.

   db.my.find({},{"status":1,"user_id":1});


4. insert into my(user_id,age,status) values('fff',45,'A');

   db.my.insert({user_id:"fff",age:45,status:"A"});

   db.my.insert({user_id:"zzz",status:"B"});

   db.my.find();


5. status가 A인 것을 찾아라

   db.my.find({status:"A"});


6. status가 A인 것을 찾아 user_id, status만 출력해라

   db.my.find({status:"A"},{user_id:1,status:1});


7. select * from my where status!='A';

   db.my.find({status:{$ne:"A"}});


>>>8. select * from my where status='A' and age=50;

   db.my.find({status:"A",age=50});


9. select * from my where status='A'or age=50;

   db.my.find({$or:[{status:"A"},{age:50}]});


10. select * from my where age>25;

   db.my.find({age:{$gt:25}});


11. select * from my where age<25;

   db.my.find({age:{$lt:25}});


12. select * from my where age>25 and age<=50;

   db.my.find({age:{$gt:25,$lte:50}});


13. select * from my where user_id like '%bc%';

   db.my.find({user_id:/bc/});


14. select * from my where user_id like 'ff%';

   db.my.find({user_id:/^ff/});


15. select * from my where status='A' order by user id ASC;

   db.my.find({status:"A"}).sort({user_id:1});


16. select * from my where status='A' order by user id desc;

   db.my.find({status:"A"}).sort({user_id:-1});


17. select count(*) from my;

   db.my.count();

   db.my.find().count(); --해봐


18. select count(user_id) from my;

   db.my.count({user_id:1});

   db.my.count({user_id:{$exists:true}});

'BigData > NoSQL/MongoDB' 카테고리의 다른 글

MongoDB 서비스 설정 방법  (0) 2015.05.19
[NoSQL] 빅데이터 구축 및 분석이란?  (0) 2015.05.18
  Comments,     Trackbacks
JAVA 이미지 사이즈 조절하기

ImageIcon 변경할아이콘 = new ImageIcon("이미지.png");

Image 변경할이미지 = 변경할아이콘.getImage();  //ImageIcon을 Image로 변환.

Image 변경된이미지 = 변경할이미지.getScaledInstance(가로, 세로, java.awt.Image.SCALE_SMOOTH);

ImageIcon 변경된아이콘 = new ImageIcon(변경된이미지); //Image로 ImageIcon 생성

'BigData > JAVA' 카테고리의 다른 글

[Day13] 파일 입출력  (0) 2015.03.05
[Day11] 예외처리(Exception)  (0) 2015.03.05
[Day10] 추상화  (0) 2015.03.05
[Day8] 캐스팅 연산자  (0) 2015.03.05
[Day7] 상속, 다형성  (0) 2015.03.05
  Comments,     Trackbacks
[NoSQL] 빅데이터 구축 및 분석이란?


빅데이타 구축(리눅스, 하둡(O)을 이용한 작업)과 

빅데이타 분석(O) : 클라우드 클러스터링, DB 클러스터링, DB 샤딩(G), 맵퍼를 이용한 키워드 실시간 분석(G), 
분석표(그래프)(G) 정형화된 자료(sql)와 비정형화된 자료(no-sql)가 공존하는데 비정형화된 자료를 모두 모아 키워드로 분석한 후 실시간으로 서비스 되는 것을 말한다.



'BigData > NoSQL/MongoDB' 카테고리의 다른 글

MongoDB 서비스 설정 방법  (0) 2015.05.19
[MongoDB] 일반 DB와 MongoDB 차이점  (0) 2015.05.19
  Comments,     Trackbacks
Spring

 

 

 

  Comments,     Trackbacks
DB에서 1:1, 1:N, N:M 관계에 관하여

 

1:1은 하나의 레코드인스턴스가 다른 하나의 레코드인스턴스와 관계될때,,,

가령 직원이 하나의 파킹랏을 가지고 있으면 1:1이 되지요 (직원 테이블과 파킹랏 테이블)

1:n은 하나의 레코드가 여러개의 인스턴스와 관계될때,,,
가령 직원이 여럿이 한 사무실에 있을때 (직원테이블과 사무실테이블, 직원이 속한 하나의 사무실에 여럿 직원이 근무)

m:n은 여러 레코드인스턴스가 복수의 레코드 인스턴스와 관계될때,,,
(저는 그냥 학생들에게 이경우 두개의 1:n으로 나누라고 합니다...
 가령 직원이 과목을 교육받을때,, 한 직원이 여러과목을 한 과목에 여러직원이 있으면, 저는 그냥 중간에 수강 테이블을 두어서
 학생-수강, 수강-과목 이렇게 두개의 1:n으로 나누어 버립니다...)

 

엔티티 정보 : 사원, 사원전화번호, 부서, 고객사


11 관계

하나의 사원은 반드시 하나의 사원전화번호를 가진다.

1N 관계

부서는 여러 사원을 부여한다.

MN 관계

사원은 하나 이상의 고객사를 관리한다.
고객사는 여러 사원이 관리한다.

예시 : 주식은 업종별로 관리되고, 업종은 여러 주식을 가진다.

reference : http://cafe.naver.com/sqlpd/3543 

 

'BigData > DB/Oracle' 카테고리의 다른 글

SELECT 구문  (0) 2015.03.20
  Comments,     Trackbacks
SELECT 구문

[제어판] -> [시스템 및 보안] -> [관리도구] -> [서비스]

tnsnames.ora 내에서 우리가 필요한 부분

XE =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = kitri-PC)(PORT = 1521))

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = XE)

)

)

샘플 SQL이 저장된 경로

C:\oraclexe\app\oracle\product\10.2.0\server\RDBMS\ADMIN

접속

http://127.0.0.1:8080/apex/

테이블 - Entity : 컬럼 네임

==================================

name kor eng mat

==================================

kim 90 50 90

lee 80 40 80

JI 70 50 70

[쿼리파일 불러오는 방법]

select * from tab; -> 생성된 테이블 확인하는 방법

====================================================

DB - Server, Client / Program : PL-SQL / xml 맵핑, 분석코드

계정 권한 / sys, sysdba(ID, PW), system 등

SID(XE) : 기본 DB의 영역, 작업공간, 메모리, 임시기억장소 등

Create(crud), Table(crud)

Read

Updata

Delete

====================================================

host help - 도스 모드 도움말

SAVE A.SQL -> 내문서에 저장됨

HELP SET -> 커멘드창에서 구현할 수 있는 명령어

DESC 테이블명 -> 테이블의 구조를 본다

VARCHAR2 - 4000자까지 가능하다

1. 생성된 Table 안에 자료를 추가한 후, 자료의 속성을 통해서 Read하는 구문

- 테이블의 구조를 확인한다. DESC 테이블명;

* 속성을 이용한 구문 처리

SELECT 칼럼리스트,,,,

FROM 테이블명;

Q1) 사원 테이블의 모든 내용을 보자.

SELECT * FROM EMP;

Q2) 사원 테이블의 사원의 이름과 직업을 출력하자.

Q3) 사원 테이블의 사원의 이름과 직업 월급을 출력하자.

Q4) 사원 테이블의 사원의 이름과 사번, 부서번호를 출력하자.

Q5) 부서테이블의 구조를 보자.

DESC DEPT;

Q6) 부서테이블의 전체 내용을 보자.

SELECT * FROM DEPT;

Q7) 사원테이블과 부서테이블의 내용을 보자.

SELECT * FROM EMP, DEPT;

Q8) 컬럼의 별칭을 줄 수 있다.

SELECT 칼럼명 별칭 FROM EMP; (오라클에서, 오라클에서 문자열은 ‘홍길동’ VARCHAR2)

SELECT 칼럼명 AS “별칭” EMP; (다른 DB)

사원테이블의 ENAME을 사원이름이라고 출력해보자.

SELECT ENAME 사원이름 FROM EMP;

Q9) 사원테이블에서 사원번호, 봉급, 부서번호 라고 출력하자.

SELECT EMPNO 사원번호, SAL 봉급, EMPNO 부서번호 FROM EMP;

Q10) SELECT EMP.ENAME, DEPT.DNAME, EMP.DEPTNO FROM EMP, DEPT;

SELECT E.ENAME, D.NAME, E.DEPTNO FROM EMP E, DEPT D;

Q11) 연결문자열 ||

SELECT ENAME || '님‘ FROM EMP;

데이터 뒤에 님이 붙는다

SELECT ENAME || '님의 월급은 ' || SAL || '이고 입사일은 ' || HIREDATE || '입니다.' FROM EMP;

FROM 뒤에가 먼저 수행되고 SELECT가 나중에 수행된다.

COL 컬럼명 FOR A 숫자크기; // 문자

COL 컬럼명 FOR 999; // 숫자

컬럼에 산술 연산, 논리, 비교 등을 할 수 있다.

Q12) 사원의 이름과, 월급, 연봉을 출력해보자.

SELECT ENAME, SAL, SAL*12 AS 연봉 FROM EMP;

Q13) 사원의 이름과 커미션을 출력해보자.

SELECT ENAME, COMM FROM EMP;

Q14) 봉급을 구하되 월급 + 커미션

이름 월급 커미션 봉급

SELECT ENAME 이름, SAL 월급, COMM 커미션, SAL+COM 봉급 FROM EMP;

NULL값은 연산이 안된다!

해결방안? -> NVL(컬럼명, 대처값)

SELECT SAL, NVL (SAL, 0) FROM EMP;

SELECT SAL, NVL(COMM, SAL) FROM EMP;

SELECT ENAME 이름, SAL 월급, COMM 커미션, SAL+NVL(COMM, 0) 봉급 FROM EMP;

[결과]

[조건부]

SELECT FROM WHERE 컬럼과 비교 연산

Q15) 사원 테이블에서 월급을 2000 이상 받는 사원을 출력하자.

SELECT * FROM EMP WHERE SAL>=2000;

Q16) 사원 테이블에서 부서번호가 10인 사원의 이름과 부서번호를 출력하자.

SELECT ENAME, DEPTNO FROM EMP WHERE DEPTNO=10;

Q17) 사원 테이블에서 입사년도가 82년 이후에 입사한 사원의 이름과 입사년도

SELECT ENAME, HIREDATE FROM EMP WHERE HIREDATE>'82/01/01';

SELECT ENAME, HIREDATE FROM EMP WHERE HIREDATE>'82-01-01';

SELECT ENAME, HIREDATE FROM EMP WHERE HIREDATE>'1982-01-01';

Q18) 사원의 봉급이 2000에서 4000 사이의 사원의 이름과 봉급을 출력하세요.

SELECT ENAME, SAL FROM EMP WHERE (SAL>=2000 AND SAL<=4000);

SELECT ENAME, SAL FROM EMP WHERE SAL BETWEEN 2000 AND 4000;

Q19) 사번이 7521, 7566, 7788인 사원의 사번과 이름을 출력하자.

SELECT EMPNO, ENAME FROM EMP WHERE EMPNO= 7521 OR EMPNO=7566 OR EMPNO=7588;

SELECT EMPNO, ENAME FROM EMP WHERE EMPNO IN(7521, 7566, 7588);

[그룹핑]

SELECT 컬럼 ----2

FROM 테이블 ----1

GROUP BY 컬럼(그룹) ----3

Q20) 사원 테이블에서 부서별로 출력해보자.

SELECT DEPTNO FROM EMP GROUP BY DEPTNO;

Q21) 사원 테이블에서 직업별로 출력해보자.

SELECT JOB FROM EMP GROUP BY JOB;

[집계 함수]

SUM(), AVG(), MAX(), MIN(), COUNT(*);

Q22) 사원 테이블에서 인원수를 출력해보자.

SELECT COUNT(*) FROM EMP;

SELECT COUNT(COMM) FROM EMP; (NULL값은 출력하지 않는 것이 특징)

Q23) 사원 테이블에서 봉급의 합계, 평균, 큰값, 작은값을 출력해보자.

SELECT SUM(SAL), AVG(SAL), MAX(SAL), MIN(SAL) FROM EMP;

Q24) 사원 테이블에서 직업별 봉급의 합을 구하시오

SELECT JOB, SUM(SAL) FROM EMP GROUP BY JOB;

SELECT ENAME, JOB, SUM(SAL) FROM EMP GROUP BY JOB; (X)

-> GROUP BY를 할 때 SELECT에 올 수 있느 것은 GROUP BY 대상과 집계 함수만 올 수 있다!

Q25) SELECT ENAME FROM EMP ORDER BY ENAME;

SELECT ENAME FROM EMP ORDER BY ENAME ASC; (기본)

SELECT ENAME FROM EMP ORDER BY ENAME DESC;

SELECT ENAME, JOB FROM EMP ORDER BY 2; -> JOB으로 정렬

SELECT ENAME, JOB FROM EMP ORDER BY 1; -> ENAME으로 정렬

Q26) 사원 테이블에서 이름은 오름차순 직업은 내림차순으로 출력해보자.

SELECT ENAME, JOB FROM EMP ORDER BY ENAME, JOB DESC;

Q27) 부서별로 출력하되 같은 직업의 개수를 출력해라.

SELECT DEPTNO, COUNT(JOB) AS “직업의 개수” FROM EMP GROUP BY DEPTNO ORDER BY 1;

SELECT JOB, COUNT(JOB) AS “직업의 개수” FROM EMP GROUP BY JOB ORDER BY 2;

Q28) 10번 부서의 사원의 이름, 사번, 부서명을 출력하자.

SELECT E.ENAME, E.EMPNO, D.DNAME FROM EMP E, DEPT D WHERE E.DEPTNO=D.DEPTNO AND E.DEPTNO=10;

Q29) 20번 부서에서 1982년에 입사한 사원의 이름과 부서명을 출력하자.

SELECT E.ENAME, D.DNAME FROM EMP E, DEPT D WHERE E.DEPTNO=D.DEPTNO AND D.DEPTNO=20 AND E.HIREDATE BETWEEN '82-01-01' AND '82-12-31';

[SELECT 구문정리]

<실행순서>

SELECT ------------5

FROM -------------1

WHERE ------------2

GROUP BY ---------3

HAVING -----------4

ORDER BY ---------6

Q1. 직업별 총 월급의 합을 구하고, 총 직업별 월급의 합이 5000 이상인 것만 출력하라

SELECT SUM(SAL) FROM EMP WHERE SUM(SAL)>=5000 GROUP BY JOB; (X)

*** 집계함수 비교는 WHERE 뒤에 올 수 없다.

SELECT JOB, SUM(SAL)

FROM EMP

GROUP BY JOB

HAVING SUM(SAL)>=5000;

Q2. 부서별 월급의 합을 구하고 그 총합이 10000 이상인 것을 출력하라.

SELECT DEPTNO, SUM(SAL)

FROM EMP

GROUP BY DEPTNO

HAVING SUM(SAL)>=10000;

[WILD CARD]

_ (Underscore) : 한문자

% : 모든 거, 아무 것도 없느 sruddn도 포함

Q1. 이름이 S로 끝나는 경우 : ‘%S'

SELECT ENAME

FROM EMP

WHERE ENAME LIKE '%S'

Q2. 이름의 두 번째 글자가 A인 경우 : ‘_A%'

SELECT ENAME

FROM EMP

WHERE ENAME LIKE '_A%'

Q3. 이름에 T가 두 번 들어가는 경우 : ‘%T%T%'

SELECT ENAME

FROM EMP

WHERE ENAME LIKE '%T%T%';

Q4. 이름의 첫 글자가 A ~ S로 시작하는 경우 :

SELECT ENAME

FROM EMP

WHERE ENAME BETWEEN 'A%' AND 'S%';

Q5. 이름의 첫 글자가 A, S로 시작하고 두 번째 글자가 C가 아닌 경우 :

SELECT ENAME

FROM EMP

WHERE ENAME LIKE 'A%' OR ENAME LIKE 'S%'

AND ENAME NOT LIKE '_C%';

Q6. 10%라는 문자열을 포함한 모든 문자열

LIKE '%10E%%' ESCAPE 'E' (E 뒤에 오는 %는 문자열로 간주함!)

: 이 문자열을 찾으려면 %가 WILD CARD 문자이기 때문에 ESCAPE 문자라는 것을 삽입해야 한다.

즉, LIKE '%10E%%' ESCAPE 'E'라고 하면, ‘%’가 출력된다.

여기서 E 대신에 어떤 문자라도 삽입할 수 있다.

SELECT * FROM EMP WHERE JOB LIKE '%\%AL\%%' ESCAPE '\';

 

'BigData > DB/Oracle' 카테고리의 다른 글

DB에서 1:1, 1:N, N:M 관계에 관하여  (0) 2015.04.02
  Comments,     Trackbacks
[Day13] 파일 입출력

[ 파일 입출력 : 스트림(Stream) ]

0, 1(bit) * 8 = 8bit = 1byte = 최소 코드 크기 = stream

 Reader - read() / Writer - write()

1. 스트림(byte) : read() / write() - 이미지, 동영상 등

2. 한글자(char) : read() / write() - 파일문서

3. Object형 - node(class) : read() / write() - 클래스를 통해서 자료 입출력


File : 디렉토리, 파일

c - createNewFile()
r - list()
u - renameTo(File dest)
d - delete()

 

'BigData > JAVA' 카테고리의 다른 글

JAVA 이미지 사이즈 조절하기  (0) 2015.05.18
[Day11] 예외처리(Exception)  (0) 2015.03.05
[Day10] 추상화  (0) 2015.03.05
[Day8] 캐스팅 연산자  (0) 2015.03.05
[Day7] 상속, 다형성  (0) 2015.03.05
  Comments,     Trackbacks