본문 바로가기
Server

9. 로그인(3)

by Doromi 2018. 1. 11.
728x90
반응형

4-2-5. ETS와 Dets

 

ETS는 얼랭에 내장된 메모리 데이터베이스 (Erlang Term Storage)

Dets는 Disk ETS라고 생각하면 된다.

ETS 기능을 파일 베이스로 만든 버전이 Dets

ETS는 메모리에 데이터를 저장하기 때문에 서버가 꺼지면 데이터가 소멸되지만 Dets는 파일에

저장하기 때문에 데이터이 분실 위험은 사라진다. 하지만 속도가 느리고 용량도 제한적이다.

 

지금은 ETS를 이용해서 유저의 아이디와 패스워드를 저장해보겠다.

 

ETS의 모든 기능은 ets 모듈에 BIFs로 구현되어 있다.

BIFs는 얼랭 VM 내부에 내장된 함수들을 의미한다.

얼랭 모듈이지만 C언어로 작성되어 있어 속도가 빠르다.

 

ETS에 데이터를 저장하기 위해서는 먼저 테이블을 생성해야 한다.

테이블에는 얼랭의 튜플 형식만 저장할 수 있으며, 튜플에는 어떤 값이 들어가든 상관이 없다.

 

ETS 테이블 타입

set : 테이블에 오직 하나의 key에 대한 object만 허용

ordered_set : set과 마찬가지지만, 테이블의 데이터들이 입력될 때 정렬됨, 알고리즘 성능 logn정도

bag : key에 대해서 중복 데이터 가능,하지만 동일한 데이터 입력시 무시

duplicate_bag : key에 대해서 중복 데이터 가능, 동일한 데이터가 들어와도 입력이 가능

 

기본 설정은 set이다.

 

ETS 테이블의 생성은 mon_app module에 작성하도록 한다.

테이블 이름은 users_list로 한다.

 

mon_app.erl 부분에 ETS table 생성 부분 추가

 

mon_http.erl 코드에 회원가입 부분 작성

 

id와 password를 바로 받아서 users_list 테이블에 저장한다.

 

curl 테스트 해보면 정상적으로 동작한다.

 

 

ets:lookup()으로 확인해 보면 제대로 입력된 것을 확인할 수 있다.

 

 

ets:i() 함수는 서버에 생성된 전체 ETS 테이블 리스트를 보여준다.

 

밑에 users_list 테이블이 생성되어 있는 것을 확인할 수 있다.

 

 

 

 

 

 

 

 

입력된 id,password값 이용해서 로그인 할 수 있도록 로그인 함수 부분도 수정한다.

mon_http.erl 수정

 

 

 

 

 

가입 명령어에서 id 중복 확인 기능이 빠져 있다.

id 중복 확인을 하려면 ets:insert() 대신에 ets:insert_new() 함수를 사용하면 된다.

insert_new() 함수는 insert와 기능이 동일하지만 중복 key가 존재할 때 데이터를 덮어쓰는 대신 false 리턴한다.

 

id 중복 확인 기능을 추가한

mon_http.erl 코드이다.

 

 

 

 

 

이렇게 nox로 apk 파일 다운 받아서 로그인까지 되는 것을 확인할 수 있다.

 

 

728x90
반응형

'Server' 카테고리의 다른 글

11. 데이터베이스(2)  (0) 2018.01.13
10. 데이터베이스(1)  (0) 2018.01.12
8. 로그인(2)  (0) 2018.01.11
7. 로그인(1)  (0) 2018.01.10
6.기본 모바일 서버 만들기(2)  (0) 2018.01.10