StoryCode

'Database 관리'에 해당되는 글 40건

  1. 설치
  2. JSON 처리
  3. 표준 ANSI SQL MODE (Strict Mode) 사용 On/OFF
  4. MongoDB vs MySQL CRUD 비교
  5. 성능 최적화 전략
  6. 기초사용법
  7. 설치 ( Windows )
  8. 용어
  9. 설치 및 설정
  10. 날짜 처리 관련

설치

Database 관리/Redis
반응형

1. mkdir download; cd download;

 

2. wget http://download.redis.io/redis-stable.tar.gz

3. tar zxvf redis-stable.tar.gz

 

4. cd redis-stable

 

5. make

만약, error: jemalloc/jemalloc.h: No such file or directory 오류 발생시

 

6. make distclean

 

7. make

 

8. make install

 

test 1.server 실행.

$ redis-server

 

test 2.ping 확인.

$ redis-cli ping

결과로 PONG 이 나타나면 된다.

 

test 3.client 테스트.

$ redis-clie

   set myval testvalue

   get myval

 

 

반응형

JSON 처리

Database 관리/Maria DB
반응형

참조 1 ) https://mariadb.com/kb/en/library/json-functions/

참조 2 ) https://mariadb.com/kb/en/library/json_object/

SELECT * FROM TEMP_TBL;
+------------------------------------------------------------------------------------------------------------------------------------------------------+
| V                                                                                                                                                    |
+------------------------------------------------------------------------------------------------------------------------------------------------------+
| [{"TYPE":"HP", "NO":"01012345678", "RETRY":"3"}, {"TYPE":"TELEGRAM", "NO":"42543524", "RETRY":"3"},{"TYPE":"KAKAO", "NO":"01012345678","RETRY":"3"}] |
+------------------------------------------------------------------------------------------------------------------------------------------------------+


SELECT JSON_EXTRACT(V, '$[0].NO'),
       JSON_UNQUOTE(JSON_EXTRACT(V, '$[0].NO')),
       JSON_VALUE  (V, '$[0].NO')
FROM   TEMP_TBL  A;
+----------------------------+------------------------------------------+----------------------------+
| JSON_EXTRACT(V, '$[0].NO') | JSON_UNQUOTE(JSON_EXTRACT(V, '$[0].NO')) | JSON_VALUE  (V, '$[0].NO') |
+----------------------------+------------------------------------------+----------------------------+
| "01012345678"              | 01012345678                              | 01012345678                |
+----------------------------+------------------------------------------+----------------------------+

SELECT JSON_EXTRACT(V, CONCAT('$[', B.NOUID - 1, '].NO'))
FROM   TEMP_TBL  A STRAIGHT_JOIN
       CLONE_TBL B
WHERE  B.NOUID BETWEEN 1 AND JSON_LENGTH(A.V)

+----------------------------------------------------+
| JSON_EXTRACT(V, CONCAT('$[', B.NOUID - 1, '].NO')) |
+----------------------------------------------------+
| "01012345678"                                      |
| "42543524"                                         |
| "01012345678"                                      |
+----------------------------------------------------+

 

 

