프로그래밍 정리/Ubuntu - C

[Ubuntu - 우분투 - C] 데이터베이스 어플리케이션 - sqlite, sql, locate, sqlite3

주누다 2015. 5. 22. 00:45
반응형

데이터베이스 어플리케이션

- 데이터베이스를 이용하면 어플리케이션과 데이터를 분리해서 관리할 수 있다는 장점이 있음




데이터베이스 이용의 장점

- 분리 독립

 * 처리와 데이터를 분리해 독립적으로 사용

 * 그 결과 데이터와 어플리케이션의 보수가 쉬어짐


- 일원적 관리

 * 데이터를 데이터베이스에 집중시켜 모든 데이터를 일원적으로 관리 할 수 있음


- 공유

 * 데이터베이스는 어플리케이션과 분리해서 다룸

 * 여러 어플리케이션에서 액세스 할 수 있음

 * 그 어플리케이션에서 데이터를 공유할 수 있음


- 연관성

 * 관계형 데이터베이스에서는 데이터 간의 연관성이 중시되므로

  다양한 데이터를 연관지어 저장할 수 있음


- 제약조건

 * 등록할 데이터에 제약조건을 붙일 수 있음

 * 등록 시에 제약을 충족하는 데이터만 저장할 수 있음


- 정합성

 * 이상한 데이터를 사전에 제거하거나 데이터형을 검사하고

  배타제어로 데이터 간의 모순을 제어해 전체 데이터의 일관성을 유지할 수 있음


- 동시 액세스

 * 복수의 데이터 액세스를 동시에 처리하는 구조

 * 필요에 따라 배타제어해서 데이터 간에 모순되는 상태가 일어나지 않게 함


- 보안

 * 데이터 액세스의 제어 구조로 데이터 보안성을 구현

 * 데이터의 보안을 확보하기 쉬워짐


- 안전성

 * 데이터를 안전하게 저장할 수 있음

 * 만일 시스템 오류 등으로 데이터를 유실해도 피해를 최소한으로 줄일 수 있는 백업이나 롤백 시스템이 있음

 




 DBMS

- 데이터베이스의 다양한 기능을 구현하는 데이터베이스 관리 시스템

- DBMS는 데이터베이스를 운영, 관리하고 데이터의 액세스 요구에 대응해 적절한 데이터를 반환하는 시스템

- DBMS의 주요 기능으로 트랜잭센 관리에 따른 데이터의 일관성 유지, 데이터 제약 구현,

  동시 실행 제어, 백업 및 롤백에 의한 장해 복구 기능 등이 있음

- DBMS의 종류에는 네트워크형, 계층형, 객체지향형, XML형 등이 있음

- 관계형 데이터베이스에서는 데이터를 표형식으로 나타내므로 직관적으로 이해하기 쉽다는 특징이 있음




SQL

- SQL( Structured Query Language )

- SQL은 ANSI와 ISO에 규격화된 표준 언어


DDL

- Data Definition Language

- 데이터 구조를 정의하는 명령을 중심으로 한 데이터 정의 언어


DML

- Data Manpulation Language

- 데이터 자체의 참조나 변경 등 데이터베이스 액세스 명령 집합인 데이터 조작 언어


DCL

- Data Control Language

- 데이터 액세스를 제어하는 데이터 제어 언어





대표적인 SQL 문

 SQL

 의미

CREATE

데이터베이스와 테이블을 작성

ALTER

데이터베이스와 테이블의 정의를 변경

DROP

데이터베이스와 테이블을 삭제함

SELECT

테이블에서 데이터를 선택함

INSERT

테이블에 데이터를 삽입함

UPDATE

테이블에 데이터를 갱신함

DELETE

테이블에서 데이터를 삭제함

GRAND

데이터베이스 이용자에게 권한을 부여함




 SQLite의 특징

- 일반적인 RDBMS와 달리 SQLite는 클라이언트-서버 형식으로 데이터베이스에 액세스하지 않음

- 데이터베이스에 액세스하는 방법은 라이브러리로 제공, 프로그램에 내장해 이용하는 형식

- SQL 표준을 모두 지원

- 바이트 오더에 의존하지 않는 스토리지를 사용해 아키텍처에 의존하지 않음

- 네이티브 코드로 직접 실행해 동작이 빠름.

- 작은 데이터를 보존할 때나 어플리케이션의 설정 항목에서 데이터로 저장해두는 상황에 쓰기 편리한 데이터베이스를 제공





 locate 명령

- '.db' 라는 확장자를 가진 파일을 선택(`locate .db`;)

- 파일의 종류를 file 명령으로 조사(do file $f; done)

- 조사한 것중 SQLite 3.X의 데이터베이스 파일을 추출( | grep "SQLite 3.x database")


[ 00:41:20 | ~/linux_ex_c/ch7/list0823 ] $ for f in `locate .db`; do file $f; done | grep "SQLite 3.x database"
/home/sjw/.cache/webkit/icondatabase/WebpageIcons.db: SQLite 3.x database
/home/sjw/.config/libaccounts-glib/accounts.db: SQLite 3.x database, user version 1
/home/sjw/.local/share/unity-webapps/availableapps-v2.db: SQLite 3.x database
/usr/share/ibus-pinyin/db/english.db: SQLite 3.x database
/usr/share/pyzy/db/android.db: SQLite 3.x database
/usr/share/pyzy/db/open-phrase.db: SQLite 3.x database
/var/lib/colord/mapping.db: SQLite 3.x database
/var/lib/colord/storage.db: SQLite 3.x database
/var/lib/nssdb/cert9.db: SQLite 3.x database
/var/lib/nssdb/key4.db: SQLite 3.x database
[ 00:41:34 | ~/linux_ex_c/ch7/list0823 ] $




역따옴표와 for 문의 조합  

- 명령줄에 나열된 스크립트전체를 평가하기전에 역따옴표로 에워싼 부분이 먼저 평가

- 확장자가 '.db' 인 파일이 모두 추출되고, 그 파일을 대상으로 for 문이 반복되는것




SQLite 개발 패키지 설치

- SQLite를 이용하려면 'libsqlite3-dev' 패키지가 필요

- sudo apt-get install libsqlite3-dev

- 'pkg-config' 에서 이용할 설정 파일 '/usr/lib/pkgconfig/sliqte3.pc' 와 관련 도규먼트도 동시에 설치돼 이용 가능





반응형