BFS를 연습해보기 위해서 

이 문제를 풀어보았다.

 

 

 

 

 

main에서는 먼저 데이터를 map에 넣어주고

가장 중요한 것은 

해당단지마다 bfs를 돌려준다는 것이다...

 

한번에 bfs를 돌려서 전체 탐색을 하는 것이 아니라

단지마다 bfs를 돌려서

해당 단지에 집이 몇가구 있는지를

세어야 하기 때문이다.

 

그리고 몇단지인지도 세어야 하기때문에 

사실 bfs를 처음 호출되는 횟수만큼이

단지 수라고 볼 수 있겠다.

 

queue에 데이터를 관리하기 쉽게 pos에

정점 y와x를 선언해서

class를 선언해주었다.

 

 

 

그리고 가장 중요한

bfs method

 

먼저 queue에 값을 넣어주고

 

queue가 빌때까지

while문을 돌려준다.

 

그리고 d 배열 

그니깐 아래,위,오른쪽,왼쪽으로 

이동할 좌표를 입력해놓은 배열을

for를 돌면서

새로운 좌표를 구해준다

 

그게 newY, newX

 

구한 새로운 좌표값을 먼저

 

1. 경계값을 체크해준다.

( 0보다 큰지, N 보다 작은지)

2. 그리고 단지에 포함되는지를 체크한다

map[newY][newX] == 1

3. 그리고 방문한 적이 있는지? 도 체크해준다

visited[newY][newX] == fasle

 

해당 조건들이 모두 통과가 되었으면

queue에 들어갈 자격이 된닷!!

 

그렇다면 

queue에 값을 넣어주고 

방문했다고 체크해주고

그리고 단지내 가구수의 count 를 늘려준닷

 

 

그리고 해당 queue가 비면

(단지내 가구를 모두 방문했으면)

해당 단지내 가구수 가 나왔기 때문에

정답인 ArrayList에 count 배열을 넣어준다.

 

 

그리고 맨마지막에 출력할때에는

ArrayList의 수가 총 단지의 수이고

각 count가 단지내 가구 수가 된다.

 

그래서 ArrayList를 라이브러리를 

이용해 정렬해주고

 

출력해주면된다~~

 

 

 

 

 

 

 

 

 

 

'DEVELOP > ALGORITHM' 카테고리의 다른 글

Graph 최단거리 알고리즘 정리  (0) 2021.03.08
백준 2667번 단지번호 붙이기 (BFS)  (0) 2020.01.18
완전이진트리 중위 순회 문제  (0) 2020.01.16
단순 2진 암호코드  (0) 2020.01.14
View 조망권 문제  (0) 2020.01.14

 

트리를 이해하는 문제이다

이문제는 완전 이진트리를 중위 순회 하는 방법이다

 

중위 순회는 루트 노드를 중간에 읽는 방법이다

LEFT자식 -> ROOT -> RIGHT 자식

 

참고로

전위 순회 : ROOT -> LEFT -> RIGHT

후위 순회 : LEFT -> RIGHT ->ROOT

 

 

 

 

해당 문제에서 input이 이런식으로 들어오므로 input을 받을 때 주의 해야한다.

 

8
1 W 2 3
2 F 4 5
3 R 6 7
4 O 8
5 T
6 A
7 E
8 S

 

하지만 완전이진트리에서는 이걸 감안할 필요가 없다 트리에 들어가는 순서가 일정하기 때문이다.

그러므로 index와 value값만 받고 나머지는 무시해준다 ^_^;;

 

그래서 해당 tree 테이블에 해당 index값에 value값을 넣어주고

그다음 중위 순회 하는 function을 call 해준다.

 

먼저 해당 function을 나가는 조건을 명시해준다.

1. node가 tree의 수를 벗어나거나

2. tree에 값이 없다

 

 

그리고 참고로

tree는 인덱스가 0이 아닌 1부터 시작하도록 설계해주었다

완전이진 트리이므로

그리고 숫자 계산하기도 이게더 편하다.

 

 

그리고 먼저 LEFT를 먼저 뽑아줄거니깐

*2를해서 inOrder 메소드를 호출하고

그다음 출력 (ROOT)

