Googling/cs

Googling/cs

[DB] MVCC (feat. RDBMS 동시성 제어)

1. 풀어쓰기 약어를 풀면, 다중버전 병행수행제어 (MultiVersion Concurrency Control)가 된다. 쓰기트랜잭션이 읽기트랜잭션을 블로킹하지 않고, 읽기트랜잭션이 쓰기트랜잭션을 블로킹하지 않고, 각 트랜잭션마다 스냅샷 이미지를 보장해 주는 메커니즘을 말한다. 2. 왜 나왔을까? 데이터베이스에서 일관된 데이터를 얻는 것이 굉장히 중요하다. 만약 만원권 1,000장을 가진 사람이 있다고 가정해보자. (부럽다..) 만원권이 1,000장이 맞는지 세고 있을때, 다른 사람들이 몇 개의 만원권을 넣거나 빼거나 한다면 세고 있는 사람은 당연히 제대로 셀 수 없다. 가장 쉽게는 셀 동안은 다른 사람들이 넣거나 빼지 않게 보장하는 것이 일관된 데이터를 얻는 방법이다. 그래서 무조건 1,000장을 셀때..

Googling/cs

[DB] 트랜잭션 격리수준과 부정합 이슈 (feat. Dirty Read ~ Phantom Read)

1. 풀어쓰기 Read Uncommitted 한 읽기 트랜잭션이 시작했을때 다른 트랜잭션은 자유롭게 UPDATE 가능하다. 한 읽기 트랜잭션은 다른 트랜잭션에서 Update 중(un-commit)인 데이터를 조회할 수 있다. => 다른 트랜잭션이 중간에 롤백을 해도 읽기 트랜잭션은 롤백 전 데이터를 조회할 수 있는다. => 다른 트랜잭션의 Update(커밋)과 무관하게 일관된 데이터를 얻을 수 없는 확률이 높다. => Dirty Read Read Committed 한 읽기 트랜잭션이 시작했을때 다른 트랜잭션은 자유롭게 UPDATE 가능하다. 한 읽기 트랜잭션은 다른 트랜잭션에서 Update 완료(commit)된 데이터만 조회할 수 있다. => Dirty Read는 발생할 수 없다. 위 고립수준보다는 일관..

Googling/cs

[CS] 동기(synchronous)와 비동기(Asynchronous)를 쉽게 이해해보기 (feat. 싱크로나이즈드 수영과 핫도그)

프로그래밍에 가장 기본이 되는 동기(synchronous)와 비동기(Asynchronous)를 쉽게 설명해보려고 한다. 왜 동기라는 용어는 혼란스러운가? 'synchronous' is existing or occurring at the same time. - Google Dictionary 동기(synchronous)는 영단어 직역을 하면 '동시에 발생하는 방식'이라고 한다. 이게 혹시 함수가 동시에 실행된다는 건가? 그럼 비동기 개념 아닌가? 하며 혼란에 빠질 수 있다. 하지만 조금씩 비슷한 의미를 따라가다 보면 충분히 이해할 수도 있어 보인다. 여기서 '동시에 발생하는 방식'으로 딱 한번 실행하는 상황을 가정하는 것보단, '동시에 발생하는 방식'이 연속적으로 실행하는 상황을 가정하면 전개가 좀 용이하..

Googling/cs

[하드웨어] 보조기억장치 인터페이스 이해 (feat. HDD, SSD, NVMe, PCIe, M.2, SATA)

