반응형

데이터베이스설계

 

oracle

mysql

Access->가르쳐주기 쉽다.

논리적설계: 개념적설계에서만들어진구조를실제DBMS에맞도록스키마를설계하는단 계로보통이단계에서정규화

물리적설계: 데이터베이스의물리적구조와접근방법을설계

물리는 구조를 만들겠다.

예전에는 구현을 코딩 한다=>최근에는 코딩

프로그램 record

데이터베이스에서는 relation이나 관계

개체가 table

속성

기본키 잴 안좋은 것은 일련번호 ->구별 밖에 못한다.

 

숫자그림 minist

유도속성: 다른속성으로부터유도되어지는값(나이생년월일을알면나이는계산이가 능)

NULL: 아직알려지지않은속성

 

 

설계명세서

 

python자료혀 2가리로 나눈다.

스칼라 여러개 만들 수 있다. 정수

컬렉션 리스트 , tuple,set, dict  class

class 사용자 정의

 

byte

한글이10자리면 10*3

2000byte까지 밖에 못쓴다.

number 최고 38

number(5) 숫자 5자리

number(5,2) 숫자 5자리 까지고 소수점은 2자리 까지

rowid는 저장도 만들지도 못한다.

lob가 중요해지고 있다. 파일의내용 ,음성데이터 , 이미지 등

 

lob large object binary

=>바이트 배열을 저장하기 위한 자료형

=>일반적으로 파일의 내용을 저장

bit :0 1 둘중에 하나 저정 컴퓨터에서 데이터를 저장하는 최소단위

  컴퓨터는 bit단위로 저장을 못한다. 컴퓨터는 볼 수 있다.

byte : 8bit 컴퓨터의 저장단위

           A  B C ->BIT로 저장 못한다.

           2 7 bit  128->asc ii

0 5자리 ->대문자

1 5자리 ->소문자

코드는 분류까지 하면 좋다.

짝수는 반 쪼갤수 있어서 안정적이겠다.해서 8

한글은 완성형 데이터 자음 , 모음 ,받침 문법적으로 구분이 불가하다.

쓴과 동시에 입력이 안된다.

한글은 더 많은 byte가 필요하다.

위에것은 물리적 단위이다.

word는 운영체제 또는 hw가 한번에 데이터를 움직이는 단위

32bit / 64bit단위로 움직이겠다. 이것이 word

32bit  x86 64bit에 깔린다.

64bit 32bit에 안된다.

kb

mb

gb

tb

 

 

img.png 10m

->파일 파일의 이름을 db에 저장소

                       용량이 조금 밖에 안된다.

                       데이터베이스의 용량을 줄일 수 있다.

단점 : 파일의 용량이 현재 컴퓨터의 용량을 넘었을때 위치 옮기면 이름을 다 바꿔야 한다.

확장면에서 단점이 있다.

        ->파일의 내용을 저장(lob)

이사갈때 들고 가면 된다. 이름 바꿀 필요 없다.

확장이나 할경우 좋다.

데이터웨어하우스 ->빅데이터 ->용량

è  velocity

blob, clob ->인덱스 설정이 안된다 빨리 조회할 수 없다.

blob ->파일의 내용을 저장

clog->많은 양의 텍스트 저장

 

 

char & varchar2

char ->고정

varchar2 ->가변

char(10) –영문 10글자 까지 저장

장점:

varchar2(10) 10자까지 가능하다. ->공간 절약한다.

데이터가 변경 가능하다면

hi ->hello

varchar2일 경우 공간확보 다시 해야 한다.

여분의 공간이 없을 경우 옮겨야 한다.

공간측면에서

뒤에 빈칸이 없어서 행이 이사를 가야 한다.  row migration

내가 주로 하는 작업이 read 이나 insert,update, delete

분석은 read가 많다. ->varchar2  :id

일반 응용프로그램은 insert,update, delete ->char ->item , level

오버헤드(overhead) 어떤 처리를 하기 위해 들어가는 간접적인 처리 시간 · 메모리 등을 말한다.

trim을 무조건 생각해야 한다.

문자비교 : 앞뒤  공백

             대소문자

테이블 생성

create table 테이블이름(

           열 이름 자료형,

           열 이름 자료형,....)

문자열 – char(크기-고정), varchar2(크기-가변),clob-많은 문자열:1000자 이상

변경이 자주 일어나는 문자열은 char

변경이 거의 없으면 varchar2

 

