Database

    [Mysql] 위도 경도 반경 구하기

    [Mysql] 위도 경도 반경 구하기

    1. 개요 지도에 관한 로직을 짤때 latitude, longitude 위도 경도 값을 구해서 radius, 위도 경도 값 기준으로 주변 5km, 10km의 위도 경도 리스트 또는 거리를 알고 싶을 때가 있습니다. 이러한 로직을 mysql에서 구현할 수 있을까 해서 찾아봤는데 stack over flow에서 친절하게도 작성된 sql이 있더군요. https://stackoverflow.com/questions/8850336/radius-of-40-kilometers-using-latitude-and-longitude Radius of 40 kilometers using latitude and longitude Possible Duplicate: Radius of multiple latitude/longit..

    [Redis] *:6379: bind: No such file or directory 오류 해결

    [Redis] *:6379: bind: No such file or directory 오류 해결

    1. 개요 Window에서 레디스 설치파일을 통해 설치를 하고, 기본 설치 경로("C:\Program Files\Redis")로 들어가서 redis-server.exe를 cmd로 실행하면 서버가 동작한다고 해서 따라했는데 기본 설정이 지정되지 않았고, 6379 포트에 바인딩 된 디렉토리나 파일이 없다고 에러가 나왔습니다. 뭐지? 6379포트를 따로 쓰는건 없을텐데... 구글링을 해보니 쉽게 해결되는 문제였습니다 2. 해결 1) 레디스 설치 폴더의 redis-cli.exe 실행 2) shutdown 입력 3) exit 입력 4) redis-server.exe 실행 끝입니다.

    [GraphQL] GraphQL이란?

    [GraphQL] GraphQL이란?

    1. 개요 GraphQL은 페이스북에서 쿼리 언어로, 애플리케이션 프로그래밍 인터페이스(API)를 위한 쿼리 언어로, 클라이언트에게 요청한 만큼의 데이터를 제공하는데 우선순위를 둡니다. 이런 GraphQL은 선언형 데이터 fetching 언어라고 부르는데, 개발자는 무슨 데이터가 필요한 지에 대해서만 요구사항을 작성하면 되고, 어떻게 가져올지는 신경쓰지 않아도 됩니다. sql이 데이터베이스 시스템에서 저장된 데이터를 효율적으로 가져온다면, gql은 웹 클라이언트가 데이터를 서버로부터 효율적으로 가져오는 것에 특화되어 있습니다. 그래서 보통 gql의 문장은 주로 클라이언트 시스템에서 작성하고 호출합니다. Rest API가 url, method와 같은 다양한 조합으로 생기는 다양한 endpoint가 존재한다..

    [Cassandra] unauthorized error from server code=2100 unauthorized 에러 해결

    [Cassandra] unauthorized error from server code=2100 unauthorized 에러 해결

    [Cassandra] unauthorized error from server code=2100 unauthorized 해결 카산드라를 압축 해제하는 형태로 리눅스에 설치해서 실행을 시키고 접속을 하는 과정중에 계정 생성도, 계정 조회도 안되는 문제를 발견할 수 있었습니다. 접속한 계정은 초기 계정인 cassandra/cassandra입니다. 아니... 초기 설정 그대로 사용한 거고, 초기 계정 그대로 사용했는데 권한 문제가 생기는게 말이 돼!? 그냥 apt-get install cassandra 같은 패키지 형태로 받을 걸 그랬나...하고 고민하다가 구글 좀 뒤져봤는데 해결 방법이 있더군요. 1) 카산드라설치폴더/bin/cassandra.yaml 파일을 열어줍니다. 2) authenticator: All..

    [NoSQL] Cassandra(카산드라) 설치 방법 (tar.gz)

    [NoSQL] Cassandra(카산드라) 설치 방법 (tar.gz)

    Cassandra 설치 방법 (tar.gz) 카산드라를 다운받는 방법 중에, 압축 파일을 받고 특정 위치에 설치하는 방법입니다. 1. cassandra 홈페이지에서 압축 파일 다운로드 https://cassandra.apache.org/ Apache Cassandra | Apache Cassandra Documentation Since 2016, application engineers at Bloomberg have turned to Cassandra because it’s easy to use, easy to scale, and always available. We serve up more than 20 billion requests per day on a nearly 1 PB dataset acros..

    Maria DB cent os home 경로에 설치하기

    Maria DB cent os home 경로에 설치하기

    현재 /home/database/mariadb 라는 절대 경로에 mariadb 10.3을 설치를 한다는 것을 배경으로 정리한다. 만약 yum 패키지를 이용해 mariadb를 설치했다면 아래 명령어를 따라 관련된 파일을 전부 삭제해준다. yum remove mariadb* mariadb-server rm -rf /etc/my.cnf rm -rf /var/log/mysql rm -rf /var/lib/mysql 해당 경로로 들어가서 mariadb, mysql과 비슷한 느낌의 파일이 있다면 전부 삭제해준다. 1. maria db tar gz 다운 받기 wget -O mariadb.tar.gz https://downloads.mariadb.com/MariaDB/mariadb-10.3.30/bintar-linux..

    [MySQL] 파티셔닝 자동화 프로시저 코드

    [MySQL] 파티셔닝 자동화 프로시저 코드

    MySQL 데이터베이스 테이블을 파티셔닝 할 일이 생겨서 프로시저로 작성하고, 이벤트 스케쥴러를 통해 매일 매일 실행시키는 것으로 자동화를 진행해보았습니다. 완전한 자동화이긴한데 처음에 설정을 해주어야 하는 것이 있습니다. 프로시저 동작 조건 1. 파티셔닝할 테이블에서 PK를 DateTime 컬럼으로 설정해주어야 합니다.(추가적인 PK가 있어도 무관) 즉, 날짜를 기준으로 Range 파티셔닝을 진행하니 날짜 컬럼이 있어야 합니다. 2. 그리고 프로시저를 동작시키기 전에 pFuture라는 파티션이 있어야 합니다. ALTER TABLE `His_Ai` PARTITION BY RANGE( to_days(his_time)) ( PARTITION pFuture VALUES LESS THAN MAXVALUE ); ..

    [InfluxDB] 설치 및 사용법

    [InfluxDB] 설치 및 사용법

    [InfluxDB] 설치 및 사용 방법 1. InfluxDB란 TSDB(시계열 데이터베이스; Time Series Database)로 이루어진 데이터 베이스다. 시계열 데이터는 즉 시간과 값이 한 쌍을 이루는 데이터인데, 시간에 따라 순차적으로 저장하고 서비스하는 시스템이 바로 이 TSDB이다. 스마트 팩토리와 빅데이터가 등장하면서 데이터에 대한 가치가 높아지고, 데이터를 가공하고 처리하는 기술이 중요해졌는데, 특히 수많은 센서들로부터 나오는 센서 데이터 즉, 실시간으로 변화하는 데이터를 처리하는데 용이한 데이터베이스가 필요해졌다. 이런 실시간 데이터는 수 초 단위로 쌓이게 되고, 이 수많은 데이터를 처리하기에는 기존의 RDBMS, 관계형 데이터베이스로는 한계가 생기기 시작했다. 관계형 데이터베이스로 시..

    [MySQL] 파티셔닝 개념 및 사용법

    [MySQL] 파티셔닝 개념 및 사용법

    MySQL 데이터베이스 파티셔닝 1. 개념 논리적인 데이터 element들을 다수의 entity로 쪼개는 행위이며, 큰 테이블이나 인덱스를 관리하기 쉬운 Partition이라는 작은 단위로 물리적으로 분할하는 것을 말합니다. 2. 성능 특정 DML과 Query의 성능을 향상시키고, 주로 데이터가 실시간으로 쌓이는 데이터베이스 환경에서 효율적이다. 특히 Full Scan에서 데이터의 접근 범위를 줄여 성능 향상을 가져올 수 있습니다. 물리적인 파티셔닝으로 인해 전체 데이터의 훼손 가능성이 줄어들며, 각 파티션 별로 독립적으로 백업하고 복구할 수 있습니다. 다만, 테이블 간 Join이 일어날 경우 비용이 증가하며 테이블과 인덱스를 별도로 파티셔닝 할 수는 없습니다. 3. 종류 기본적으로 파티셔닝은 수평 분할..

    [오류해결] MySQL Read Only Table

    [오류해결] MySQL Read Only Table

    오랜만에 MySQL을 만지게되면 가벼운 오류들이 발생하곤 하는데... 테이블을 생성하고 데이터를 수동으로 넣어서 확인하려고 하니 Read Only라는 느낌표가 떠있는 것을 확인할 수 있습니다. 이때 테이블에 PK가 한 개도 없기 때문에 발생하는 오류로 아래와 같이 적당하게 idx로 PK를 설정해주면 오류가 해결됩니다! *Tip: Index라는 이름은 컬럼으로 사용하지 마세요!