그다음 오른쪽 자식 호출 *2+1

 

 

전위, 후위 순위는 이 출력하는 라인만 순서만 바꾸어 주면된다

 

 

다음은 input , output 파일이다.

 

 

inorder_input.txt
0.00MB
inorder_output.txt
0.00MB

'DEVELOP > ALGORITHM' 카테고리의 다른 글

백준 2667번 단지번호 붙이기 (BFS)  (0) 2020.01.18
카드교환 문제 (순열)  (0) 2020.01.17
단순 2진 암호코드  (0) 2020.01.14
View 조망권 문제  (0) 2020.01.14
KOITP 동맹의 동맹은 동맹  (0) 2018.06.12

 

이문제는 사실 이해만 하면 그닥 어렵지않다

처음에 풀었던 코드에서

좀더 성능좋게 해서 고쳐봤다

 

 

 

 

'DEVELOP > ALGORITHM' 카테고리의 다른 글

카드교환 문제 (순열)  (0) 2020.01.17
완전이진트리 중위 순회 문제  (0) 2020.01.16
View 조망권 문제  (0) 2020.01.14
KOITP 동맹의 동맹은 동맹  (0) 2018.06.12
KOITP - BFS / DFS 문제 풀기  (0) 2018.06.11

 

 

 

 

 

다음 문제를 풀어보겠다

무척 쉬운문제다 ;; 

 

 

findAns 함수가 핵심인데

 

우선 나는 한 중앙 아이를 잡고

거기서 앞뒤 1칸, 두칸의 아이들을 비교하였다

그런데, 조망권이 확보되려면 중앙 아이가 

양쪽의 아이들보다 커야 하므로,

그걸 먼저 검사해주었다 그 function이 isBig이고

 

그래서 검사하는 아이가 양쪽보다 크면 그제서야 조망권이 몇인지 체크한다.

 

조망권은 네개값 비교한것중 가장 작은 값으로 설정하면된다.

왜냐하면 하나라도 걸리면 조망권이 확보가 안되므로

 

그래서 Math.min값으로 구해주었다.

그런데 이 값은 항상 isBig이 네번 호출되므로 그닥 좋은 성능은 아닌거 같다

ㅋ_ㅋ;;

 

 

 

'DEVELOP > ALGORITHM' 카테고리의 다른 글

완전이진트리 중위 순회 문제  (0) 2020.01.16
단순 2진 암호코드  (0) 2020.01.14
KOITP 동맹의 동맹은 동맹  (0) 2018.06.12
KOITP - BFS / DFS 문제 풀기  (0) 2018.06.11
KOITP 가장 많은수 ( count sort)  (0) 2018.06.08

 

Oauth 2.0 는 무엇인가,, 알아보겠다 

이전엔 보통 open api를 이용할때 토큰을 받아와서 헤더값이 넣어주는 걸

즉, 토큰값을 받아오는걸 구현한 방식이 OAuth 라고 알고있었다

이것도 맞지만 더 자세히 알아보고자 한다 :-)

 

OAuth 2.0은 인가를 위한 프레임워크이다 

즉, 접근할 있는 권한을 주는 것이다.

 

여기서 헷갈리는 건 인증과 인가의 차이점이다.

인증은 Authentication : 본인여부를 확인 하는것  

인가는 Authorization : 서비스나 시스템에 접근 할 수 있도록 권한이 주어지는것 

 


 

OAuth 에는 네가지 역할이 있는데 그것은 다음과 같다.

4가지 실물

  1. Resource Owner (사용자,) : 서비스 이용자
  2. Client (G마켓) : 서비스 제공자
  3. Authorization Server (네이버-매표소)  : 토큰 발급 , 인가의 주체자
  4. Resource Server (네이버-검표하는곳) : 토큰 확인 , 리소스 접근심의 문지기

 

이렇게 정리 할 수 있는데,

이해할 수 있도록 설명을 덧붙이자면..

 

사용자가 G마켓이라는 서비스를 이용하고자 하는데

G마켓을 가입할때 직접 가입하지않고 요새 많이 이용하는 네이버,페이스북, 구글 ID로 로그인 하는걸 