숫자 –number(자릿수 ,소수 자릿수) : 소수 자릿수를 생략하면 정수만 입력가능

날짜및 시간 –date

 

파일의 내용 –blob

 

 

=:>회원정보 테이블

테이블 이름 – member

저장할 데이터:

이메일  변하지 않는 100varchar2(100)

이름 :변하지 않는 문자열 한글 10자 이내 varchar2(30)

비밀번호 자주 변하는 문자열 영문과 숫자 15자 이내 char(15)

나이 정수 3자리 이내 number(3)

회원가입일 날짜

마지막 로그인 날짜 날짜

 

**기존 테이블을 가지고 테이블 만들기

CREATE TABLE 테이블이름

AS

SELECT 구문:

 

=>select 구문의 결과를 가지고 테이블을 생성

=>구조만 복사하고자 하는 경우에는 절대 true 나올 없는 조건을 select where절에 대입하면 됩니다.

login 만들떄 주의

 

1.  emp테이블의 모든 내용을 복사해서 새로운 테이블을 생성

=>emp01테이블

CREATE TABLE EMP01

AS

SELECT *

FROM EMP e;

 

=>확인

SELECT *

FROM EMP01;

 

 

2.     emp테이블의 구조만 복사해서 테이블을 생성

=>emp02

CREATE TABLE EMP02

AS

SELECT *

FROM EMP e

WHERE 0 = 1;

 

=>확인

SELECT *

FROM EMP02;

 

1=1이다. 무조건 참이다.

아이디와 비밀번호 참이여야 한다.

SELECT *

FROM MEMBER

WHERE ID = ?

AND PW = ?

ID 없다.

비밀번호는 X

거짓이다. OR 1=1

SELECT *

FROM MEMBER

WHERE ID = ?

AND PW = ? OR 1=1         =>TRUE

OR 하나 TRUE이라도 TRUE 된다.

 

=>로그인을 구현할 떄는 id 가지고 비밀번호를 가져와서 다시 비교하도록 만들거나 아이디와 비밀번호를 입력할 sql 예약어를 사용하지 못하도록 해야 합니다.

 

select *

from member

where id = ?

 

프로그램에서 비밀번호를 비교

 

 

**테이블 수정

1.열을 추가

=>열을 추가하거나 열을 변경하거나 삭제하는 작업

alter table 테이블이름

add(열이름 자료형);

=>emp02 테이블에 전화번호 열을 추기

전화번호는 문자 1자리 자주 변경될 것 같은데 자릿수는 변화가 없습니다.

=>자리수 변화가 없을떄 varchar2해도 문제 없다.

alter table emp02

add(phone varchar2(11));

 

2.열 수정

alter table 테이블 이름

modify(열 이름 자료형):

=>자료형 자체를 변경하거나 길이를 줄이는 것은 고려해봐야 할 내용이 있습니다.

기존데이터가 소멸 될 수 있기 때문입니다.

emp02테이블에서 phone컬럼의 자료형을 varchar2(12)로 변경

작게는 할 때 조심해야 한다. 크게 하는 것이 좋다.

alter table emp02

modify (phone varchar2(12));

 

=>확인

SELECT *

FROM EMP02;

 

 

3. 삭제

alter table 테이블이름

drop column 열이름:

=>살제는 실패 경우가 있다. 열이름을 정확하게 입력했는데 삭제되지 않는 경우는 다른 테이블에서 열을 참조하는 경우입니다.

이를 때는 자식 테이블의 데이터를 삭제하고 삭제해야 합니다.

:외래키

 

=>emp02테이블의 phone 열을 삭제

alter table emp02

drop column phone;

 

=>확인

SELECT *

FROM EMP02;

 

3.  set unused

=>데이터베이스 테이블은 구조를 변경하거나 삭제할 그리고 데이터를 추가하거나 갱신 또는 제거할 lock 걸고 수행합니다.

lock 걸려 있으면 select 제외한 다른 작업은 수행 없습니다.

 

=>대량의 데이터가 저장된 상태에서 열을 삭제 하게 되면 열이 전부 삭제 될때 까지 lock 걸려서 다른 작업을 못하게 합니다.

 

=>열을 삭제할 바로 삭제하는 것이 아니고 사용을 못하게 시간 여유가 삭제하는 것이 효율적입니다.

alter table 테이블이름

set unused(열이름):

 

명령을 수행하게 되면 열을 사용 못함

alter table 테이블이름

drop unused columns;

 

명령으로 사용 금지 열을 삭제합니다.

 

 

