본문 바로가기

datasource25

[DynamoDB] DynamoDB는 읽고 쓰는 만큼 비용을 냅니다 개요안녕하세요. 오늘은 DynamoDB에서의 비용계산에 대해서 알아보도록하겠습니다. 일반적으로 aws의 다른 SaaS 들은 서버 스펙과 거기서 사용하는 스토리지의 양, 그리고 네트워크 비용이 합해져서 비용이 계산됩니다. 그런데 이와는 다르게 DynamoDB 서버 스펙이 아닌 읽고 쓰는 데이터의 량 만큼을 계산해서 비용을 냅니다. 잘 사용하면 비용이 절감되지만 잘못사용하면 비용 폭탄을 맞게되는 이유입니다. 오늘은 DynamoDB의 비용 계산하는 방법에 대해서 알아보도록 하겠습니다.DynamoDB 비용DynamoDB의 비용 계산은 다소 복잡합니다. 비용에 영향을 주는 요소는 아래와 같습니다.용량 모드(Capacity Mode)읽기 및 쓰기 용량 단위(Capacity Unit)스토리지 사용량테이블 클래스 선택.. 2025. 2. 17.
[DynamoDB] DynamoDB에서 사용하는 용어 정리 개요안녕하세요 ! 이전시간에는 RDB와의 비교를 통해서 DynamoDB가 가지는 특이점들을 알아보았습니다. 오늘 포스팅에서는 DynamoDB 사용의 기본으로 돌아가서 용어들과 마지막으로 DynamoDB의 비용을 계산하는 방법에 대해서 알아보도록 하겠습니다.Table 용어 정리먼저 테이블에 대해서 알아보도록 하겠습니다. 테이블은 DynamoDB에서 데이터가 저장되는 전체적은 구조를 나타냅니다. DynamoDB는 Table을 데이터 저장 공간의 기본으로합니다. 테이블에 들어가는 정보를 실제 표로 나타내면 아래와 같습니다. 이어서 각 용어에 대해서 알아보도록 하겠습니다.Table데이터를 저장하는 기본 단위입니다.관계형 데이터베이스(RDBMS)의 테이블과 유사합니다.관계형 데이터베이스와 다른점은 DynamoDB.. 2025. 2. 13.
[DynamoDB] 그거 알아요 ? DynamoDB는 HTTP로 통신한다는거 (RDB 운영 이슈, Transaction, Conflict) 개요DynamoDB의 Java SDK 코드중 AmazonDynamoDBClient 코드를 따라가다보면 재밌는것을 확인할 수 있습니다. 아래를 보도로 하겠습니다./** * Invoke the request using the http client. Assumes credentials (or lack thereof) have been configured in the * ExecutionContext beforehand. **/private Response doInvoke(Request request, HttpResponseHandler> responseHandler, ExecutionContext executionContext, URI discoveredEndpoint, URI uriFromEn.. 2025. 2. 9.
[DynamoDB] 왜 DynamoDB와 같은 Wide Columns DB는 RDB에 비해서 더 확장성(scalability)을 가지는가 ? 개요안녕하세요. DynamoDB는 Wide Columns DB의 일종입니다. 일반적으로 알려져 있기로 DynamoDB는 RDB 보다 훨씬 좋은 확장성(scalability)를 가지고 있다고 알려져있습니다. 그렇다면 어떻게해서 이러한 구조를 가질 수 있을까요 ? 오늘은 확장성이란 무엇인지 먼저 확인하고 RDB와 DynamoDB에서 어떻게 확장성을 가져가는지에 대해서 알아보는 시간을 가져보겠습니다.확장성(Scalability) 란 ?먼저 확장성(Scalability)이란 서비스의 요구사항 및 트래픽, 데이터가 증가됨에 따라 이를 처리할 때 성능적인 저하 없이 성장할 수 있는 능력이라고 정의할 수 있습니다.확장성은 크게 2가지 방식으로 달성할 수 있습니다. 수직적 확장(Scale-Up)과 수평적 확장(Scal.. 2025. 2. 4.
[ScyllaDB] ScyllaDB를 사용하기에 앞서 기본 이론에 대해서 맛보기 - NoSQL과 ScyllaDB 안녕하세요 ! 1달 정도 회사일에 집중하느라 블로그를 소홀히했습니다. 다시 조금씩 차분하게 글을 써보려고합니다. 최근에 NoSQL에 대해서 공부를 하고 있습니다. 그 중에서도 여러분들과 공유할 포스팅은 ScyllaDB의 기본에 대해서 알아보는 시간을 한번 가져보도록 하겠습니다. 오늘 포스팅하는 내용은 대부분 Scylla University의 강의를 요약입니다. Scylla DB에 관심있으신 분들은 위 링크의 내용을 참고하시 더 좋고 많은 내용을 확인하실 수 있습니다. NoSQL ScyllaDB는 NoSQL의 한 종류입니다. 따라서 ScyllaDB를 알아보기전에 NoSQL에 대해서 간단히 먼저 알아보도록 하겠습니다. NoSQL이란 주로 Not Only SQL의 약자라고 표현하고 있습니다. NoSQL 책에 .. 2022. 8. 10.
[Mysql] Mysql 5.7 정렬 최적화(Optimization) 안녕하세요. 오늘은 Mysql 5.7 버전에서 정렬을 최적화 하는 방법에 대해서 알아보도록 하겠습니다. RDMBS 정렬 RDBMS를 사용하다보면 정렬된 정보를 이용해야할 경우가 많이 생깁니다. 이럴경우 우리는 조회하는 쿼리에 ORDER BY를 이용해서 RDBMS에서 정렬 시킨 후 정렬된 데이터를 가져와서 어플리케이션에서 이를 이용하곤 합니다. 하지만 이런 정렬도 잘 이용하지 않으면 RDBMS로부터 빠른 응답을 기대할 수가 없는데요. 그 이유는 간단히 설명드리면 데이터는 디스크에 저장되고 이 걸 select 쿼리에 의해서 가져옵니다. 그리고 Mysql 엔진에서 내부에서 임시테이블을 만들어 filesort를 진행하게 되는데 됩니다. 그런데 데이터가 커지면 디스크에서 한번에 가져올 수 없으며 여러번 나눠서 가.. 2022. 2. 12.
[redis + Spring] Spring Data Redis를 이용한 Transaction 처리 안녕하세요. 오늘은 Java의 Spring 환경에서 Transaction을 적용해보도록 하겠습니다. 의존성 먼저 Spring에서 Redis를 사용하기 위해서 아래와 같은 의존성을 부여하도록 하겠습니다. spring-boot-starter의 버전은 본인이 사용하시는 SpringBoot 버전을 기본적으로 따라가기 때문에 버전은 따로 명시하지 않았습니다. implements("org.springframework.boot:spring-boot-starter-data-redis") 환경설정 아래는 redis와 연결하기 위한 관련된 application.yml 파일입니다. spring: redis: port: 6379 host: localhost Redis도 @Transactional을 이용해서 트랜잭션을 관리할 .. 2021. 7. 22.
[redis] 트랜잭션(Transaction) - 이론편 안녕하세요. 오늘은 redis의 트랜잭션에 대한 이론에 대해서 알아보도록 하겠습니다. 그리고 이후 포스팅에서 실제로 Spring Data Redis를 이용하여 redis의 트랜잭션을 실습해보도록 하겠습니다. 트랜잭션과 Redis 트랜잭션이란 무엇인가요 ? [데이터베이스] 트랜잭션과 격리성 포스팅에서 이전에 저는 트랜잭션에 대해서 별도 포스팅을 한적이 있습니다. 간단하게 말씀드리면 트랜잭션은 나누어지지 않는 최소한의 단위로 만들어 All Or Nothing 전략을 취할 수 있도록 해주는 단위입니다. 즉, 트랜잭션으로 묶게 되면 트랜잭션 내부에서 하나의 로직이 실패하여 오류가 나게되면 모두 취소시키며 그렇지 않으면 모두 성공시키는 것입니다. Redis는 Key / Value 형태의 NoSQL입니다. [Red.. 2021. 7. 18.
[database] 낙관적 락(Optimistic Lock)과 비관적 락(Pessimistic Lock) 안녕하세요. 오늘은 낙관적 락과 비관적 락의 개념에 대해서 알아보는 시간을 가져보도록 하겠습니다.DB 충돌 상황을 개선할 수 있는 방법database에 접근해서 데이터를 수정할 때 동시에 수정이 일어나 충돌이 일어날 수 있습니다. 우리는 이런 상황을 해결할 수 있도록 코딩을 진행해야합니다. 어떻게 해결할 수 있을까요 ?첫번째, 테이블의 row에 접근시 Lock을 걸고 다른 Lock이 걸려 있지 않을 경우에만 수정을 가능하게 할 수 있습니다.두번째, 수정할 때 내가 먼저 이 값을 수정했다고 명시하여 다른 사람이 동일한 조건으로 값을 수정할 수 없게 하는 것입니다.비관적 락(pessimistic lock)비관적 락은 Reeatable Read 또는 Serializable 정도의 격리성 수준을 제공합니다. D.. 2021. 7. 9.
[database] mysql과 mariaDB 중 어떤 DB가 나에게 맞을까? 안녕하세요. 오늘은 mysql과 mariaDB에 대한 차이점을 알아보고 어떤것을 사용하면 개인에게 그리고 팀에게 적합할지 알아보는 시간을 가져보도록 하겠습니다. 히스토리 mariaDB는 mysql의 개발자가 나와서 만들었다는 사실은 다들 익히 알고 계실껍니다. 저도 여기까지는 어디선가 들어가 이미 알고 있던 정보입니다. 그렇습니다. mariaDB의 개발자인 Monty는 회사를 나와 MontyProgram AB라는 회사를 차리면서 mariaDB를 만들게 된것입니다. mysql을 기반으로 fork하여 자체적으로 개발하는 서비스로 mariaDB 뿐만이 아니라 PerconaServer도 있다고 합니다. 이들간의 관계를 한번 보도록 하겠습니다. 그렇습니다. mariaDB는 mysql의 엔진에 PerconaServ.. 2021. 5. 26.
[elasticsearch + Spring] elasticsearch를 Java Spring에서 사용해보자 - 기본적인 검색 만들기 안녕하세요. 오늘 실습해볼 내용은 elasticsearch를 이용하여 Spring에 빠른 검색을 적용해 보는 것입니다. 이전시간까지 우리는 아래 포스팅을 통해서 환경설정, index를 만들고 document의 CRUD를 적용해보는 것에 대해서 실습해 보았습니다. [elasticsearch + Spring] elasticsearch를 Java Spring에서 사용해보자 - 환경설정과 Index 만들기 [elasticsearch + Spring] elasticsearch를 Java Spring에서 사용해보자 - Document CRUD 만들기 ElasticSearch를 사용한다는 것은 일반적으로 빠른 검색 서비스를 이용하기 위한 목적을 가지고 계실 것입니다. 이전까지는 검색을 하기위해 데이터를 쌓는 부분에 .. 2021. 4. 23.
[elasticsearch + Spring] elasticsearch를 Java Spring에서 사용해보자 - Document CRUD 만들기 안녕하세요. 오늘은 이전 시간에 이어서 elasticsearch를 java Spring에서 사용하는 방법에 대해서 코드로 알아보도는 시간을 가져보도록 하겠습니다. 오늘 알아볼 내용은 Java Spring을 이용하여 ElasticSaerch와 기본적인 Document의 CRUD 작업을 하는 방법입니다. Document는 ElasticSearch에 저장되는 실제 데이터입니다. RDB로 치자면 Table의 row에 해당한다고 볼 수 있습니다. 주의사항 제가 사용하는 ElasticSearch 버전은 7.9.3 버전입니다. Java High Level REST Client SDK 같은 경우 버전에 종속적이기 때문에 만약 버전을 꼭 맞추시고 사용하시기를 권장드립니다. 대표적인 예로 6 버전에는 Type 이라는 In.. 2021. 3. 23.