[DB] SQLite란? soul 사용법 및 예제

Sungjin Cho·2024년 7월 22일

DB

목록 보기
2/3
post-thumbnail

SQLite의 특징

  • SQLite는 내장형 오픈소스 데이터베이스이다.
  • C언어로 작성되었으며 표준 SQL 쿼리를 지원한다.
  • 작은 용량부터 대용량 데이터까지 빠르고 안정적으로 처리할 수 있다.
  • 이식성이 뛰어나 거의 모든 환경에서 실행 가능하다.
  • 단일 바이너리 파일로 구성되어 배포와 관리가 용이하다.
  • 각 데이터베이스가 하나의 파일로 구성되어 백업과 이동이 편리하다.
  • 적은 수의 데이터 형식을 다루거나 간단한 데이터 검증이 필요한 경우에 적합하다.
  • 동시 사용자가 한 명인 데스크톱 또는 모바일 애플리케이션에 최적화되어 있다.

POS 시스템에서 SQLite를 사용하는 이유

  • 로컬 환경에서 빠르고 안정적인 데이터 처리가 가능하다.
  • 단일 파일 구조로 백업과 관리가 용이하다.
  • 라이센스 비용 없이 사용할 수 있는 오픈소스이다.
  • POS 시스템이 단일 사용자 환경이므로 SQLite의 특성과 잘 맞는다.

Soul을 사용한 SQLite 원격 접근 방법

  1. Soul 설치:

    • npm이나 yarn을 사용하여 Soul을 전역으로 설치한다.
    npm install -g soul-cli
  2. 프로젝트 구조 설정:

    • 프로젝트 루트 디렉토리에 '_extensions' 폴더를 생성한다.
    • '_extensions' 폴더 내에 API 정의를 위한 JavaScript 파일(예: api.js)을 생성한다.
  3. API 정의:
    - api.js 파일에 원하는 API 엔드포인트와 해당 핸들러 함수를 정의한다.
    - 각 핸들러 함수는 req(요청), res(응답), db(데이터베이스 연결) 매개변수를 받는다.

    예제
    
    ```jsx

    //api.js
    const getAllOrders = {
    method: 'GET',
    path: '/api/getAllOrders',
    handler: (req, res, db) => {
    try {
    // order_info
    const orderInfoSql = 'SELECT * FROM order_info';
    const orderInfo = db.prepare(orderInfoSql).all();

          // order_item
          const orderItemSql = 'SELECT * FROM order_item';
          const orderItem = db.prepare(orderItemSql).all();
    
          const result = {
            order_info: orderInfo,
            order_item: orderItem,
            message: 'Successfully retrieved all orders',
          };
    
          res.status(200).json(result);
        } catch (error) {
          res.status(500).json({
            error: error.message,
            message: 'Failed to retrieve orders',
          });
        }
      },
    };
    
    module.exports = {
      getAllOrders,
    };
    ```
  4. Soul 실행:

    • 명령 프롬프트에서 다음 명령어를 실행한다.
    soul -d "<SQLite DB 파일 경로>" -p <포트 번호> -e "<extensions 폴더 경로>"
    • 예: soul -d "C:\sqlite\test.db" -p 8000 -e "C:\Users\myname\Desktop\soul_extensions"
  5. API 테스트:

  6. 보안 설정:

    • Soul은 기본적으로 로컬 네트워크에서만 접근 가능하다.
    • 원격 접근이 필요한 경우, 적절한 인증 및 암호화 방식을 구현해야 한다.

이러한 방식으로 Soul을 사용하면 SQLite 데이터베이스에 RESTful API를 통해 원격으로 접근할 수 있으며, 이는 POS 시스템의 데이터를 외부 시스템과 연동하거나 원격 모니터링을 구현할 때 유용하게 활용할 수 있다.

soul github: https://github.com/thevahidal/soul

0개의 댓글