4.  테이블을 제거

drop table 테이블이름:

=>테이블이 존재하는데 명령이 실패하는 경우는 중에 하나 이상을 테이블을 참조하는 경우 입니다.

 

 

=>emp테이블 제거

drop table emp02;

 

=>확인

SELECT *

FROM EMP02;

테이블이 존재하지 않는다고 에러가 발생

# ORA-00942: table or view does not exist

 

 

**테이블의 데이터만 삭제

truncate table 테이블이름;

=>개발을 종료하고 서비스 하기 전에 배포할 주로 이용

 

 

**테이블의 이름 변경

rename 예전이름 to 새로운이름;

 

 

**ddl(data definition language)

=>데이터 구조에 관련된 명령어

=>create, alter, drop , truncate, rename

 

**dml(데이터 조작 언어 작업의 단위가 테이블이 아니고 테이블 안의 데이터)

data manipulation language

=>데이터 삽입,갱신,삭제하는 명령어

 

1. 데이터 삽입

insert into 테이블이름( 이름 나열)

values( 이름에 해당하는 데이터 나열);

 

=> 개수에 맞게 데이터를 나열해야 하고 자료형도 일치해야 합니다.

values 앞에 공백이 있어야 합니다.

바꾸기 경우 공백을 조심해야 한다. sql예약어는 공백 하나씩 여야 한다.

옆으로 한줄 쓰면 된다.

 

=>dept테이블에 deptno 99이고 dname 비서 loc 서울인 데이터를 삽입

INSERT INTO DEPT(deptno,DNAME,LOC)

values(99,'비서','서울');

 

=>sql 다른 editor 작성한 복사를 때는 작은 따옴표는 확인

power poin 같은 프로그램에서의 다른 형태로 만들어져서 에러가 발생할 있습니다.

INSERT INTO DEPT(deptno,DNAME,LOC)

values(99,'비서','서울');

 

COMMIT;

 

SELECT *

FROM DEPT d;

 

--loc컬럼의 길이는 13인데 한글 5글자를 입력해서 15byte 되서 삽입 실패

INSERT INTO DEPT(deptno,DNAME,LOC)

values(99,'비서','서울특별시');

 ORA-12899: value too large for column "SCOTT"."DEPT"."LOC" (actual: 15, maximum: 13)

 

 

=>데이터를 삽입할 컬럼 이름 생략 가능

데이블의 구조에 맞게 모든 데이터를 순서대로 전부 입력하는 경우에만 가능

 

 

insert into dept

values(88,'총무','마산');

 

 

=>null삽입

명시적으로 값을 null이라고 설정해도 되고 기본값이 설정되지 않은 컬럼은 생략하고 대입

insert into dept

values(87,'영업',null);

 

insert into dept(deptno,dname)

values(86,'회계');

=> 경우에는 loc 기본값이 설정되지 않은 경우에 null 대입되고 기본값이 설정되어 있으면 기본값이 대입됩니다.

 

조회한 결과(select구분의 결과) 삽입 가능

insert into 테이블이름(컬럼 이름 나열)

select 구문 ;

=>select구문의 결과와 컬럼 이름들이 자료형이 일치하고 개수가 같으면 조회한 결과가 삽입

 

실습을 위해서  dept테이블의 구조를 그대로 같는  dept01 테이블을 생성

 

dept테이블에서 deptno 50이상인 데이터만 dept01 복사

 

INSERT INTO dept01

SELECT *

FROM DEPT d

WHERE deptno >= 50;

 

COMMIT;

 

 

=>확인

SELECT *

FROM DEPT01;

 

=>하나의 테이블에서 조회한 내용을 2 이상의 테이블에 삽입 가능

조회한 내용의 이름과 삽입하고자 하는 테이블의 이름이 일치해야만 가능

insert all

insert into 테이블이름(컬럼이름 나열)

insert into 테이블이름(컬럼이름 나열)

---

select 구문

 

2.데이터 수정

update 테이블이름

set 수정할 이름 = 수정할 내용

[where 조건]

=>where 절은 생략 있는데 생략되면 테이블의 모든 데이터가 수정됩니다.

=>삽입과 다르게 수정이나 삭제는 문법적으로 이상이 없는데도 1개도 수정되거나 삭제되지 않을 있습니다.

삽입은 데이터에 생기지 변화가 생기지 않는다면 실패

수정이나 삭제는 where절이 있기 때문에 조건에 맞는 데이터가 1개도 없으면 수정이나 삭제는 수행되지 않습니다.