명령설명)

 JSON_QUERY와 JSON_VALUE의 차이점
        JSON_QUERY와 JSON_VALUE의 예제와 비교합니다.
    JSON_ARRAY
        나열된 값이 포함 된 JSON 배열을 반환합니다.
    JSON_ARRAY_APPEND
        JSON 문서 내에서 주어진 배열의 끝에 값을 추가합니다.
    JSON_ARRAY_INSERT
        JSON 문서에 값을 삽입합니다.
    JSON_COMPACT
        불필요한 모든 공간을 제거하여 json 문서가 가능한 한 짧습니다.
    JSON_CONTAINS
        지정된 JSON 문서 또는 문서 내의 지정된 경로에서 값을 찾을 수 있는지 여부
    JSON_CONTAINS_PATH
        지정된 JSON 문서에 지정된 경로의 데이터가 있는지 여부를 나타냅니다.
    JSON_DEPTH
        JSON 문서의 최대 깊이.
    JSON_DETAILED
        중첩 구조를 강조하는 가장 이해하기 쉬운 방식으로 JSON을 나타냅니다.
    JSON_EXISTS
        지정된 데이터에 지정된 JSON 값이 있는지 확인합니다. 
    JSON_EXTRACT
        JSON 문서에서 데이터를 추출합니다.
    JSON_INSERT
        JSON 문서에 데이터를 삽입합니다.
    JSON_KEYS
        JSON 객체의 최상위 값에서 키를 반환하거나 경로에서 최상위 키를 반환합니다.
        MariaDB [test]> select id, json_keys(data) from json_test;
        +------+-----------------------------------+
        | id   | json_keys(data)                   |
        +------+-----------------------------------+
        |    1 | ["Name", "Sex", "Phone"]          |
        |    2 | ["Name", "Sex", "Phone", "Birth"] |
        |    3 | ["Name", "Sex", "Phone", "Birth"] |
        |    4 | NULL                              |
        |    5 | NULL                              |
        +------+-----------------------------------+
        5 rows in set (0.000 sec)

    JSON_LENGTH
        JSON 문서의 길이 또는 문서 내 값의 길이를 반환합니다.
    JSON_LOOSE
        더 읽기 쉽게 보이도록 JSON 문서에 공백을 추가합니다.
    JSON_MERGE
        주어진 JSON 문서를 병합합니다.
    JSON_MERGE_PATCH
        주어진 JSON 문서의 RFC 7396 호환 병합
    JSON_MERGE_PRESERVE
        JSON_MERGE의 동의어
    JSON_OBJECT
        주어진 키 / 값 쌍을 포함하는 JSON 객체를 반환합니다. 
    JSON_QUERY
        JSON 문서가 주어지면 경로로 지정된 객체 또는 배열을 반환합니다.
    JSON_QUOTE
        문자열을 JSON 값으로 인용합니다.
    JSON_REMOVE
        JSON 문서에서 데이터를 제거합니다.
    JSON_REPLACE
        JSON 문서에서 기존 값을 바꿉니다.
    JSON_SEARCH
        JSON 문서 내에서 지정된 문자열의 경로를 반환합니다.
    JSON_SET
        JSON 문서에 데이터를 업데이트하거나 삽입합니다.
    JSON_TYPE
        JSON 값의 유형을 반환합니다.
    JSON_UNQUOTE
        JSON 값을 인용 해제하여 문자열을 반환합니다. 
    JSON_VALID
        값이 유효한 JSON 문서인지 여부 
    JSON_VALUE
        JSON 문서가 주어지면 지정된 스칼라를 반환합니다.

반응형

'Database 관리 > Maria DB' 카테고리의 다른 글

UDF 만들기  (0) 2021.05.06
Ubuntu 20.04.02, MariaDB 10.5 설치, UDF 설치, System Call Udf  (0) 2021.02.16
maria10.zip.windows10 64bit.설치  (0) 2020.04.23
MySQL.무인스톨설치  (0) 2020.04.23
설치 및 설정  (0) 2018.10.31

표준 ANSI SQL MODE (Strict Mode) 사용 On/OFF

Database 관리/MySQL
반응형

1) 확인

mysql -u root -p -e "SHOW VARIABLES LIKE 'sql_mode';"

 

2) OFF

mysql -u root -p -e "SET GLOBAL sql_mode = 'NO_ENGINE_SUBSTITUTION';" 

mysql -u root -p -e "SELECT @@GLOBAL.sql_mode;"

 

3) OFF vi my.cnf

[mysqld]

sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

반응형

'Database 관리 > MySQL' 카테고리의 다른 글

실시간 SQL LOG 남기는 방법  (0) 2023.09.18
2023-226.MySQL,Architecture,아키텍처.우기  (0) 2023.08.06
콘솔.Tag자동완성  (0) 2023.07.31
Plan.용어.설명  (0) 2023.03.22
save as CSV  (0) 2022.01.07

MongoDB vs MySQL CRUD 비교

Database 관리/Mongo DB
반응형

