728x90
반응형

컴퓨터(Computer Science) 205

Index, 인덱스

정의 데이터 레코드에 빠르게 접근하기 위해 쌍으로 구성되는 데이터 구조 Index가 없으면 특정한 값을 찾기 위해 모든 데이터 페이지를 뒤지는 FULL TABLE SCAN이 발생 원래 DB Table의 Column인 Data를 인덱스 생성함 SMITH는 Location을 통해서 직접 접근 가능 나오게 된 배경 DB의 양 (row) 가 많아짐에 따라 실행 속도가 차이가 나기 시작함(합 연산) JOIN을 할 때마다 실행 속도가 차이 나기 시작함(곱 연산) 서브 쿼리를 할 때 마다 실행 속도가 차이 나기 시작함(곱 연산) 테이블 자체가 커짐에 따라 테이블에 연산을 적용하는 것이 슬로우 쿼리를 만들게 됨 목적 RDBMS의 검색 성능 향상 SELECT 쿼리의 WHERE 절이나 JOIN 키워드를 사용했을 때 쓰임 ..

Key, 키

Key : DB에서 조건을 만족하는 튜플을 찾거나 정렬의 기준이 되는 속성(Attribute) 튜플 : 릴레이션을 구성하는 각각의 행, 속성의 모임 종류 · 슈퍼키(Super Key) 한 릴레이션 내에 있는 속성들의 집합으로 구성된 키 릴레이션을 구성하는 모든 튜플 중 슈퍼키로 구성된 속성의 집합과 중복되는 값은 나타나지 않음 유일성 : 하나의 키 값으로 하나의 튜플만을 유일하게 식별할 수 있음 최소성 : 키를 구성하는 속성 하나를 제거하면 유일하게 식별할 수 없도록 꼭 필요한 최소의 속성으로 구성되어야 함 릴레이션을 구성하는 모든 튜플에 대해 유일성은 만족하지만, 최소성은 만족하지 못함 => 위의 표를 보면 Student_ID 만으로도 하나의 튜플을 확정 지을 수 있고 SSN으로도 확정지을 수 있음 =..

NAT와 포트포워딩의 차이

맨날 느끼는 거지만 비슷하다고 느꼈다. 하지만 분명히 다르다. [컴퓨터(Computer Science)/네트워크, Network] - NAT란? Network Address Translation, 네트워크 주소 변환 [네트워크] 포트 포워딩은 해당 포트로 들어오는 TCP/UDP + SSH 등의 패킷이 들어온다면 특정 IP로 보낸다는 뜻이다. NAT는 특정 라우터에서 해당 패킷이 어느 IP로 해석되는지 가지고 있는 테이블에 매핑하는 것이다. ???? 똑같은 것 같은데..?? 패킷에 들어있는 내용이 다르다. 포트 포워딩에는 Destination에 관한 내용이 없다. 즉, 해당 패킷은 도착지를 전혀 모른다. 게이트웨이와 같은 외부 망의 반대쪽에 위치한 사설 네트워크의 호스트에 연결하기 위해 주로 사용하는 것이..

Proxy, 프록시, 중개자