select :데이터가 리턴 ->fetched

select 이외 :영향받은 행의 개수 리턴 ->1 row 영향받은 행의 개수

0 실패가 아니고 조건에 맞다.

insert 1이상이야 성공

delete,update 0 이상이여야 성공

 

#DEPTNO테이블에서 DEPTNO 88이상인 데이터만 DEPTNO값을 1증가

 

=>set절에 여러개의 컬럼의 값을 수정하는 것이 가능

, 구분해서 여러개 설정

dept01테이블에서 deptno 86 데이터의 dname SI loc 홍대로 변경

UPDATE DEPT01

set dname = 'SI', LOC = '홍대'

WHERE DEPTNO = 86;

 

 

 

3. 데이터 삭제

DELETE FROM 테이블이름

[WHERE 조건]

ð  데이터베이스 종류에 따라 FROM 생략

ð  조건이 없으면 테이블의 모든 데이터를 삭제

ð  조건에 맞는 데이터가 있는데도 삭제가 안되는 경우가 있는데 다른 테이블에서 데이터를 참조하는 경우입니다.

=> dept01테이블에서 deptno 40이상인 데이터만 삭제

DELETE FROM dept01

WHERE deptno >= 40;

 

 

 

**테이블 merge

=>2개의 테이블의 데이터를 비교해서 없는 데이터는 추가하고 존재하는 데이터는 갱신하는 작업

=>코드 관리 사이트 등을 만들 기존 데이터를 업데이트 하는 용도로 사용

MERGE INTO 기본 테이블 이름

USING 업데이트 데이터를 가진 테이블 이름

ON(어떤 값이 같으면 동일한 데이터로 취급할 것인지 조건을 기술)

WHEN MATCHED THEN

UPDATE SET

기본테이블의 컬럼 이름 = 업데이트 데이터의 테이블이름.컬럼이름,

업데이트 컬럼 동일한 방식으로 나열 

WHEN NOT MATCHED THEN

INSERT VALUES(업데이트 데이터를 가진 테이블 이름.컬럼이름.......)

 

detp01테이블에서 dept테이블에 작성된 데이터를 업데이트

존재하지 않는 데이터는 추가

 

MERGE INTO DEPT01

USING DEPT

ON (DEPT01.DEPTNO = DEPT.DEPTNO)

WHEN MATCHED THEN

UPDATE SET

DEPT01.DNAME = DEPT.DNAME,

DEPT01.LOC = DEPT.LOC

WHEN NOT MATCHED THEN

INSERT VALUES(DEPT.DEPTNO, DEPT.DNAME, DEPT.LOC);

 

덮어서 넣는것을  dump한다.

최신의 것을 업데이트 하고 갱신할

 

 

**tcl(transaction control language –트랜잭션 제어어

=>실무에서는 별도로 구분하는데 데이터베이스 이론에서는 dcl 분류

=>tcl에서는 제어어이기는 하지만 개발자가 주로 사용하기 때문에 별도로 구분

=>이와 비슷한 형태로 이론에서는 insert,delete, update,select dml 분류하지만 실무에서는 insert,delete, update dml그리고  select dql 분류합니다.

dml 데이블에 변화를 가져오지만 select 변화를 가져오지 않습니다.

 

=>transaction:한번에 이루어져야 하는 작업의 논리적인 단위

억지로 번역하면 거래 정도 된다.

1.  트랜잭션의 가져야 하는 성질:ACIT

NO-SQL 것이 거의 없다. 느슨한 TRANSACTION이다.

1)Atomicity(원자성): all or nothing –전부 아니면 전무

2)consistency(일관성): 트랜잭션은 일관성이 있어야 한다.

3).isolation(격리성,독립성):트랜잭션은 독립적으로 수행되어야 한다.다른 트랜잭션의 영향을 받으면 안된다.

4)durability(영속성 ,지속성): 완료된 트랜잭션은 계속되어야 한다. 완료되면 다시 수행하면 안된다.

 

2.  2명의 유저가 있는데 명이 유저의 아이템을 다른 유저가 구매할려고 합니다.

데이터베이스는 4가지 동작이 발생

판매할려고 하는 유저의 금액이 늘어나야 합니다.

판매할려고 하는 유저의 아이템이 소멸되어야 합니다.

구매할려고 하는 유저의 금액이 감소해야 합니다.

구매할려고 하는 유저의 아이템이 추가되어야 합니다.

 