- Scalability : Max ScaleUp vs Many ScaleOut

 

- Scale Up의 한계

  * 연결16개부터 성능향상 없음.

  * CPU Core 16 개부터 성능향상 없음.

 

- CAP 이론

  * MongoDB 는 C-P

 

- ACID 이론

 

 

- NoSQL(MongoDB) VS RDBMS(MySQL)

  * 동일한 데이터에 대해 CRUD 연산

  * 2개 이상의 클라이언트를 연결하여 연산 시도

  * MongoDB 는 싱글노드, 멀티노드를 구분하여 작업

  * 데이타 구하기 : https://www.data.gov/tools/123

  (https://www.data.gov/climate/ecosystem-vulnerability/ecosystem-vulnerability-tools/123)

 

 

[참고] https://www.slideshare.net/WooYeongChoe1/slidshare-mongodbmysqlcrud

반응형

'Database 관리 > Mongo DB' 카테고리의 다른 글

성능 최적화 전략  (0) 2019.04.21
기초사용법  (0) 2019.04.18
설치 ( Windows )  (0) 2019.04.18
용어  (0) 2019.04.16

성능 최적화 전략

Database 관리/Mongo DB
반응형

- 데이터 모델링.References

db.member_tbl.find({memberid:'abc'});  와 같이 find 하면,
   { "_id" : ObjectId("5cb82543ffd1c1ef601f0350"), "memberid" : "abc" }

위와 같이 _id 의 ObjectId 가 있으며, _id 로 검색도 가능함. 즉 _id 를 다른 Collection 에넣고 참고 하는 방법이 가능.

   db.member_tbl.find({_id:ObjectId('5cb82543ffd1c1ef601f0350')}); 

 

- 데이터 모델링.BSON

  Binary 는 최대 16MB.

 

- Index

  * 각 Index 는 8KB 의 데이타 공간 필요.

  * Index 는 system.indexes Collection 에 저장됨 : db.system.indexes.find() 로 Index 확인 가능.

  * Index 생성 : db.member_tbl.ensureIndex({"username":1, "hpno":-1}, {"name":"idx_member_tbl"}, {"unique":true},}{"dropDups":true}, {"background":true}) # 1은 오름차순. -1 이면 내림차순. background 는 백그라운드로 생성.

                  ensureIndex = createIndex

  * Index 확인 : db.member_tbl.getIndexes()

  * Index 삭제 : db.member_tbl.dropIndex("name_1")

db.runCommand({"dropIndexes":"user", "index":"*"})

 

- Spatial Index

  * db.map_tbl.ensureIndex({"gps":"2d"})

  * Ex> {"gps":[0,100]}, {"gps":{"x":30,"y":30}}, {"gps":{"lat":30,"long":30}}

  * db.map_tbl.ensureIndex({"gps2":"2d"}, {"min":-1000, "max":1000})

    이 경우오류 발생함 : db.map_tbl.insert({"gps2":{-1001, 0}})

  * 참고 : https://docs.mongodb.com/manual/core/geospatial-indexes/

- Multikey Index

  Array Field Index

 

- Text Index

  * String 컨텐츠에 대한 Index

  * 참고 : https://docs.mongodb.com/manual/core/index-text/

 

- Hashed Index

  db.member_tbl.createIndex({"a":"hashed"})

 

- PLAN 확인.explain

  db.member_tbl.find().sort({"$natural":-1}).explain("executionStats")

 

- Capped Collection ( 제한 컬렉션 )

  * 고정사이즈. Insert, Retrive 시 high-throughput.

  * Insert 순서 보장.

  * 정렬을 위한 인덱스 불필요. 오버헤드 없이 higher insertion throughput.

  * db.createCollection("log", { capped:true, size:100000}}

  * Document 개수 제한 : db.createCollection("log", { capped:true, size:100000, max:5000}}

  * Document 는 항상 입력순서대로 원형큐에 저장

  * 큐가 다 찼을 경우, 오래된 문서부터 대치됨.

  * 역순서 정렬 : db.user.find().sort({"$natural",-1})

 

 

 

 

 

 

 

 

 