이용해서 가입하고자 한다

 

그러면 나라는 사용자는 Resource Owner이고

사용하고자 하는 서비스는 Client G마켓이다.

 

그리고 Authorization Server는 네이버나 인증을 도와주는 곳인데 이곳에서는 토큰만 발급해준다.

그이후, 발급한 토큰을 가지고 네이버에서 원하는 정보를 가져오는데

이 토큰을 확인하는 것이 Resource Server이다.

 


Grant Type (허가 유형) 
- Client가 Authorization Server에게 토큰 발행을 요청하는 유형

 

토큰을 발행하는 과정에서 다양한 정보를 주고 받는데,

어떤 정보를 주고 받는가?를 알아보겠다

 

1. Client_id, client_secret


- Id와 pw 역할


2. Redirect_uri


- Client 가 authorization server에 토큰 발행을 요청할 때 브라우저를 아예 redirect하는
경우도 있다. 토큰을 발행하는 과정에서 client는 필요 시, 인가 되었을 타이밍에 redirect되어야 할
Uri 정보를 authorization server에게 넘겨준다.

 

3. Response_type


- Client가 authorization server에게 토큰발행 요청 했을 때, 응답을 정의 (request에 대한 response를 정의)
- 5가지 grant type중 2가지 방식에서만 사용 ( Implicit , Authorization code)
○ Implicit : client-> Authorization server 최초요청만으로 토큰 발행 : response_type 은 token
○ Authorization code는 최초 요청에 code 리턴  

 

4. Grant_type

밑에서 자세히 설명하겠다 이건 

 

5. Scope (optional)


- Client가 접근 가능하도록 승인된 내 리소스의 범위
- Client가 authorization server에 토큰을 발급받은 이후, Resource Server를 지나서 실제
Resource에 접근하려고 할때, client별로 접근이 가능한 리소스를 구별해놓은 정보
( 예를들어 G마켓에서 네이버로 접근할때, 전화번호만가능, 생일까지 가능 이런?)

 

6. State (optional)

- Sate는 csrf 공격을 막기위한 정보 ???

 

 



Grant Type 5가지


1. Authorization code

 

- 가장 복잡한 방식이지만 가장 범용적으로 사용

- 인가 받은 code값을 토대로 토큰을 요청하는 방식
- Authorization Server에게 토큰을 발행 받기 위해 code값을 요청하고 이 code값을 
바탕으로 토큰을 발급 받는 방식
- Resonse_type = code


2. Implicit

- Client가 토큰발행을 요청하면 최초의 요청만으로 Authorization Server가 토큰 발행
- Response_type = token
- 쿼리스트링에 토큰 노출-> 모바일앱 또는 단말기에서 동작하는 웹 애플리케이션에서 주로 사용

 

3. Client Credentials

 

- 너무너무 신뢰가는 Client라서 Authorization Server가 묻지도 따지지도 않고 토큰 발행
- Resource Owner가 아닌 Client가 요청함

 

4. Resource Owner Password Credentials


- Resource Owner가 Client에게 id/password 전달함
- 토큰발행 요청하는 방식이 GET
- Resource Owner와 Client의 일급비밀(password/secret)을 모아서 토큰발행 요청 

 

5. Refresh 

 

- 최초에 token 받았을 때, 발급되는 refresh token으로 token 만료시, 재 발행 요청

- Authorization Code / Client Credentials Grant type 만 가능

안녕하세요~

 

2019년 10월말에

포르투갈 여행에 다녀왔는데요

 

그중에 리스본 

맛집 후기를 

쪄보도록 하겠습니다,,,

 

 

 

1. O Chiado

 

주소 : R. do Crucifixo 104, 1100-044 Lisboa, 포르투갈

구글 평점 : 4.5

 

이 집은

거의 생고기?를 뜨거운 돌판위에 

올려주는 스테이크가 아주 

신기방기해요

 

그래서 본인이 원하는 굽기만큼 

구워서 먹으면됩니닷,,

 

그리고 고기도 무척이나 두꺼워요!!!

 

그리고 

바깔라우 라고 

포르투갈에서 유명한 

대구 요리가 있는데

 

대구와 감자가 주 재료인 