4개의 작업 도중 중간에 장애가 발생하면 어떻게 ?

 

늘어나는 부분을 먼저 한다.

 

3.  트랜잭션 처리 방법

1)  manual commit

==>직접 commt rollback 수행

 2)auto commit

=>하나의 sql문장이 성공하면 자동으로 commit

=>자바나 dbeaver auto commit

4. 트랜잭션 작업 종류

1)commit: 작업이 완료되서 변경된 데이터가 원본 데이터에 반영

2)rollback:변경된 데이터를 삭제 ,원본 데이터에 변경된 내용이 반영이 안됨

3)savepoint:많은 양의 작업을 번에 commit하거나 rollback하면 시스템에 문제가 발생할 있어서 중간 중간 rollback 있는 위치

5. 트랜잭션이 생성

==>새로운 트랜잭션이 없는 상태에서 insert,delete,update 수행해서 성공하면 생성

 

6.  트랜잭션이 완료되서 소멸

==>명시적으로 commit 호출한 경우나 시스템이나 접속도구가 정상 종료된 경우 ddl(create,alter,drop , truncate, rename)이나 dcl(grant,revoke) 정상적으로 수행한 경우는 트랜잭션이 commit되고 소멸됩니다.

==>rollback 호출하거나 시스템이나 접속도구 비정상 종료되면 rollback되고 트랜잭션은 소멸됩니다.

==>rollback to savepoint이름을 입력하면 savepoin이름을 생성한 자리로 rollback됩니다.

 

 

7.  dbeaver 이용해서 실습을 때는 auto commit 해제하고 수행해야 합니다.

toad무료 버전을 사용하면 savepoint 1개만 생성 가능

 

8.  nosql 일반적을 트랜잭션의 개념이 없는 auto commit 형태

 

실습

=>dept테이블의 모든 내용을 복사해서 deptcopy 테이블을 생성

CREATE TABLE deptcopy

AS

SELECT *

FROM dept;

 

=>테이블 생성 확인

SELECT *

FROM deptcopy;

 

 

==>deptcopy테이블의 데이터를 전부 삭제

delete from deptcopy;

 

=> 테이터 확인

SELECT *

FROM deptcopy;

 

 

=>트랜잭션 취소

ROLLBACK;

 

=>테이터 확인

SELECT *

FROM deptcopy;

 

=>deptno 10번인 데이터를 deptcopy테이블에서 삭제

DELETE FROM DEPTCOPY WHERE deptno = 10;

 

=>트랜잭션을 commit하고 완료

commit; -- 이상 복원할 없다.끝났다.

 

=>작업취소인 rollback 수행

rollback;

 

=>테이터 확인

SELECT *

FROM deptcopy;

 

rollback;->copy테이블 복사본의 없앤다.

select *

from deptcopy;

 

commit

하면 copy 있는 것을 deptcopy 덤프하고 완료하면 복사본 버린다.

select *

from deptcopy;

 

 

create, alter, drop, grant, revoke ->성공하면 ->commit;

관리자의 권한으로 생각해서 성공하면 그때 까지 작업은 commit된다고 생각한다.

 

insert,update,delete create, alter, drop, grant, revoke같이 하면 안된다. 일괄 commit되기 때문에

재접속 하는 것은 commit하기 위해서 이다.

commit하지 않으면 제대로 반응이 안되서 이다.

 

savepoint설정해서 rollback to s1

savepoint중간중간에 포인트를 잡고 싶고 데이터가 많을 경우

java ,python등으로 savepoint한다.

 

트랜잭션은 서비스 쪽에서 여러개 sql묶어서 만드는 경우가 많다.

어떤 서비스에 건다.

 

 

**save point   auto commit

=>실습을 위해서  emp테이블의 모든 데이터를 가지고 있는 empcopy테이블을 생성

create table empcopy

as

select *

from emp;

 

=>테이블이 제대로 생성되고 데이터가 어떤 것들이 있는지 확인

select *

from empcopy;

 

--empno 7369 데이터를 empcopy테이블에서 삭제

DELETE FROM EMPCOPY

WHERE empno = '7369';

 

--emp테이블의 데이터를 복사해서 empcopy1이라는 테이블을 생성

create table empcopy1

as

select *

from emp;

 

--이전에 데이터 삭제 구문을 잘못 같아서 rollback 수행

ROLLBACK;

 

 commit 했는데도 불구하고 create 해서 자동 커밋됬다.