[ 참조 ] https://www.slideshare.net/mrg7211/mongo-db-52216593

반응형

'Database 관리 > Mongo DB' 카테고리의 다른 글

MongoDB vs MySQL CRUD 비교  (0) 2019.04.21
기초사용법  (0) 2019.04.18
설치 ( Windows )  (0) 2019.04.18
용어  (0) 2019.04.16

기초사용법

Database 관리/Mongo DB
반응형

실행) "C:\Program Files\MongoDB\Server\4.0\bin\mongo.exe"

 

DDL) db.help() 참조

DB 생성 : use DB명. Collection 을 하나 생성해야 show dbs 에 보인다.

DB 선택 : use DB명. 이미 DB명이 있으면 선택. 없으면 생성됨.

DB 삭제 : use DB명 후 db.dropDatabase()

현재 DB 보기 : db 혹은 db.getName()

 

COLLECTION 생성 : db.createCollection("member_tbl") 혹은 insert cllection 시 자동 생성

                          생성시 옵션으로 db.createCollection("member_tbl", "{capped:true, autoIndex:true,size:6142800,max:10000}") 등을 줄 수 있다.

COLLECTION 삭제 : db.member_tbl.drop()

 

DML) 1 row = 1 Document

https://docs.mongodb.com/manual/tutorial/insert-documents/

https://docs.mongodb.com/manual/tutorial/query-documents/

https://docs.mongodb.com/manual/tutorial/update-documents/

https://docs.mongodb.com/manual/tutorial/remove-documents/

 

Ex> 사용 예제

> show dbs

admin    0.000GB

config    0.000GB

local      0.000GB

 

> use mydatabasename

> db.member_tbl.insert({memberid:'userid', memberpwd:1234, info:{membername:'hongildong', age:34}});

> show dbs

admin    0.000GB

config    0.000GB

local      0.000GB

mydatabasename 0.000GB

> show collections

member_tbl

db.member_tbl.find({memberid:'userid'})

> db.member_tbl.remove({memberid:'userid', justOne:false}); # 전체 삭제

 

[ 참조 ]

https://velopert.com/457

반응형

'Database 관리 > Mongo DB' 카테고리의 다른 글

MongoDB vs MySQL CRUD 비교  (0) 2019.04.21
성능 최적화 전략  (0) 2019.04.21
설치 ( Windows )  (0) 2019.04.18
용어  (0) 2019.04.16

설치 ( Windows )

Database 관리/Mongo DB
반응형

다운로드 후 설치시, Windows 7 에서는 진행이 안되는 경우가 발생할 수 있다.

Compas 문제인데, Windows 8 부터 지원한다.

이 경우에는 아래지시를 따른다.


1. Run the installer with a double-click.

2. Click next.

3. Accept the License Agreement

4. Select the Complete installation type and click Instal

5. Uncheck the Install Compass option (by default this checked and Compass requires the Microsoft .NET Framework version 4.5 or later

6. With in a minute time installation will get complete and you can see the exe files under C:\Program Files\MongoDB\Server\3.6\bin

 

[ 참조 ] https://docs.mongodb.com/manual/tutorial/install-mongodb-on-windows/

반응형

'Database 관리 > Mongo DB' 카테고리의 다른 글

MongoDB vs MySQL CRUD 비교  (0) 2019.04.21
성능 최적화 전략  (0) 2019.04.21
기초사용법  (0) 2019.04.18
용어  (0) 2019.04.16

용어

Database 관리/Mongo DB
반응형

[참조] https://www.a-mean-blog.com/ko/blog/MEAN-Stack/_/MEAN-Stack-%EC%86%8C%EA%B0%9C

 

몽고DB는 대표적인 NoSQL, Non Relational Database

문장, 이미지데이터(base64) 등 길이가 길고 일정하지 않은 데이터들을 저장하고 검색하는데 적합한 DB

고전적인 테이블, 행, 열의 개념이 없음

 

document : 하나의 데이터. JSON형식. Javascript의 object와 마찬가지로 고정된 형식이 없으며 항목의 추가 삭제가 자유

 

collection : document의 모음.

 

데이터의 조작은 SQL대신 Javascript로 할 수 있습니다.

반응형

'Database 관리 > Mongo DB' 카테고리의 다른 글

MongoDB vs MySQL CRUD 비교  (0) 2019.04.21
성능 최적화 전략  (0) 2019.04.21
기초사용법  (0) 2019.04.18
설치 ( Windows )  (0) 2019.04.18

설치 및 설정

Database 관리/Maria DB
반응형

1) MariaDB 10 설치.

