Data Base
-
데이터 모델링1 - 데이터 모델링과 일상의 예시Data Base/관계형 데이터 모델링 2023. 9. 6. 11:02
자동차 동호회의 모델링 A자동차 동호회는 회원 명부를 체계적으로 관리하기 위해 고민중이다. 최초의 회원정보 표는 다음과 같은 모양이다. 표 1-1 A동호회의 회원정보표 성명 나이 주소 E-MAIL 휴대폰번호 보유차량 제조사 차종 색상 배기량 년식 B씨 40 B아파트 bbb@gmail.com 010~ 랜드로버 이보크 WHITE 2200 2021 C씨 35 C빌라 ccc@gmail.com 010~ 아우디 A7 SILVER 3000 2022 운영자 K는 위와 같은 Colum의 정보들과 함께 1)회원 정보를 정리하였는데 이내 문제에 부딪혔다. B씨는 소유한 차 가 두대라는 것이다. 표 1-2 보유 차량 수 만큼 개인 정보가 중복됨 성명 나이 주소 E-MAIL 휴대폰번호 보유차량 제조사 차종 색상 배기량 년식 B..
-
Redis Hash 형식과 명령어Data Base/Redis 2022. 10. 3. 13:24
Hash 형식 Hash는 또 다른 key-value pair이다. 간단히 말하면 key-value pair안에 key-value pair라고 생각하면 쉽다. 하지만 Hash 형식안에 중복되는 key-value를 가질 수 없다 JSON object과 같다고 생각하면 된다. Hash 형식안에는 오직 중복되지 않는 하나의 key-value pairs만 가질 수 있다. Hash 형식에 관련한 명령어를 사용하려면 명령어의 접두사로 "h"를 사용해야 한다. HSET 명령어 hset key field value [field value...] HGET 명령어 Hash의 key이름과 원하는 field이름을 위와 같이 입력하면 person Hash안에 원하는 value를 출력받을 수 있다. HGETALL 명령어 hgeta..
-
Redis Set 형식과 명령어Data Base/Redis 2022. 10. 3. 12:49
Set 형식 같은 array 구조체를 하고 있다는 점에서 List형식과도 매우 유사하다고 할 수 있다. 하지만 Set 형식은 unique한 array로 Set형식의 array안에 있는 모든 element가 완전히 유일한 값(중복 되는 값 x)이 라는 거이 본질적인 특징이다. 또 한 Set 형식에는 보통의 array와는 다르게 특별히 정해진 순서가 없다. redis에서 Set형식의 array를 만들고 싶다면 모든 명령어의 접두사로 "s"를 넣어야 한다. SADD 명령어 sadd key member [member ...] sadd 명령어를 통해 Set 형식의 array를 만들 수 있다. 더 불어 위 예제에서 알 수 있듯이 Set형식에 member에 공백이 포함되어 있을 때는 쌍따옴표로 묶어 주어야 한다. S..
-
Redis List 형식과 명령어Data Base/Redis 2022. 10. 2. 22:27
List 형식 1) lpush명령어 lpush key element [element.......] redis에 List형식으로 데이터를 저장하려면 lpush명령어를 사용하면 된다. 이 명령어는 key-value pair를 List의 첫 부분 부터 저장하게 한다. 이때의 첫부분의 기준은 왼쪽부터 시작한다. 또한 List에 이름을 지정 할 수도 있다. 2) lrange명령어 위 예제에서 우리는 friends라는 key이름을 가지는 배열을 가지게 되었고 그 내부에는 tom이라는 element가 있다. get 명령어를 통해 friends를 확인해보려고 시도하면, 잘못된 명령어라는 메시지를 반환한다. lrange key이름 index번호 ~ index번호 왜냐하면 get명령어는 오직 문자열 타입의 key-valu..
-
Redis basic practiceData Base/Redis 2022. 10. 2. 20:56
redis-cli로 redis server에 접속하면, cli로 NodeJS에 명령를 실행하는 것처럼 redis에서 명령을 실행하고 access할 수 있다. 가장 먼저 할 수 있는 일은 redis 데이터베이스에 항목을 추가하는 것이다. redis는 key-value pair를 이루는 데이터베이스 이므로 가장 중요한 것은 key에 대한 값을 설정하고, 그 값을 가져오는 것이다. SET으로 key-value 저장하기 GET으로 value가져오기 Redis 문자열 저장 간단한 예제에서 알 수 있듯이 redis내부에 저장되는 거의 모든 것은 문자열 유형이 될 것이다. redis를 사용하여 데이터를 처리할 때는 대부분 문자열로 돌아올 것이다. 위와 같이 숫자인 나이를 저장한뒤 값을 반환 받으면 그 값은 문자열 타..
-
apache kafka 핵심요소 3가지(Broker, Replication, ISR)Data Base/Kafka 2022. 9. 6. 14:55
replication 즉 복제는 kafka 아키텍쳐의 핵심이다. *cluster에서 서버에 장애가 생길 때 kafka의 *가용성을 보장하는 가장 좋은 방법이 복제이기 때문이다. *computer cluster(컴퓨처 클러스터) : 여러 대의 컴퓨터 들이 연결되어 하나의 시스템처럼 동작하는 컴퓨터들의 집합을 말한다. 클러스터의 구성 요소들은 일반적으로 고속의 근거리 통신망 으로 연결된다. 서버로 사용되는 노드에는 각각의 운영체제가 실행된다. 컴퓨터 클러스터는 저렴한 마이크로프로세스와 고속의 네트워크, 그리고 고성능 분산 컴퓨팅용 소프트웨어들의 조합 결과로 태어났다. *가용성 : 시스템 품질 속성 중 시스템이 장애 없이 정상적으로 운영되는 능력 Kafka broker kafka broker는 kafka가 설..
-
apache kafka TopicData Base/Kafka 2022. 9. 5. 13:38
Topic 카프카에는 다양한 데이터가 들어 갈 수 있는데, 그 데이터가 들어 갈 수 있는 공간을 Topic이라고 한다. 이 카프카 Topic은 AMQP와는 다르게 동작한다. 카프카에서는 토픽을 여러개 생성할 수 있다. Topic은 데이터베이스의 테이블이나 파일시스템의 폴더와 유사한 성질을 가지고 있는데, 이 토픽에 Producer 데이터를 넣게되고 Consumer는 데이터를 가져가게된다. Topic은 이름을 가질 수 있는데, 목적에 따라 클릭로그,send sms,location log 등과 같이 무슨 데이터를 담는지 명확하게 명시하면 추후 유지보수 시 편리하게 관리 할 수 있다. Topic 내부 하나의 토픽은 여러개의 파티션으로 구성될 수 있으며, 첫번째 파티션 번호는 0번부터 시작한다. 하나의 파티션은..
-
apache kafka 개요Data Base/Kafka 2022. 9. 2. 18:55
단방향 데이터 전송 데이터를 전송하는 Source App과 데이터를 받는 Target App이 있었다. 초기에는 간단하게 단방향 데이터 송신을 수행하였다. 그런데 시간이 지날 수록 Source App과 Target App이 많아 지면서, 데이터를 전송하는 Line이 매우 복잡하게 되었다. 많은 수의 Source App 과 Target App 문제는 Source App 갯수와 Target App 갯수가 많아 질 수록 서로 데이터를 전송하는 Line이 많아 지게된다. 데이터 전송 Line이 많아지게되면 배포와 장애에 대응하기 어려워 진다. Before Kafaka 또한 데이터를 전송할 때 프로토콜 포맷의 파편화가 심해졌다. 그리고 추후에 데이터에 포맷 내부에 변경사항이 있을때 유지 보수가 매우 어려워 졌다...