Proxy : 대리인 역할, 중계 역할 → 클라이언트와 서버 간의 요청한 데이터를 전달함 + Proxy를 통해 실제 IP를 가상 IP로 대체함 역할 캐시 : 웹 서버에서 가져온 데이터를 클라이언트에 전송 후 캐시로 저장(같은 데이터를 요청하면 서버까지 가지 않고 캐시에서 바로 데이터 전송 보안성 1 : 한 단계 서버를 더 거쳐야 하기 때문에 들어오는 요청에 대한 보안 유지 가능 → 외부 인터넷에서는 Client의 정보를 알 수 없음 ( Proxy를 이용하면 실제 IP 주소를 숨길 수 있음, 사이트에서는 원래 IP 주소가 아닌 Proxy 의 IP 주소를 인식 ) 보안성 2: 바깥으로 나가는 데이터를 검사 가능(지역 제한 우회로도 쓰임) 보안성 3: 방화벽의 역할도 할 수 있음 보안성 4: 부적절한 사이트로..

DB 파티셔닝, Partitioning

DB 공부를 소홀히 했었다. 솔직히 내가 슬로우쿼리를 엄청나게 개선시킬 자신은 없지만 DB와 작업이 어떻게 되는지는 알아야 한다. 그래서 DB를 공부하기로 했다. 알아보자 DB 파티셔닝이 무엇인지부터 알아보자 파티셔닝이란 논리적인 데이터 element들을 다수의 entity로 쪼개는 행위 라고 한다. 즉, 한 덩어리로 있어도 되는 것들을 쪼개는 행위다. DB 입장에서 말하자면 큰 table이나 index를, 관리하기 쉬운 partition이라는 작은 단위로 물리적으로 분할하는 것을 의미한다. **물리적인 데이터 분할이 있더라도, DB에 접근하는 application의 입장에서는 blackbox 이다. => 알 수 없어야 한다. ??? 음.. 왜 필요한데??? 서비스의 크기가 점점 커지고 DB에 저장하는 ..

SSL의 동작방식

SSL은 Secure Sockets Layer란 뜻으로 해석해봤자 뭔지 모른다. 하지만 어디다 쓰이는 지는 알아두자. SSL은 웹사이트와 브라우저 사이, 서버와 서버 사이에 전송되는 데이터를 암호화하여 인터넷 연결을 보호하기 위한 기술이다. 알아보자. ** 2023.08.06 업데이트 우리는 암호화 기술을 몇가지 알고 있다. 세계 2차 대전에서 독일이 썼다는 애너그램. 영화 "이미테이션 게임"을 봤다면 알 수 있다. 봤듯이 누가 암호키를 해석하면 데이터는 더 이상 안전하지 않다. 다시 말해서 누가 우리 암호키를 가져간다면 우리의 데이터는 안전하지 않다. 때문에 대칭키 대신 비대칭키 방식을 쓰곤 하지만.. 비대칭키 자체는 컴퓨팅 리소스가 많이들어 비효율적이다. 때문에 SSL은 대칭키 + 비대칭키를 혼합해서..

소켓 프로그래밍, Socket Programming

소켓.. 전구 소켓이 아니라 다른 소켓이다. 의미는 같지만 가리키는 것이 다르다. socket은 콘센트와 같은 것을 말하는데 연결되면 전기가 공급되듯이 네트워크에서는 수많은 bit가 흘러들어온다. 알아보자 소켓은 크게 2종류가 있다. 종류를 정하는 것은 Protocol인데 여기선 L4이다. TCP와 UDP이다. TCP는 TCP/IP 라고도 부르는데 하나로 묶여서 쓰이기 때문이다. 즉, 소켓을 구성하는데는 수많은 규약들이 정해져있다. OS의 이해도 필요하고 Protocol의 이해도 필요하고 데이터를 주고 받는 방식, 바이트를 읽는 방식 등 모든 규약을 정해야 정상적인 통신이 가능해진다. 또한 네트워크인만큼 예외상황도 많이 발생한다. 정말 힘들다. 우선 네트워크는 서버와 클라이언트로 나누어진다. 소켓도 클라..

MaxSubArray, 최대부분배열합 구하기 [알고리즘]

이러한 것은 다이나믹 프로그래밍이라는 것과 같이 동적으로 수행하면서 최대부분을 갱신하면서 찾는 것이다. 물론 for문 2번 돌아서 가능하지만.. n^2은 써서는 안되는 최악의 시간 복잡도다. 다른 방법을 찾아보자 우선 정답코드를 보고난 다음 설명을 해보자 int MaxSubArray(int a[], int length) { int maxSoFar = 0, maxEndingHere = 0; // 1 for(int i = 0; i 이것은 부분배열합의 특성때문이다. 우선 문제부터 정의하자 부분배열합이란 무엇인가하니? 배열의 원소 중에서 임의의 원소 k번째부터 k + x까지의 합을 부분 배열이라 하고 해당 원소들의 합을 부분배열 합이라고 한다. 그렇다면 최대한의 합이 나오려면 가장 큰 부분을 고르면 되겠네? 맞..

네트워크 바이트 오더 [네트워크]

뭐 순서와 관련되었다고 생각하면 쉽다. 알아보자 2바이트 이상의 데이터를 송수신할 때는 바이트 오더에 주의해야 한다. 바이트 오더란 2 바이트 이상의 데이터를 메모리에 배치하는 방식을 말하는데 배치 방식에는 빅 엔디안, Big Endian, 리틀 엔디안, Little Endian이 있다. 기본적으로 우리는 빅 엔디안에 익숙해져있다. 우리가 12345를 만 이천 삼백 사십 오라고 읽는 것과 같은 이치다. 이러한 기준 엔디안은 프로세서에 따라 달라진다. 같은 엔디안 끼리 통신할 때는 문제가 당연히 없지만 다를 때 문제가 생긴다. 즉, 송신했을 때 어떻게 수신하느냐에 따라 데이터가 달라질 수도 있다는 것이다. 이처럼 다른 프로세서 간의 데이터를 송수신할 때는 바이트오더를 약속해야 한다. C#에서는 IPAddr..

쿠키, Cookie 와 세션, Session

웹 브라우저와 웹 서버 사이에서 암묵적인 정보 교환을 하기 위한 장치다. Cookie는 웹 서버의 지시에 따라 웹 브라우저가 클라이언트 컴퓨터 안에 저장한다. 브라우저에도 저장된다. **작은 텍스트 파일이다. 웹사이트는 쿠키를 통해 사용자의 장치를 인식 식별하여 웹사이트에 대해 접속자에 대해 개인화하는 용도에 쓰인다. 예를 들어 사용자에 따라 색을 바꾸거나 메뉴 구성을 바꾸는 것과 같은 일을 한다. **즉, 접속자의 설정과 과거 이용내역에 대한 일부 데이터를 저장하기 때문에 그런 일이 가능하다. 그 내용은 도메인명이나 Cookie의 유효기한과 같은 기본 정보 외에 해당 처리의 독자적인 값으로 구성된다. **물론 해당 페이지에서 나가면 삭제되는 쿠키가 있는 반면 수동으로 삭제할 때까지 남아있는 쿠키도 있다..

728x90
반응형