데이터베이스에 저장된 레코드중 거대한 문서 내용들에 대한 키워드를 인덱싱하기 위해서는 전문 검색 인덱스를 사용한다. 예를 들어서 TEXT와 같은 형의 데이터를 검색하기 위해서는 InnoDB나 MyISAM에서 제공하는 B-Tree 인덱스를 사용할 수 없다. 이러한 데이터를 검색하는 것을 Full Text Search 인덱스라고 하는데, 전문 검색 인덱스는 일반화된 기능의 명칭이지 전문 검색 알고리즘의 이름을 지칭하는 것은 아니다. 전문 검색 인덱스에는 문서의 키워드를 인덱싱하는 기법에 따라 구분자(Stopword)와 n-gram을 나누어 생각해볼 수 있다. 이외의 알고리즘은 그다지 알려지지도 않고 특히나 MySQL에서는 사용할 수 있는 것이 없다. 인덱스 알고리즘 키워드의 분석 및 인덱스 구축에는 여러가..
Computer Science.
오늘은 MySQL에서 TEXT와 VARCHAR에 대해서 알아보고 차이점도 함께 보겠습니다. VARCHAR VARCHAR를 통해 컬럼 타입을 지정해준다고 했을때 VARCHAR(10), VARCHAR(1000) 이렇게 각각 다르게 지정해주었을 때 성능상의 차이점이 있을까요? 그냥 다 크게 잡아버리면 안될까요? 한 번 VARCHAR를 엄청 길게 잡고 테이블을 생성해보면 mysql> CREATE TABLE tb_long_varchar (id INT PRIMARY KEY, fd1 VARCHAR(1000000)); ERROR 1074 (42000): Column length too big for column 'fd1' (max = 16383); use BLOB or TEXT instead mysql> CREATE ..
네트워크 장비에서 Broadcast 작업을 수행하면 브로드 캐스트를 진행하면 연결된 모든 네트워크 장비들에게 request 요청이 가게 됩니다. 여기서 브로드캐스트란 연결된 모든 네트워크에게 동시에 메시지를 전송하는 방법입니다. 그리고 이 요청에 알맞는 네트워크에게 요청이 들어가면 응답을 받죠. 여기서 하나 생각해보아야할 때 네트워킹 장비가 늘어나면 늘어날 수록 브로드캐스트의 양도 많아지게 됩니다. 그럼 네트워크 대역폭은 브로드캐스트로 가득 차게 될 것이고, 데이터 전달 속도는 당연히 눈에 띄게 느려질 것이며 시도 때도 없이 날아오는 브로드캐스트를 처리하는 컴퓨터는 다른 작업을 처리할 수 없겠죠 또한 서브넷 마스크가 다른 여러 개의 IP 대역을 사용하고 싶다면 어떻게 해야 할까요? 각각의 IP 대역을 사..
3-way Handshake TCP는 장치들 사이에 논리적인 접속을 성립하기 위하여 3-way handshake를 쇼앙한다. TCP 3 Way Handshake는 TCP/IP 프로토콜을 이용해서 통신을 하는 응용 프로그램이 데이터를 전송하기 전에 먼저 정확한 전송을 보장하기 위해 상대방의 컴퓨터와 사전에 세션을 수립하는 과정을 의미한다. Client -> Server: TCP SYN Server -> Client: TCP SYN, ACK Client -> Server: TCP ACK SYN: synchronized sequence numbers ACK: Acknowlegment 이러한 절차는 TCP 접속을 성공적으로 성립하기 위하여 반드시 필요하다. TCP 3-way Handshaking의 역할 양쪽 모..
gRPC, RPC, 작동원리, HTTP API 비교 RPC: Remote Procedure Calls 다른 컴퓨터의 프로그램의 프로시저를 실행하는 프로그램을 허용하는 프로토콜 개발자가 원격 상호 작용에 대한 세부 정보를 명시적으로 코딩하지 않아도 됨 -> 프레임워크가 자동 핸들링 클라이언트 코드에서는 직접 서버 코드의 함수를 호출하는 것 처럼 보임 클라이언트 코드 언어 != 서버 코드 언어: 다른 언어로 쓰일 수 있음 gRPC = Communtication 프레임워크 마이크로서비스는 여러 PL들로 만들어진다. (ex: Back-End: Go, Front-End: js) 이 서버들 간의 소통이 필요하다. 마이크로서비스 간의 교환되는 메시지 수 = 엄청나게 많음 >>> 빠른 소통이 좋음 개발자는 핵심 로직 ..
개요 JVM(Java Virtual Machine)은 자바 프로그램 실행환경을 만들어 주는 소프트웨어이다. 자바 개발자라면 반드시 알아야하는 이 JVM을 한번 부셔보려고 한다. JVM 일단 JVM이란 위에서 말했듯 자바 프로그램 실행환경을 만들어주는 소프트웨어이다. 자바 코드를 컴파일하면 .class 바이트 코드로 만들어진다. 이 코드가 JVM 환경에서 실행된다. JVM은 자바 실행 환경 JRE Java Runtime Environment안에 포함되어있다. 현재 사용하는 컴퓨터에 맞는 운영체제에 JRE가 설치되어 있다면 JVM이 있다는 뜻이다. JVM 특징 JVM을 왜 사용하는 것일까? JVM을 사용하면 하나의 바이트코드 즉 .class로 모든 플랫폼에서 동작할 수 있는 이점이 있다. .class 파일은..