요리인데

 

제가 포르투갈에서 먹은

바깔라우 요리중에서

여기가 제일 맛있었어요!!

 

 

그리고 저는 와인이랑 문어요리도 시켜서 먹었습니닷

모두 만족만족

 

저랑 동행들은 전화해서

예약해놓고 갔는데

자리가 그리 많지 않으니

 

예약하는걸 추천 드려요!

(전화해서,, 간단한 영어만하면

예약가능하니,, 어렵지 않습니당 ㅋ_ㅋ!!!)

 

 

 

2. Lisboa Há Mesa

 

주소 : R. das Portas de Santo Antão 95, 1150-265 Lisboa, 포르투갈

구글 평점 : 4.5

 

 

아주 가벼운 ,, 

그냥 기억도 잘안나는 무난한

조개 요리,,

이건 포르투갈 스테이크였는데

나름 나쁘지 않은 무난무난한

스테이크 였습니닷

 

 

 

가장 강추인것은....

이집의 해물밥 ㅠㅠㅠㅠㅠㅠ

 

여기 해물밥이 포르투갈에서 

해물밥 엄청 많이 먹었는데

진짜 쏘울 푸드입니닷....

 

 

거의 우리나라 국밥수준...

깊은 ㅠㅠ

해물 국물맛이란 ㅠㅠㅠㅠ

 

 

많은 해물 + 그리고 밥,,,,

 

진짜 우리나라 국밥이 생각나는 넘나 맛나는 음식이예요

 

게다가 양도 많습니다....

꼭 시켜주세요

이 집 해물밥 맛집입니다!!!!

 

둘이서 하나는 이거 무조건 먹어야해요,,,꼭,,,,

 

이 스타터가 아주 괜찮았어요 ~~

문어 샐러드 느낌!!!

 

그리고 가게 내부는 이렇게

한국인이 거의 없었고

동양인도 저희 밖에 없었어요

 

현지인이 많은 느낌이었습니다~

 

 

 

 

 

리스본에서도 많은 집을 갔지만

가장 맛있었던 집

기억 나는 집 두집만

 

기록하였어요~~

강추강추~

 

그럼 이만

안녕하세요~

 

2019년 10월말에 

포르투갈 여행을 다녀왔는데

 

그중에 가장 공들인 숙소,,,

포르투 숙소에 대해 포스팅 해보고자 합니닷

 

포르투 하면,, 뷰아입니까,,뷰,,,

뷰 덕후인 저는

뷰가 좋은 숙소를 찾아헤맸습니다

 

그러던중 가격도 우왕 너무좋고

뷰도 좋고

게다가 위치도 좋은

ㅇ-<-<,,,

 

모든걸 다갖춘 ㅠㅠㅠㅠ

숙소를 찾아 바로 예약했습니다

(사실 호스텔보단 비싸서 고민했음)

 

 

숙소는

벨로스 아이레스 아파트먼트

Belos Aires Apartments 

위치 : Região Norte PT, Rua das Taipas nº5, 4050-599 Porto, 포르투갈

구글평점 : 무려 5.0

 

 

나는 3박에 

214,967원에 예약했다,,

1박에 약 71000원정도 되는가격

ㅠ_ㅠ

저렴하지 않습니까?

사실 포르투갈 전체적인 물가가 그렇게 비싸진 않다

 

물가 저렴한곳 

너무사랑햇,,

 

 

방이 어떻게 생긴지는

동영상으로 첨부~

 

 

 

매일 눈떠서 뷰를 보는게 넘나 행복했다

 

위치는 포르투 상벤투역에서 그리멀지않다

걸어서 9분정도?

 

그런데 좋은건

사람이 가장많고

큰길로 다니면 바로 나온다는것이다

 

숙소 오는길에 슈퍼도 있어서

돌아오는길에 물을 사도 개이득이다,,

 

한가지 있었던 단점은

약간 추웠다는것,,?

하지만 이불덮으면 괜찮았다

 

 

그리고 난 숙소를 혼자써서 7만원이었지만

둘이같이써도 숙소가 무척 넓기때문에

ㅠㅠ 그러면 일박에 인당 3만5천원꼴이니...

 

 

