본문 바로가기

Javascript

JS uuid

uuid

 

xxxxxxxx-xxxx-Mxxx-Nxxx-xxxxxxxxxxxx 형식으로 32자 이상이여야함

UUID의 장점 중, 데이터들이 나중에 단일 DB로 통합되거나, 같은 채널에서 전송되더라도 식별자가 중복될 확률이 매우 낮다는 점이 있었다

  • Database에 데이터를 저장할 때, 데이터 식별을 위해 Primary Key를 사용하고 있다
  • Primary Key는 성능적 이점을 위해 Int Data type과 ID라는 이름을 사용하였다
  • 이때 uuid 사용함
  • UUID의 고유성은 중앙 등록 기관(예를 들면 데이터베이스 서버) 등에 의존되지 않고, standard method를 통해 독립적으로 생성 가능
  • 별도로 분리되어 있던 데이터들을 통합하거나, 하나의 채널에서 전송하더라도 충돌이 발생하지 않는다
  • UUID는 널리 채택되어 있고 많은 컴퓨팅 플랫폼들에서 UUID 생성, 파싱을 지원하고 있음

UUID 생성방법

1.

function uuidv4() {

   return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {

   var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8); return v.toString(16);

   });

}

console.log(uuidv4());

2.

function uuidv4() {

   return ([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g, c =>

   (c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16)

  );

}

console.log(uuidv4());

3.

function generateUUID() { // Public Domain/MIT

    var d = new Date().getTime();//Timestamp

    var d2 = (performance && performance.now && (performance.now()*1000)) || 0;//Time in microseconds since           page-load or 0 if unsupported

    return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {

          var r = Math.random() * 16; //random number between 0 and 16

          if(d > 0){//Use timestamp until depleted

                   r = (d + r)%16 | 0;

                   d = Math.floor(d/16);

           } else {//Use microseconds since page-load if supported

                  r = (d2 + r)%16 | 0;

                 d2 = Math.floor(d2/16);

           }

            return (c === 'x' ? r : (r & 0x3 | 0x8)).toString(16);

           });

}

console.log(generateUUID())

'Javascript' 카테고리의 다른 글

JS get/post  (0) 2020.08.17
JS setTimeout setInterval  (0) 2020.08.16
JS JSON parser JSON .parse & JSON.stringify  (0) 2020.08.14
JS window 객체  (0) 2020.08.11
JS 함수객체, 인자  (0) 2020.08.09