=>create 구문을 수행해서 commit 수행합니다.

삭제된 데이터가 복원되지 않습니다.

 

 

=>create, alter, drop, grant, revoke 성공적으로 수행하면 자동으로 commit됩니다.

insert,delete,update 수행하는 애플리케이션과 ddl또는 dcl 수행하는 애플리케이션을 하나로 만들지는 않는 것을 권장합니다.

 

=>데이터를 조작하는 애플리케이션에서 commit이나 rollback만을 사용하게 되면 거래 별로 commit 하게 되면 commit 너무 자주 수행해서 데이터베이스 성능을 떨어뜨리게 되고 마지막에 한번만 commit하는 형태로 만들면 거래가 잘못 경우 rollback해야 하는 거래가 너무 많아집니다.

MMORPG서버나 금융 거래 서버는 1초에도 수십번의 거래가 이루어집니다.

경우 잘못되서 ROLLBACK 하게 되면 너무 많은 거래가 취소됩니다.

이런 경우에는 일정한 시간 또는 거래의 개수만다 ROLLBACK 있는 지점을 생성할 있습니다.

ROLLBACK 있는 지점을 SAVEPOINT라고 합니다.

중간에 SAVEPOINT 이름; 삽입하면 SAVEPOINT 만들어 집니다.

SAVEPOINT ROLLBACK 때는 ROLLBACK TO 이름;으로 합니다.

 

==>empcopy테이블에서 empno 7499 데이터를 삭제

DELETE FROM EMPCOPY

WHERE empno = '7499';

 

--SAVEPOINT 생성

SAVEPOINT s1;

 

--empcopy테이블에서 empno 7521 데이터의  ename 태연으로 수정

UPDATE EMPCOPY

SET ename = '태연'

WHERE empno = 7521;

 

--SAVEPOINT 생성

SAVEPOINT s2;

 

--empcopy테이블에서 empno 7788 데이터를 삭제

DELETE FROM EMPCOPY

WHERE empno = 7788;

 

--empcopy테이블의 현재 상태를 확인

SELECT * FROM EMPCOPY;

 

=>현재 상태가  데이터가 11 7521데이터의 ename 태연으로 설정

 

ROLLBACK TO s2;

-- 명령을 수행하게 되면 s2 만든 위치로 데이터를 되돌립니다.

--empno 7788 데이터가 복구

SELECT *

FROM EMPCOPY;

 

 

ROLLBACK TO s1;

-- 명령을 수행한 위치로 데이터를 되돌립니다.

-- 후에 만든 savepoint 모두 소멸됩니다. s2 s1후에 만들어서 s2 안된다.

--rollback to s2;-> 명령은 에러가 된다.

--SAVEPOINT신중해서 해야 한다.

rollback to s2;--ORA-01086: savepoint 'S2' never established in this session or is invalid

 

프로그램에서의 session 접속하면 session 생긴다.

 

개발자:select->insert,delete,update->commit,rollback->create,alter,drop

운영자 관리자:create,alter,drop ->grant,revoke->commit,rollback->insert,delete,update,select

dba system운영자는 봐야 한다.

분석가:select

 

plsql 오라클에서 사용한다.

관계형에서는 create할때 자료형이 다르다.

sqllite char, text ->용도 : 서버구축은 안한다.

       서버에 데이터가 있고

                 임시정보 저장(실데이터가 아니라 )

       device(browser,smartphone)

앱에다 sqllite 저장하다가 지움은 날아간다.

item사면 임시데이터를 device 저장한다.

서버 갔다왔다하면 트래픽생겨서 줄이기 위해서 sqllite 저장한다.

대표적인 것은 : 메일 이다.

에서  접속하면 댕길떄 변경된 것만 가져온다.

iot 이런것은 sqllite하면 된다.

센서가지고 데이터 수집을 sqllite 사용

용도가 넓어진다.

추세가 데이터가 발생한 곳에서 분석하자.

처리방식이나 구현 방식에서 문제가 있다.

서버에서 하면 보안문제가 있다.

데이터 넣고 뺴는 조회등은 되는데

옵션 선택하는 것은 안된다.

sqllite 복잡한 기능은 가지고 있지 않다.

반응형

'Study > DB' 카테고리의 다른 글

DB-6  (0) 2020.09.18
DB-5  (0) 2020.09.17
DB-4  (0) 2020.09.15
DB-2  (0) 2020.09.13
DB-1  (0) 2020.09.13

+ Recent posts