본문 바로가기

프로그래밍/데이터베이스9

[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.
[database] 낙관적 락(Optimistic Lock)과 비관적 락(Pessimistic Lock) 안녕하세요. 오늘은 낙관적 락과 비관적 락의 개념에 대해서 알아보는 시간을 가져보도록 하겠습니다. DB 충돌 상황을 개선할 수 있는 방법 database에 접근해서 데이터를 수정할 때 동시에 수정이 일어나 충돌이 일어날 수 있습니다. 우리는 이런 상황을 해결할 수 있도록 코딩을 진행해야합니다. 어떻게 해결할 수 있을까요 ? 첫번째, 테이블의 row에 접근시 Lock을 걸고 다른 Lock이 걸려 있지 않을 경우에만 수정을 가능하게 할 수 있습니다. 두번째, 수정할 때 내가 먼저 이 값을 수정했다고 명시하여 다른 사람이 동일한 조건으로 값을 수정할 수 없게 하는 것입니다. 비관적 락(pessimistic lock) 비관적 락은 Reeatable Read 또는 Serializable 정도의 격리성 수준을 제공.. 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.
[데이터베이스] MySQL의 Lock과 트랜잭션 모델 안녕하세요. 이전 포스팅, [DataBase] Lock에 대해서 알아보자 - 기본편에서 우리는 Lock이란 어떤 것이고 DBMS에서는 Lock을 어떤 경위로 사용는지에 대해서 자세하게 알아보았습니다. 도움이 되셨을까요? 포스팅에서도 말했다시피 Lock은 DBMS마다 조금씩 구현하는 요소들이 다릅니다. 대표적인 예로 MySQL은 읽는것에 대해서도 Lock(공유 락)을 잡는 반면 Oracle에서는 Lock을 전혀 잡지 않습니다. 오늘은 Mysql의 Lock과 트랜잭션에 대해서 공식문서를 보며 한번 파헤쳐보도록 하겠습니다. 이번 포스팅은 Lock에 대해서 기본적인 지식이 있다라는 것을 전제로 만들어 졌습니다. 혹시 개념이 없으시거나 미흡하다고 생각되시는 분들은 Lock에 대한 포스팅및 트랜잭션 및 격리성에 대.. 2020. 11. 4.
[데이터베이스] Lock에 대해서 알아보자 - 기본편 안녕하세요. 오늘은 DataBase의 Lock에 대해서 알아보고 정리해보는 시간을 가져보도록 하겠습니다. DataBase는 데이터를 영속적으로 저장하고 있는 시스템입니다. 이런 시스템은 같은 자원(데이터)에 대해서 동시에 접근하는 경우가 생길 수 밖에 없습니다. 이럴 경우 데이터가 오염 될 수 있는데 그렇게 되지 않도록 데이터의 일관성과 무결성을 유지해야할 필요가 있습니다. 예를 들어 수강신청 시스템에서 1명만이 정원으로 남게되었습니다. 여기서 2사람이 거의 동시에 버튼을 눌렀습니다. 성공은 1명만 되야합니다. 이런 상황에서 DBMS(DataBase Management System)가 사용하는 공통적인 방법이 Lock이라는 것입니다. Lock Lock이란 트랜잭션 처리의 순차성을 보장하기 위한 방법입니다.. 2020. 10. 29.
[데이터베이스] 트랜잭션과 격리성 안녕하세요. 평소에 포스팅하던 내용과는 조금 떨어진 이론적인 내용을 포스팅하고자 합니다. DB는 트랜잭션 단위로 처리된다고 합니다. 유명한 All Or Nothing이 DB의 트랜잭션에서 나온 이야기입니다. 오늘은 여러분들께 DB를 이용할 때의 트랜잭션과 그리고 한발 더 나아가 격리성(Isolation)에 대해서 알아보는 시간을 가지도록 하겠습니다. 트랜잭션(Transaction) 만들고 있는 프로젝트의 로직중에 DB table에 정보를 insert하는 로직이 있습니다. table은 정규화 되어있으며 A, B, C 테이블에 차례대로 테이터를 insert한다고 하겠습니다. 테이블이 쪼개져 있으므로 테이블간의 데이터 정합성을 유지하는게 중요합니다. 만약 A, B에는 insert하고 C에 insert 하기전 .. 2020. 10. 4.
어떤 DB를 사용해야 할까 ? CAP 이론 안녕하세요. 현재 세상에는 수많은 데이터를 저장할 수 있는 서비스가 많이 나와있습니다. 그런데 이런 와중에 내가 만드는 시스템은 어떤 Database를 사용해야 좋을까요? 확장성은 어느정도로 가져가야할지, 사용할 수 있는 비용은 어느정도인지, 팀의 기술 숙련도는 어떤지... 등등 여러가지를 생각해야합니다. 오늘은 여러분의 database 선택의 한가지 척도로써 도움을 줄 수 있는 CAP 이론에 대해서 이야기 해보고자 합니다. CAP 이론 CAP 이론(또는 Brewer`s theorem)이란 Network로 연결된 분산된 데이터베이스 시스템은 일관성(Consistency), 가용성(Availability), and 분할 내구성(Partition Tolerance)의 3가지 특성중 2가지 특성만을 충족 할수.. 2020. 6. 13.
database 이름 짓기 안녕하세요. Class명, 변수명, REST API의 명 등 이름을 짓는 일은 개발에서 가장어려운 부분중 하나라는 점은 다들 공감하실 것이라 생각합니다. 프로젝트에 참여하는 모두가 공감대를 가질 수 있어야 하며 명확해야하기 때문입니다. 그래서 큰 프로젝트에서는 명명 사전, 축약 사전등을 만들어놓고 사용하기도 합니다. database의 table, column 등의 이름을 정하실 땐 어떻게 하시나요? 컬럼은 대문자...? 축약어는 많이 사용하시나요? 오늘은 database의 이름짓는법에 대해서 알아보도록 하겠습니다. 영어권에서의 명명법을 찾아서 번역 및 정리한 자료라 우리나라와는 맞지 않는 부분이 있을 수도 있습니다. 참고의 용도로 봐주시면 감사하겠습니다. 명명 규칙의 중요성 이름은 오래간다 데이터 구조는.. 2019. 12. 23.