MariaDB 공식 홈페이지에서 리포지토리 정보 취득


URL: https://downloads.mariadb.org/mariadb/repositories/ => 시키는 대로 설치

    1. Choose a Distro -> CentOS

    2. Choose a Release -> CentOS 7 (64-bit)

    3. Choose a Version -> 10.3 [Stable]


rpm -qa Maria*

    MariaDB-compat-10.3.10-1.el7.centos.x86_64

    MariaDB-common-10.3.10-1.el7.centos.x86_64

    MariaDB-client-10.3.10-1.el7.centos.x86_64

    MariaDB-server-10.3.10-1.el7.centos.x86_64



2) MariaDB 설정

# vi /etc/my.cnf.d/server.cnf

[mysqld]

character-set-server = utf8


# systemctl start mariadb

# systemctl enable mariadb

# mysql_secure_installation => root 암호설정 됨.

# systemctl status mariadb



3) 유저 생성 및 IP 허용

https://dev.mysql.com/doc/refman/5.7/en/adding-users.html


create user 'service'@'%' identified by "password";


GRANT ALL PRIVILEGES ON *.* TO 'service'@'%';

GRANT ALL PRIVILEGES ON *.* TO 'service'@'localhost'  identified by "암호";



모든 IP 허용

INSERT INTO mysql.user (host,user,password) VALUES ('%','root',password('패스워드'));

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';


FLUSH PRIVILEGES;




IP 대역 허용 ( 예: 111.222.xxx.xxx )

다음과 같이 설정하면 111.222로 시작하는 모든 IP가 허용된다.


# INSERT INTO mysql.user (host,user,password) VALUES ('111.222.%','root',password('패스워드'));

# GRANT ALL PRIVILEGES ON *.* TO 'root'@'111.222.%';

# FLUSH PRIVILEGES;


 


# 특정 IP 1개 허용 ( 예: 111.222.33.44 )

# INSERT INTO mysql.user (host,user,password) VALUES ('111.222.33.44','root',password('패스워드'));

# GRANT ALL PRIVILEGES ON *.* TO 'root'@'111.222.33.44';

# FLUSH PRIVILEGES;




# 모든 IP를 허용한 경우 다음과 같이 원래 상태로 복구할 수 있다.

# DELETE FROM mysql.user WHERE Host='%' AND User='root';

# FLUSH PRIVILEGES;



CREATE USER 'root'@'192.168.11.%' IDENTIFIED BY "password";

GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.11.%' WITH GRANT OPTION;

FLUSH PRIVILEGES;


4) 방화벽 풀기

firewall-cmd --permanent --zone=trusted --add-source=192.168.11.1/24

firewall-cmd --permanent --zone=trusted --add-port=3306/tcp

firewall-cmd  --reload

반응형

'Database 관리 > Maria DB' 카테고리의 다른 글

UDF 만들기  (0) 2021.05.06
Ubuntu 20.04.02, MariaDB 10.5 설치, UDF 설치, System Call Udf  (0) 2021.02.16
maria10.zip.windows10 64bit.설치  (0) 2020.04.23
MySQL.무인스톨설치  (0) 2020.04.23
JSON 처리  (0) 2019.12.03

날짜 처리 관련

Database 관리/SQLite
반응형

1. 오늘 날짜

SELECT DATETIME('NOW');


2. 오늘 날짜를 CHAR(14) 로 변경하기

SELECT STRFTIME('%Y%m%d%H%M%S', DATETIME('NOW'), 'localtime');

반응형