본문 바로가기

전체 글

(63)
MongoDB Journaling 다른 여타 데이터베이스들과 동일하게 MongoDB는 데이터의 영속성을 보장하기 위해서 Journaling이라는 기법을 사용한다.다른 데이터베이스들에서는 WAL(Write Ahead Log)이라고 불리기도 한다. Journaling은 무엇이고 왜 쓰는지에 대해서 알아보자.Journaling 이란?MongoDB의 공식 홈페이지에 보면 Journaling에 대해서 다음과 같이 설명하고 있다.https://www.mongodb.com/docs/manual/core/journaling/To provide durability in the event of a failure, MongoDB uses write ahead logging to on-disk journal files.MongoDB 서버가 예기치못하게 종료되..
Golang - Swagger 연동 swag github : https://github.com/swaggo/swag?tab=readme-ov-file#getting-startedswag은 golang에서 swagger 문서를 쉽게 작성할 수 있도록 도와주는 라이브러리입니다.swag은 echo로 개발된 HTTP Server도 지원하기 때문에 swag을 통해 API 문서를 작성해보겠습니다.1. swag 설치다음 명령어를 통해 최신 버전의 swag을 설치합니다.go install github.com/swaggo/swag/cmd/swag@latest2. main.go 수정swag은 main.go에 작성된 주석을 파싱하여 swagger 문서를 생성해줍니다.다음과 같은 코드를 작성합니다.package mainimport ( "net/http" ..
Golang - echo를 활용한 API Server 만들기 echo는 go를 사용해서 HTTP Restful API Server를 개발할 수 있는 framework 입니다.echo를 사용해서 HTTP Server를 만들어봅시다.1. main.go 작성다음과 같이 main.go를 작성해줍니다.package mainimport ( "net/http" "github.com/labstack/echo/v4" "github.com/labstack/echo/v4/middleware")func main() { e := echo.New() e.Use(middleware.Logger()) e.Use(middleware.Recover()) e.GET("/", hello) e.Logger.Fatal(e.Start(":3000"))}func ..
Golang - Connect to MongoDB 1. MongoDB 생성Golang에서 MongoDB를 연결하기 전, MongoDB를 생성합니다.Atlas에서 무료로 MongoDB를 생성할 수 있습니다.2. MongoDB 접속 및 테스트 데이터 입력admin> show dbs;admin 296.00 KiBconfig 500.00 KiBlocal 5.72 MiBadmin> use example;switched to db exampleexample> show collections;example> db.example.insertOne({hello: "world!"});{ acknowledged: true, insertedId: ObjectId('66ead2add160d405b44abe79')}example> show collections;e..
Golang - Connect to MySQL 1. MySQL 생성MySQL에 접속하기 이전에 접속할 MySQL을 생성합니다.Local에 MySQL을 다운로드 받거나 AWS에서 MySQL을 생성하는 등 각자의 방식으로 접속할 MySQL을 생성합니다.2. MySQL Table 생성MySQL 접속mysql -u username -h hostname -P 3306 -pEnter password:사용할 데이터베이스로 변경mysql> USE {databasename}테이블 생성 및 테스트 데이터 INSERTDROP TABLE IF EXISTS album;CREATE TABLE album ( id INT AUTO_INCREMENT NOT NULL, title VARCHAR(128) NOT NULL, artist VARCHAR..
Golang - 프로젝트 시작 1. Golang 버전 확인golang 버전을 확인합니다.go env | grep versionGOROOT="/Users/user/.goenv/versions/1.20.13"GOTOOLDIR="/Users/user/.goenv/versions/1.20.13/pkg/tool/darwin_arm64"2. go modgo mod init 을 통해 신규 모듈을 생성합니다.go mod init example/hello다음과 같은 파일이 생성됩니다.go.modmodule example/hellogo 1.203. main 코드 작성다음 코드를 작성 후 실행합니다.main.gopackage mainimport "fmt"func main() { fmt.Println("Hello, World!") }다음과 같이 실행합..
MongoDB Replication IntroMongoDB의 복제에 대해서 알고 있지만 정확하게 어떻게 동작하는지는 잘 모르고 있다. MongoDB에서는 Replica Set의 형태로 데이터베이스 단에서 복제 기능을 제공하기 때문에 별도의 다른 설정 없이 쉽게 복제 구성이 가능하다. 그리고 안정적으로 동작한다. 복제 방식 쪽에서 문제가 발생할 확률이 적기 때문에 트러블 슈팅이나 깊게 공부할 기회가 적다. 따라서 이렇게 체계적인 형태로 정리하여 남기고 싶다. 공부하며 정리한 내용이기 때문에 추상적이고 정확하지 않은 정보가 있을 수 있다.Create Oplog of PrimaryReplica Set에서는 Primary가 쓰기 요청을 받는다. Primary는 DML을 받으면 다음과 같은 일들을 수행한다.DML의 데이터를 메모리상에 업데이트한다...
Iterm2 현재 시간 노출 일하다 보면 내가 이 커맨드를 언제 실행한지 알고 싶을때가 종종 있다. 터미널에서 이 커맨드 실행 시간이 노출되면 편한데 이런 경우 iterm2에서 cmd + shift + e를 누르면 다음과 같이 노출된다. iterm 자체에서 지원하는 기능이다보니 다른 서버에 들어가더라도 계속 노출된다.  매우 편하다.