2017-02-15 10 views
1

Postgres 시퀀스 데이터베이스 개체와 비슷한 것을 만들거나 에뮬레이트하기 위해 3rdparty 서비스를 찾고 있습니다.긴 시퀀스 개체 (UUID 아님)를 에뮬레이트하는 서비스/데이터베이스/기술

다음 고유 한 Long 값을 요청할 수 있도록이 스레드 안전 기능이 필요합니다. Spring Boot/Neoj4 애플리케이션 엔티티의 대용 키로이 값을 사용할 것이다.

주요 기준은 속도입니다. 그것은 꽤 빠르며 내구성이 있어야합니다 (메모리뿐만 아니라 충돌 및 재시동 후에 생존하기 위해 HDD에도 지속됨)

또한이 ID를 내에서 노출해야하기 때문에 웹 응용 프로그램의 URL 매개 변수와 UUID의 경우 내 URL은 끔찍해 보입니다. 나는 ID를위한 평범한 Long 값으로 가고 싶다.

내 서버에 설치할 수있는 고유 한 ID가 필요한 데이터베이스/서비스/기술을 제안 해주십시오.

는 내결함성을 구현할 수 업데이트 아파치 사육사 또는 Hazelcast과 AtomicLong 순서 (지속)? 그렇다면이 솔루션을 다운로드하여 사용할 수있는 오픈 소스 구현이 있습니까? 당신은 그냥 숫자를 원하는 경우

+0

저는 이것이 좋은 생각인지 모르겠습니다. 먼저 속도. 유형 1 UUID 생성은 Neo4j 지속성보다 훨씬 빠릅니다. 전체 작업을 고려할 때 오버 헤드는 무시할 수 있습니다. 둘째, 미학. '못생긴'UUID를 피하기 위해 더 많은 움직이는 부분을 가진 기술적 인 솔루션으로 거래 할 생각입니다. 그 실패 모드는 아마도 완전히 이해되지 않고 (Snowcast를 무시하지 않고), Hazelcast 클러스터를 의무화합니다. YMMV,하지만 그건 유혹을받을만한 무역이 아닙니다. – Vince

+0

의견을 보내 주셔서 감사합니다. 글쎄 .. 제 웹 URL에 신뢰할 수있는 긴 값 (예 : StackOverflow 같은)을 얻을 수있는 대체 솔루션을 제안 해 주시겠습니까? – alexanoid

답변

0

, 당신은 왜

(most + least)는 의견의 질문에 따르면 UUID에서 2 개 갈망을 연결하지 않으려는 않았다 예, 연결된 (합산하지!)이에서 값을 전체 길이가 0 인 숫자가 채워진 메소드는 UUID보기와 비슷하므로 UUID과 동일하게 보장됩니다.

+0

답변 해 주셔서 감사합니다. 이것은 매우 흥미로운 아이디어입니다. UUID와 같은 의사 고유성을 보장하고 작동합니까? – alexanoid

+0

불행히도 결과 값도 너무 길어요. 예를 들어 40281202173729666258912159000741813434입니다. AtomicLong에 대해 고유 시퀀스를 신속하게 생성 할 수있는 내결함성 서비스를 찾고 있습니다. – alexanoid

1

Snowflake (https://github.com/twitter/snowflake/releases/tag/snowflake-2010) 또는 스노우 캐스트()와 같은 것이 관심의 대상 일 수 있습니다.

+0

답변 해 주셔서 감사합니다. Snowcast는 매우 흥미로 보이지만이 서비스의 내결함성 부분에 대해서는 명확하지 않습니다. 예를 들어 내 시스템에서는 Sequencer 번호를 잃을 수 없습니다 (예 : Snowcast 충돌 후). Snowcast가 시퀀스 번호가 손실되지 않도록 보장하는 방법은 무엇입니까? – alexanoid

+0

예를 들어, 프로젝트에서 MongoDB를 사용합니다. Snowcast를 내결함성있게 만들기 위해 Hazelcast의 백엔드 데이터 스토리지로 MongoDB를 사용할 수 있습니까? – alexanoid

+0

snowcast는 id 내에서 millis 부분을 사용하므로 오류가 발생하면 동일한 ID를 다시 생성 할 상황에 도달하기 위해 서비스가 동일한 ms 내부로 돌아와야합니다.ID는 NODEID | MILLIS_OF_EPOCH | COUNTER – noctarius