둘이간다면 호스텔안가고 당연히 이숙소에

묵을것이다!!

아니면,,더좋은 호텔...

 

 

담당 직원분도 엄청 친절하다 참고로

 

이건 내문제인데

호텔 방문을 여는게 열쇠로 여는건데

ㅠㅠ 난 그게 잘못해서

어려웠지만...

이건 내문제인것으로...

몇번해보다보니 적응됐다 ^^

(역시 인간은 적응의 동물)

 

 

그럼

이만

 

 

 

포르투에서 3박4일 내내 비가왔기

때문에.. 

맛집을 정말 많이 찾아 다녔다

 

적극 추천하는건 

꼭 예약하고 가라는것이다.

유심을 보통 바꾸기때문에

 

전화해서 예약하라는 것이다

영어도 다 잘통하기때문에

영어로 예약하면 된다

 

아니면 포르투는 식당이 위치가 거기서 거기라

걸어다니다가 나는

식당에 들어가서 다음날 식당을 예약 하기도 했다 ㅎㅎ

 

아니면 인터넷으로 예약이 되는 곳도 있긴하다

(예를들어 그라함 레스토랑 )

 

 

그럼 하나하나 리뷰를 해보겠다

우선 다녀왔던 곳부터!

 


 

 

1. Bota&Bira

위치 : R. do Comércio do Porto 191, 4050-253 Porto, 포르투갈

구글평점 : 4.7

 

여기는 포르투에서 유일하게 두번 갔던 곳이다 

 

점심에 한번 

저녁에 한번

 

점심에는 단 7유로에 3코스가 나온다

스프 - 메인(고기/생선) + 마실것(와인 등) - 에스프레소

 

엄청난 가성비다 ㅠㅠ

 

나는 고기를 택했었는데

근데 닭고기라 별로였다

닭고기 무슨 밥같은게 나왔는데 비추한다 ㅋㅋㅋㅋㅋ

걍 생선먹기로

다른게 나오면 먹어볼만 할듯

 

 

저녁에갔을땐 

여러명이서 가서 메뉴를 아주 여러개 시켰는데

ㅠㅠ 먹는것마다 다 맛있었다

우선 꼭먹어야되는건

스테이크 티본스테이크 진짜 맛있당!!

글구 사이드는 꼭 스윗포테이토로 해야한당 

맛나맛나 

 

글고 씨푸드 파나다도 

걸쭉한 국물같은거에 해물밥 나오는데

진짜 맛있당

 

같이간 동행들은 씨푸드 파나다가 젤 맛있다고 했당 ㅋㅋ

 

아 그리고 서버가 아주 친절하다

쏘스윗하다,,,ㅇ-<-<

 

 

그리고 가게는 몇자리가 안되서 아주 

금방찬다

저녁은 꼭 예약해야할듯..

 

근데 기분이 좋았던건

가게가 아기자기해서 아주 귀엽다,,,

 

 

 

2. Cantina 32

주소 : R. das Flores 32, 4050-262 Porto, 포르투갈

구글 평점 : 4.4

 

이곳은 저녁에 가려고 했는데 예약 풀이라서

바로 다음날 점심으로 예약 ^^할래

해서 바로 다음날 간곳이다

 

우선 이집은 포르투갈에서 먹은데 중

문어가 가장 맛있는 집이다

ㅋㅋㅋ

 

꼭꼬 먹어야한다

문어랑 스테이크 먹었는데

 

스테이크는 무난했었던거 같고

문어가 아주 두껍고 실해서

맛있었다 

 

 

그리고 샐러도드 시켰는데 같이 시켜먹기 

괜찮았다

 

근데 이 가게는 약간 가게가 좀 힙한 느낌이었다

그래서 저녁에 가도 더 좋을 느낌?

인테리어가 힙하다

 

 

 

3. Impar Flores

주소 : R. das Flores 306, 4000-069 Porto, 포르투갈

구글 평점 : 4.4

 

 

이곳에서는 

새우먹물파스타 

문어구이

그리고 크림리조또?

를 시켰다

 

그냥저냥 무난했던곳

위치가 좋아서 지나가다가 가보면 좋을곳

