AWS DynamoDB

이미지
DynamoDB! NoSQL! 1. NoSQL  document store database     시작하기 전에 왜 NoSQL이 생겨났는지 알아볼 필요가 있다. NoSQL이 생기기 전에는 RDB가 주류를 이루고 있었는데 이는 스토리지 비용이 비싼 시절이었기 때문에 정규화를 통해 중복을 줄여 데이터를 최대한 줄이는 것을 선호했기 때문이다. 그러나 시간이 지남에 따라 스토리지의 비용의 감소와 대규모 연산의 중요성이 증가함에 따라 스토리지를 더 많이 소모하더라도 성능을 끌어올리기 위해 탄생한 개념이 NoSQL인것이다. 2. DynamoDB의 특징. 빠른 속도 - NoSQL인 DynamoDB는 비정규화적 특징을 가진다. 빠른 쿼리만 가능하다면 데이터의 중복을 허용하고 이를 활용해 빠른 검색속도를 실현한다.  Table Key - 각 Json Data 를 구분 짓는데  Partition Key와 Sort Key를 사용하며 이를 Table Key라고 한다. 이 키는 후술할 LSI, GSI와 같은 구조와 역할을 가지며 Table Key와 LSI는 테이블이 생성된 이후엔 변경이 불가능하다. 기본적인 Query는 이 값을 이용하여 검색하는데 Partition Key는 =  비교만 가능하고 Sort Key는 그보다 다양한 <, >, =, StartAt, Between 비교등이 가능하다. Secondary Index (LSI, GSI)  - Query는 TableKey 또는 LSI, GSI로만 가능하다. LSI는 TableKey와 같은 Partition Key를 가지지만 다른 Sort키를 사용하고 GSI는 두 키 모두 다른 키를 사용한다.  GSI는  추가 제거가 자유롭다. 하지만 GSI추가는 Table추가나 다름없고 이는 추가적인 비용 증가로 이어진다. Scalability  - NoSQL은 많은 트래픽을 감당하기 위해서 탄생한 개념이기도 한데 이를 위해...

수학) Quaternion(쿼터니언) 설명

이미지
 Q. 쿼터니언에 대해 설명. 사원수, 혹은 해밀턴 수라고도 부르며 복소수를 확장해 만든 수 체계이다. 덧셈에 대해서는 결합법칙, 교환법칙이 성립하지만, 곱셈에 대해서는 결합법칙만 성립하고 교환법칙은 성립하지 않는다.  쿼터니언은 하나의 실수와 3개의 서로 다른 복소수로 구성이 되며, 곱셈 연산 시 겹선형 연산을 한다. EX) a0 + a1i + a2j + a3k에 대해 곱의 결과는 다음과 같다. 여기서 a0, a1, a2, a3는 모두 실수이다. 쿼터니언은 실수부와 허수부로 나뉘는데, 이를 벡터에 적용하면 실수부를 스칼라, 허수부를 3차원 벡터로 간주한다. 마지막으로 위 예시에서 언급한 쿼터니언을 2x2 Complex matrix(복소행렬)로 나타내면 다음과 같다. Q. 왜 쿼터니언을 물체의 회전을 연산할때 사용하는가? 오일러 각을 이용한 연산의 경우 짐벌락현상이 생기는데 짐벌락 현상을 회피하기 위해 쿼터니언을 사용한다. 쿼터니언으로 문제가 해결되는 이유는 3개의 축의 연산이 서로 다른 복소수로 되어 있어 서로가 독립적으로 연산이 될 수 있기 때문이다. 오일러 각 - 위키백과, 우리 모두의 백과사전 (wikipedia.org) 사원수 - 위키백과, 우리 모두의 백과사전 (wikipedia.org)