RDB
NoSQL 개념이 따로 있는게 아니라
영어로 보면 one is red , others blue
Select 이런걸 사용하지 않는 모든게 noSQL
영역이 따로 있는게 아니고
나머지를 다 포함시킨다.
EX)
- humongous(거대한)에서 나온,, MongoDB - 분산, documents에 최적화
- Redis
- HDB(입력기반빠르게 처리)
다 제각각…
- 10gen
- Cafe24 리눅스 플랫폼을 서비스 도메인 구입 대행 제공 - PaaS
서비스형 플랫폼….
2000년대 => 양이 어마어마하다
고객들의 데이터 증가..
자체 개발 설계
데이터는 늘어나니깐 물리적으로 한개의 서버 정착 불가능
물리적으로 여러 머신의 데이터
mongoDB
Sharding 기법 여러 데이터베이스를 나눠서 관리
어떤 키값을 나눠서 계산
문서 document를 데이터를 다루는 회사가 많다.
Document 저장하고 끄집어내는…
SQL를 좋아하지 않으면
mongoDB 서버가 떠있다고 치고
각 언어별로 접근할 수 있는 라이브러리를 제공
Java class 메소드
Python 함수를 불러다가 쓴다.
해당언어 드라이버
파이썬 함수를 제공
mongoshell
Javascript shell 드라이버도 이미 개발
Javascript
- document : row document 가 모인게 collection
- Collection : table
- _id : primary key pk이름은 고정
JSON 타입 JAVA SCRIPT OBJECT NOTATATION
몽고는 json과 똑같지는 않아서 JSON LIKE 타입으로 쓴다.
KEY , VALUE
- {"greeting" : "Hello, world!"}
- {"greeting" : "Hello, world!", "foo" : 3}
- type-sensitive
- {"foo" : 3}
- {"foo" : "3"}
- Cas-sensitive
- {"foo" : 3}
- {"Foo" : 3}
- Document 내의 key/value 쌍은 순서를 가짐
- {"x" : 1, "y" : 2} 과 {"y" : 2, "x" : 1}은 서로 다름
- 서로 다른 순서니깐 다르다..
- Collection
- Dynamic schemas
- 서로 다른 shape를 가지는 documents {"greeting" : "Hello, world"} 과
- {"foo" : 5}는 하나의 collection에 저장될 수 있다.
- Any document can be put into any collection.
- 네임스페이스 사용
db : cms
collection : blog.posts
blog.posts collection의 네임스페이스는 cms.blog.posts 임
네임스페이스 길이는 121bytes 제한
- 예약된 database 명
- Admin
Root database
- local
This database will never be replicated and can be used to store
Any colloections that should be local to a single server
- config
Sharding 구현되었을 때, 데이터베이스 구성 정보를 저장하는 용도
CRUD : create read update delete
Sql : insert select update delete
Post는 document
Document를 collection에 넣어보자
Db.blog 가 collection 이름
배열안에 document 가 들어가 있는 것
맨 처음 하나만 나오는 findOne
기존에 있는걸 update comments를 넣어준다.
Delete 지우는거 -> 지우고 찾으면 null..
< MongoDB 주요 Data Types>
1. null
Null can be used to represent both a null value and a nonexistent field: 해당 필드의 값이 null or 해당 필드값 존재안해서 null
{"x" : null}
2. boolean
There is a boolean type, which can be used for the values true and false: javascript에서는 T랑 F 소문자
{"x" : true} 소문자 주의
3. number
The shell defaults to using 64-bit floating point numbers. Thus, these numbers look “normal” in the shell: 64타입으로 이루어진 실수를 쓴다.
{"x" : 3.14} 내부적으로 3.14 사용
or:
{"x" : 3}
For integers, use the NumberInt or NumberLong classes, which represent 4-byte or 8-byte signed integers, respectively.
{"x" : NumberInt("3")}
{"x" : NumberLong("3")}
bit byte
컴퓨터는 0과 1로 구성
Bit * 8 = Byte
0 1
2bit
0 0 = 0
0 1 = 1
1 0 = 2
1 1 = 3
0 ~ 2^1-1
0~3
0~2^2-1
4. string
Any string of UTF-8 characters can be represented using the string type:
{"x" : "foobar"}
5. date
Dates are stored as milliseconds since the epoch. The time zone is not stored:
{"x" : new Date()}
6. regular expression
Queries can use regular expressions using JavaScript’s regular expression syntax:
{"x" : /foobar/i}
7. array
Sets or lists of values can be represented as arrays:
{"x" : ["a", "b", "c"]}
arrays can contain different data types as values
{"things" : ["pie", 3.14]}
8. embedded document # document 안에 document
Documents can contain entire documents embedded as values in a parent document:
{"x" : {"foo" : "bar"}}
{
"name" : "John Doe",
"address" : {
"street" : "123 Park Street",
"city" : "Anytown",
"state" : "NY"
}
}
9. object id
An object id is a 12-byte ID for documents.
{"x" : ObjectId()}
10. binary data 통과
Binary data is a string of arbitrary bytes. It cannot be manipulated from the shell.
Binary data is the only way to save non-UTF-8 strings to the database.
11. code 함수 정의
Queries and documents can also contain arbitrary JavaScript code:
{"x" : function() { /* ... */ }}
Help 호환성있게 사용
계정 생성
내 계정 json열기 해서 추가하기
Studio 3T
2. Updating Documents
- UpdateOne, UpdateMany 는 첫번째 인자로 필터를 받으며, 두번째 인자로 변경될 documents의 내용을 받는다.
- replaceOne은 첫번째 인자로 필터를 받으며, 두번째 인자로 대치할 document내용을 받는다.
- 만약, 2개 이상의 update가 특정 document에 동시에 전달 될 때는 먼저 서버에 도착한 update 내용이 반영되고 다음 도착한 내용이 뒤이어 적용된다. 결국, 마지막 전달된 내용이 최종적으로 반영된다.
'IT > MongoDB' 카테고리의 다른 글
[12일차] MongoDB 정리본 (0) | 2022.07.05 |
---|---|
[12일차] MongoDB (0) | 2022.07.05 |
[11일차] MongoDB 정리본 (0) | 2022.07.04 |
[11일차] Studio 3T for MongoDB (0) | 2022.07.04 |
[10일차] MongoDB (0) | 2022.07.01 |
댓글