근데 인기많아서

 

여기도 예약은 안했지만

가보면 좋을듯 ㅎㅎ

 

 

 

4.  Vinum - Restaurant & Wine Bar

주소 : Rua do Agro 141, 4400-003 Vila Nova de Gaia, 포르투갈

구글평점 : 4.6 

 

이곳은 예약을 인터넷으로 미리 하고 갔다

vinumatgrahams.com

 

이곳에서 하면된다.

 

그리고 이곳은 그라함 와이너리에서 운영하는 

레스토랑이다

 

나는 포르투에서 칼렘 와이너리 투어를 하고

그라함은 레스토랑으로 갔다~

 

근데 이곳은 꼭 점심에 가야한다 ㅠㅠ

가성비가 내리기때문 ㅠㅠ

 

런치 3코스가 단돈 25유로

 

그리고 나는 비오는 날이었지만

뷰가 어마어마하게 좋다

(뷰 엄청 좋아하는  편)

 

비와서 안타까웠지만ㅠㅠ

 

 

하지만,, 뷰가 좋다는것은,,,

그만큼 높이 올라가야한다는 것을 뜻한다

^_^ 등산을 해야하니 유념할것...

멀리서 간다면

우버를 탈것을 추천한다...

(포르투갈에서는 우버는 필수다.. 우버우버..

이것도 곧 포스팅 올리겠다)

 

코스는 여러메뉴중에서 택하면된다

 

같이간 동행들은 전부 

스테이크를 골랐지만

 

스테이크만 매끼니 먹어서 지겨워서

오징어를 시켰다

ㅎㅎ 아주 만족스러웠다

 

그리고 디저트로는

나는 와인을 시켰다

 

같이간 동행은 애플 어쩌고를 먹었는데

이것도 맛있었다 ㅎㅎ

다시 포르투갈을 간다면

이곳은 꼭 다시가고싶다

돈이 된다면 

디너에두 가고싶다 ㅠㅠ

 

 


못가본 곳중에서 가보고 싶은곳은

 

1. 베이스 포르토 

주소 : Base - Quisque Jardim, Passeio dos Clerigos, R. das Carmelitas 151, 4050-163 Porto, 포르투갈

구글 평점 : 4.6

 

 

2. Muu Steakhouse

주소 : Rua do Almada 149A, 4050-037 Porto, 포르투갈

구글 평점 : 4.8

 

이곳은 진짜 꼭 가고싶었는데

여기를 가려면 한국에서 미리 예약하고 가야할거 같다..

인스타 dm으로도 예약이 된다고는 하던데 ㅠㅠ

 

3박 4일내내 있을때 연락을 했었는데

취소자리도 안났었다 ㅠㅠ

아쉽,,

 

^_^ 다음번에 또 포르투 가면되지롱

 

 

그리고 한가지 더 포르투에서 가본 

재즈바를 추천해주고싶은데

개강추,,,,

여기는 동영상이랑 사진이랑 나중에 자세히 올릴것이다

너무 좋았기 때문에 ㅠㅠ

 

 

그럼

이만 

 

 

 

 

 

DB에 대해서 알아보다가

RDB와 NoSql은 각각 장단점이 명확해서

이거를 아우를 수 있는 NewSql이 있다는걸 알았다!

 

오늘은 이걸 알아보고자 한당 ㅎ_ㅎ


NewSql 이란?

 

2011년에 처음나온 개념이다 (얼마안되었네..!)

간단히 말하자면,

NewSql = RDB + NoSql

 

RDB처럼 ANSI SQL문법과 ACID(트랜잭션)을 지원하고,

NOSql처럼 Scale-out을 지원한다.

 

 

MIT 마이클 스톤 브레이커 교수는 NewSql에 대해서 5가지로 정의 내렸다.

 

정의

1.SQL 기반 상호작용

- SQL 문법을 사용한다

 

2. 트랜잭션을 위한 ACID 지원

