본문 바로가기
Language/Scala

couchbase와 같은 키/벨류의 key design??

by 태하팍 2016. 4. 15.
반응형




오픈소스로 키/벨류의 형태의 스토리지들이 많이 있다. Redis나 couchbase등이 그 예이다. 

이러한 스토리지들에 저장을할 때 고려사항으로 key를 어떤식으로 만들어야할 지 고민이 되어진다.

왜냐하면 이러한 key들은 한정되어진 범위를 가지고 있다. couchbase의 경우는 250byte로 제한을 둔다. 

또한 이러한 key들의 무결성을 보장되어야 한다. 그렇지 않으면 데이터의 유실이 발생할 수가 있다.

그래서 생각했던 것이 Hash였다. 그러나 자바진형의 String에서 제공되어지는 Hash는 중복의 염려가 있다고 한다.

그래서 SHA-1 + Base64 Encoding(urlSafe)를 선택 하였다.

아래는 스칼라 코드이며 해당 키는 아래의 소스를 통해 "IbDNShu-PGxJtnsUVuDJLv-aJoU=" 이러한 형태로 키가 만들어진다. goood~


build.sbt에는 아래와 같이 dependencies를 추가!

libraryDependencies ++= Seq(

   "me.lessis" %% "base64" % "0.2.0"

) 


import~~

import base64.Encode 


SHA-1 + Base64 Encoding(urlSafe)

val md = java.security.MessageDigest.getInstance("SHA-1")

val keyword = {

  new String(Encode.urlSafe(md.digest("스트링~~".getBytes)))

} 


- END -


반응형

'Language > Scala' 카테고리의 다른 글

(기초) 스칼라 데이터 구조(컬렉션)  (0) 2016.03.25
(기초) 스칼라 문법  (0) 2016.03.25