λΆμ° μμ€ν μμ 64λΉνΈ Long νμ μ μ μΌν ID λ₯Ό μμ±ν΄λΌ μ μλ JAVAλ‘ κ°λ°λ ID μμ±κΈ°μ΄λ€.
νΈμν°μμ 2010λ μ λ°νν Snowflake μκ³ λ¦¬μ¦ κΈ°λ°μΌλ‘ κ°λ°νμλ€.
μ€λ Έμ°νλ μ΄ν¬λ 64λΉνΈλ‘ μ΄λ£¨μ΄μ§ IDλ‘, κ°κ°μ λΉνΈλ νΉμ μλ―Έλ₯Ό κ°κ³ μλ€.
첫 λ²μ§Έ λΉνΈλ λΆνΈ λΉνΈμ΄λ€. 0μΌλ‘ μ±μμ ID κ°μ μμλ‘ λ§λ€μ΄μ€λ€. λ€μ 41λΉνΈλ νμμ€ν¬ν λΉνΈμ΄λ€. ID μμ± μμ²μΌμ timestamp μμ κΈ°μ€μκ° timestamp λ₯Ό λΊκ°μ μ μ₯νλ€. κΈ°μ€μκ°μΌλ‘λΆν° 69.73λ λμ κ³ μ ν ID μμ±μ 보μ₯νλ€. λλ¨Έμ§ 10λΉνΈλ μλ²ID λ₯Ό λνλΈλ€. μ΅λ 1024κ°μ λΆμ° μλ²μμ μ¬μ©ν΄λ κ³ μ ν ID μμ±μ 보μ₯νλ€. λλ¨Έμ§ 12λΉνΈλ μνμ€λ₯Ό λνλΈλ€. μ΄λ₯Ό ν΅ν΄ λμΌν millisecondμ μμ²μλ κ³ μ ν ID μμ±μ 보μ₯νλ€.
Snowflake IDμ μ₯μ κ³Ό λ¨μ μ λ€μκ³Ό κ°λ€.
- κ³ μ ν ID μμ±: λΆμ° μμ€ν μμ κ³ μ ν IDλ₯Ό μμ±νκΈ° μν κ°μ₯ μΌλ°μ μΈ λ°©λ² μ€ νλμ΄λ€. μ΄λ₯Ό ν΅ν΄ μ€λ³΅λ IDκ° λ°μνλ κ²μ λ°©μ§ν μ μλ€.
- λμ νμ₯μ±: λΆμ° μμ€ν μμ μ¬μ©νκΈ°μ μ ν©ν μκ³ λ¦¬μ¦μΌλ‘, λκ·λͺ¨ μμ€ν μμλ ν¨κ³Όμ μΌλ‘ μλνλ€.
- κ°λ¨ν μ¬μ©: μ¬μ©νκΈ°μ κ°λ¨νλ€. μλ² μ€ν μ νλμ μΈμ€ν΄μ€λ§ μμ±ν΄λκ³ ID μμ±μ΄ νμν κ³³μμ μ¬μ©νλ©΄ λλ€.
- μμ€ν μκ³μμ μμ‘΄μ±: μμ€ν μ μκ³μ λ°μ ν μ°κ΄μ΄ μλ€. νΉμ μλ²μ μμ€ν μκ³κ° λ€λ₯Έ μλ²λ³΄λ€ λΉ λ₯΄λ€λ©΄, ν΄λΉ μλ²μμ μμ±νλ IDμ νμμ€ν¬νλ νμ λΉ λ₯Ό κ²μ΄λ€.
- νμμ€ν¬ν μ€λ²νλ‘μ°: 41λΉνΈμ νμμ€ν¬νλ₯Ό μ¬μ©νμ¬ IDλ₯Ό μμ±νλ€. μ΄λ¬ν μ΄μ λ‘, μμ€ν μμ μ΄ν 69λ μ΄ μ§λλ©΄ μ€λ²νλ‘μ°κ° λ°μν μ μλ€. μ΄ λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν΄μλ μλ²ID λΉνΈλ₯Ό μ€μ΄κ³ , νμμ€ν¬ν λΉνΈλ₯Ό λ리λ λ°©μμΌλ‘ 보μ κ°λ₯νλ€.
- μ΄κΈ°μ’ ν΅μ μ μ£Όμ : Javascript μ κ°μ΄ λΆλμμμ μ«μ체κ³λ₯Ό μ¬μ©νμ¬ μ μλ₯Ό μ μ₯νλ κ²½μ°, 2μ 53μΉ μ΄μμ μ μλ₯Ό κ·Όμ¬κ°μΌλ‘ μ μ₯νκΈ° λλ¬Έμ μ£Όμκ° νμνλ€. λ¬Έμμ΄λ‘ μ£Όκ³ λ°λ λ±μ μ²λ¦¬λ‘ ν΄κ²° κ°λ₯νλ€.
SnowflakeIdGenerator λ μ¬μ©νλ application μμ singleton instance λ‘ μμ±ν΄μΌ νλ€.
SnowflakeIdGenerator idGenerator = new SnowflakeIdGenerator(0);
idGenerator.nextId();