보조기억장치? 인터페이스? 보조기억장치는 컴퓨터에서 'HDD(하드디스크), SSD'를 말하는 것으로 데이터를 보관하거나 보관한 데이터를 원할때마다 꺼내주는 역할을 한다. 작업을 위한 주기억장치(램, 메모리)와 차이가 있는데, 사람으로 비유하면 보조기억장치는 뇌, 주기억장치는 손이라 볼 수 있다. 인터페이스는 규격, 연결단자, 연결방식 등을 의미하는데 요소간의 연결을 목적으로 한다. 여기서 인터페이스는 컴퓨터의 메인보드와 보조기억장치를 연결하는 것을 목적으로 하는 인터페이스를 말한다. 아래에 언급하는 모든 것들은 인터페이스를 의미하며, 인터페이스 속에서도 역할이 달라 같이 쓰일 수도 있다. PATA → SATA 불과 십년전만 해도 왼쪽과 같은 넓은 선을 활용해서 보조기억장치를 활용했다. 하지만 이 장치는 ..

Googling/cs

[DATA] 데이터양 단위 이해 (feat. B, MB, GB, TB + LTE 속도?)

비트 = bit = binary digit 하나의 비트는 0이나 1의 값을 가질 수 있다. 즉, 두 가지 경우의 수를 가진다. 모스부호에서 짧게 누르거나 길게 누르는 두 가지 경우로 문자들을 만드는 것과 같은 원리다. 이 원리는 한 가지 경우를 '무언가'로 약속할 수 있다는 것을 의미한다. 0을 'a'로, 1을 'b'로 약속할 수도 있고, 0을 '$', 1을 '?'로 약속할 수도 있다. 세상에 많은 문자를 저장하기 위해 우리는 많은 경우의 수가 필요하고 그 경우들을 문자 하나하나와 약속할 수 있다. 바이트(byte) = 8bit = 데이터 기본 단위 1비트로는 단 2가지 경우 밖에 약속할 수 없어 효용성이 적다. 그래서 문자를 표현하는 최소 단위를 정해줄 필요가 있었다. 최초 ASCII코드라는 알파벳 문..

Googling/cs

[HTTP] RESTful API 이해 (feat. 신입개발자 자격요건)

개발자 채용공고를 보면 빠지지 않고 나오는 것이기도 하고 기본 중에 기본이 'RESTful API 이해'이기에 정리할 필요가 있다. RESTful 하다는 것은 어떤 의미일까? REST은 HTTP를 활용하여 클라이언트와 서버 통신 가능하게 하는, 웹의 장점을 최대한 활용하는 아키텍쳐(설계구조)를 말하고, RESTful API는 HTTP 의도에 맞게 활용 및 디자인한 API(앱 활용 도구)다. 의도에 맞게 활용한다는 것은 첫째. 는 정보의 자원을 표현해야 하고, 둘째, 자원에 대한 행위는 (GET'생성', POST'조회', PUT'수정', DELETE'삭제')로 표현하는 것을 말한다. 로 주어나 목적어를 만들고, 로 동사를 만든다는 개념이다. 예) 에 를 할게! 여기서 를 동사로 활용하거나, 불분명한 자원으..

Googling/cs

[HTTP] 쿠키와 세션 (feat. 신입개발자 면접질문)

Q. 쿠키와 세션에 대해서 설명해줄 수 있나요? 먼저 쿠키는 일정시간 임시 데이터를 클라이언트인 브라우저에 저장하기 위하여 사용됩니다. 쿠키는 인터넷 쇼핑몰에서 로그인을 하지 않았는데 장바구니 담기가 가능하게 하는데 활용되며, 광고 팝업에 나오는 다시보지않기를 누르면 다음에는 팝업이 나오지 않는 것에도 활용됩니다. 물론 서버 작업을 통해 구현해도 되지만 굳이 저장할 필요가 없다면 서버의 리소스는 아끼는 것이 좋습니다. 또, 매번 서버에서 데이터를 불러오기보단 간단한 값들은 쿠키를 활용하여 저장하면 비용을 아낄 수 있습니다. 쿠키는 도메인별로 저장할 수 있으며 개발자모드(F12)를 활용하면 어떠한 키/밸류를 가지고 있는지 확인이 가능합니다. 확인이 가능한 데이터이기에 쿠키는 보안에 취약할 수 밖에 없습니다..

날개단
'Googling/cs' 카테고리의 글 목록