전체 글
-
Real MySQL 트랜잭션DataBase/MySQL 2022. 4. 30. 14:27
트랜잭션 트랜잭션이란? 트랜잭션의 정의 논리적인 작업 셋을 모두 완벽하게 처리하거나, 처리하지 못할 경우에는 원상태로 복구해서 작업의 일부만 적용되는 현상이 발생하지 않게 만들어 주는 것 즉 트랜잭션은 데이터의 정합성을 보장하기 위한 기능 MySQL에서의 트랜잭션 하나의 논리적인 작업 셋에 하나의 쿼리가 있든 두 개 이상의 쿼리가 있든 관계없이 논리적인 작업 셋 자체가 100% 적용되거나(commit을 실행했을때) 아무것도 적용되지 않아야(RollBack 또는 트랜잭션을 RollBack시키는 오류가 발생했을 때)함을 보장해주는 것 잠금 잠금은 동시성을 제어하기 위한 기능 트랜잭션 수준과 잠금의 차이 잠금은 여러 커넥션에서 동시에 동일한 자원(레코드나 테이블)을 요청한 경우 순서대로 한 시점에는 하나의 커..
-
Real MySQL 아키텍처DataBase/MySQL 2022. 3. 12. 14:25
MySQL 엔진 아키텍처 각 부분에 대한 하는 역활 커넥션 핸들러 클라이언트로부터 접속 및 쿼리 요청을 처리 MySQL 엔진 SQL 문장을 분석하거나 최적화하는 등 DBMS의 두뇌에 해당되는 처리 수행 스토리지 엔진 디스크 스토리지에 저장하거나 디스크 스토리지부터 데이터를 읽어오는 부분 핸들러 API MySQL 엔진에서 데이터를 읽어나 쓰거나 할 때는 각 스토리지엔진에 쓰기 또는 읽기를 요청을 하는데 이러한 요청을 핸들러(handler)요청이라 한다. 여기서 사용되는 API를 핸들러 API MySQL 스레딩 구조 스레딩 구조 설명 MySQL 서버는 프로세스 기반이 아니라 스레드 기반으로 작동 포그라운드 스레드나 백그라운드 스레드로 구분 동일한 이름의 스레드가 2개 이상 보이는 것은 MySQL 서버의 설정..
-
읽기 좋은 코드가 좋은 코드다 - 1코드 성장 이야기/읽기 좋은 코드가 좋은코드다 2021. 11. 20. 18:10
해당 내용은 개발자라면 누구나 들어본 책인 CleanCode보다 간결하게 읽을 수 있는 책이다. 해당 책과 CleanCode(과거에 읽어 희미해진 기억)비교를 하면서 코드 스타일 정리를 시작해보겠다. 이해하기 쉬운코드 코드는 이해하기 쉬워야 한다. 아래의 코드는 임시로 만든것이지만 사람의 이름과 결과를 출력하는 코드이다. 아래와같이 작성을 하게 되면 쉽게 볼수 있으나 @Test public void sampleMethod() { List list = Arrays.asList(new TestVO(31, "개발장")); for (TestVO vo : list) { if (vo.isManyAge()) { vo.setEtc("계란한판 넘음 ㅋ") } else { vo.setEtc("계란한판보다 작음 ^^"); ..
-
카프카 설치 및 명령어아파치 카프카 2021. 10. 24. 16:59
이번에는 카프카 설치 및 명령어에 대해서 공부를 해보았다. 보통 AWS에 서버를 빌려 실행을 하겠지만 이번에는 docker를 이용해 개발을 진행하겠다. kafka설치 및 설정 ㅇ우선 해당 docker를 설치를 진행해아 된다. (해당부분은 다른 곳에 docker설치하는 법을 확인한다.) 해당 부분이 설치 완료를 하게 된다면 CentOS를 설치를 진행하였다. 해당 되는 명령어는 아래와 같다 docker centOS 설치 yum install docker-ce docker-ce-cli containerd.io 위의 명령어를 이용하여 실행을 시키게 된다면 docker이미지에 아래와같이 존재하게 된다. 위의 이미지가 생성이 되었다면 centOS는 설치가 되었으므로, 터미널에 접속한다 접속방법은 아래에 표시된 버튼..
-
카프카의 역할과 탄생 이유아파치 카프카 2021. 10. 16. 14:22
들어가기전, 나의 생각 한동안 주변 부동산 가격을 보면서 일에 대한 의지가 많이 내려갔으나, 이대로 가다간 이도저도 안될 것 같아서 책을 주문 후 공부를 시작하는 첫날이다. 첫날로써 많은 공부는 하지는 못하겠지만 시작하겠다. 카프카가 왜 생겨났을까? 결론만 말하면 '링크드인'이라는 회사가 필요로 인하여 만들었다. 기존 프로그램은 소스 애플리케이션과 타킷 애플리케이션을 연결하는 파이프 라인 개수가 많아지면서 소스코드 및 버전 관리에서 이슈가 생겼다. 그리고 타킷 애플리케이션에 장애가 생길 경우 그 영향이 소스 애플리케이션에 그대로 전달이 되었기 때문에 이러한 장애를 애결하고자 '아파치 카프카'를 만들었다. 아래의 그림을 보게 된다면 카프카 도입과 이후의 아키텍쳐를 확인 할 수 있다. 카프카의 도입 후 아키..
-
부의 추월차선최근에 읽는 책들(IT관련 책 X) 2021. 10. 9. 17:06
해당 책을 읽으면서 느낀점이 여러가지인데 그중 첫번째가 인식에 대한 변화이다. 책에 초반에 아래의 대한 질문들을 던지는데 현재 내가 생각한 점들을 작성해보겠다. 2021-09-26 기준 1. 부채의 대한 인식 - 빚이 당신을 통제하는가, 당신이 빚을 통제하는가 현재 학자금 대출을 갚은 상태(이자 포함 2600만원)이며, 개인적인 이유로 빚을 졌지만 빚에 허덕이면서 살아가지는 않고 있다. 2. 시간의 대한 인식 - 당신을 시간을 어떻게 인식하고 관리하는가? 시간이 많은가? 적은가? 별로 중요하지 않는가? 내가 이직한 이유는 내 시간을 가지기 위해서 이다. 이직한 후의 나의 사간은 많이 늘어난 편이다. 현재 하루일과는 다음과 같다. 평일 아침 6시반 기상, 씻고 멍때리는 시간 1시간, 7시반에 배달된 신문 ..
-
자바와 코틀린의 차이를 알아보자코틀린 2021. 7. 25. 18:09
코틀린이 무엇인가? 이제 작성한 내용은 위의 작성한글 중 코틀린의 특징과 비슷한점이 많다. 하지만 이번에는 직접 코드를 작성하면서 설명하기 때문에 더 이해하기 쉬울 것이다. 자바와 코틀린의 차이 더적은 타이핑 세미콜론 생략가능 fun test() { print("hello world") print(6 * 2) } 변수타입을 지정 생략 가능 fun testVariable(){ val greet = "hello"; println(greet); println(greet::class) println(greet.javaClass) } 위의 클래스를보게된다면 코틀린의 Stringclass, JavaClass를 가져다가 사용할 수있다. 그 이유는 컴파일 시간에 타입을 체크하기 때문이다. 클래스와 함수는 생략 가능 코..