- 트랜잭션 커밋(Commit)을 위한 필요속성인 ACID( 원자성, 일관성, 고립성, 지속성)을 지원

  • 원자성(Atomicity) : 트랜잭션과 관련된 작업들이 부분적으로 실행되다가 중단되지 않는 것을 보장하는 능력
  • 일관성(Consistency): 트랜잭션이 실행을 성공적으로 완료하면 언제나 일관성 있는 데이터베이스 상태로 유지
  • 고립성(Isolation): 트랜잭션을 수행 시 다른 트랜잭션의 연산 작업이 끼어들지 못하도록 보장
  • 지속성(Durability): 성공적으로 수행된 트랜잭션은 영원히 반영되어야 함

 

3. 비잠금 동시성 제어

- 데이터 무결성 처리를 위해 지원하는 트랜잭션 동시제어 잠금처리와 관련해 기존 방식과는 다른 Non-locking 구조를 지원

- 락을 걸지않고 단일 스케줄을 통해 동시성 제어를 한다.

 

4. 노드 단위 고성능

- 각 단일 DBMS 서버 노드 단위로 확장해 고성능 보장

- 네트워크를 통한 처리가 없고 Node 단위로 확장하여 성능을 높일 수 있다.

 

5. 병렬, 비공유 아키텍쳐

- 병렬적으로 수행해서 데이터를 고성능으로 처리 할 수 있어야하고, 분산 처리 시 데이터가 각 서버에 중복되지 않고 독립적으로 존재해야 한다.

- CPU, RAM, DISK 같은 하드웨어 자원을 서로 공유하지 않고 개별적으로 사용한다.

 

 

이걸로만으론 그렇게 와닿지가 않는다..! 더 찾아보자

 

특성

1. Partitioning/Sharding

Sharding를 통해 Scale-out을 지원한다.

- Sharding : 같은 테이블 스키마를 가진 데이터를 다수의 데이터베이스에 분산하여 저장하는 방법

- ex) 전 세계의 고객 데이터를 저장하는 DB를 분산한다면, 아시아면 샤드A, 유럽이면 샤드B... 이런식으로 저장한다.

- 테이블을 컬럼 값을 기초로하여 나눈다.

 

 

2. Concurrency Control

MVCC(Multi Version Concorrencty Control) 기법 적용

- NewSql은 트랜잭션에 의해 데이터 갱신이 발생 할때, 생성된 사본에 데이터를 갱신하는 연산을 수행하므로

다른 트랜잭션에 영향을 끼치지 않으면서 빠른 성능을 구현 할 수 있다.

 

 

3. Crash Recovery 

시스템이 무너졌을때, 데이터를 복구하고 상태를 유지하는 기능이 있다.

 

 

4. In-Memory DB

실시간 저장 및 처리를 위해서 인메모리 DB 아키텍처이다.

- 모든 NewSql이 인메모리 DB는 아니지만, 대부분 지원한다.

- 비싼 메모리 가격과 메모리 용량으로 인해 실시간 데이터 처리가 필요한 특정업무에만 제한적으로 사용돼 왔다.

- 메인 메모리 속성인 휘발성 때문에 디스크 백업이 필요한 제약을 극복하기 위한 연구 진행중이다.

 

 

 

RDB, NoSql, NewSql 비교

특성 RDB NoSql NewSql
ACID특성 O X(BASE 제공) O
인메모리 DB X O O
빅데이터 X O O
스케일 아웃 X O O
H/A O O O
리플리케이션 * O O O
성능 X O O
SQL지원 O X O
Relational O X O
join O X O

 

 

*리플리케이션 (replication) : 두개이상의 DBMS시스템을 Master/ Slave로 나눠서 동일한 데이터를 저장하는 방식

 

 

 

 

 


참고사이트

http://www.itworld.co.kr/news/111071

https://www.predictiveanalyticstoday.com/newsql-databases/

https://bitnine.tistory.com/entry/NewSQL%EC%97%90-%EB%8C%80%ED%95%98%EC%97%AC

'DEVELOP > DB' 카테고리의 다른 글

[MariaDB] general log 설정하기  (0) 2020.05.25
DB (mysql) 설정 변경  (0) 2020.03.13
NoSql DB 종류  (0) 2019.12.13
DB(database)의 종류  (0) 2019.12.11
Liquibase 사용법 및 개념  (0) 2019.06.12

+ Recent posts