2011-08-07 2 views
0

모바일 앱을 만들고 서버 (JSON)로부터받는 데이터를 최적화하고 싶습니다. 3 개의 목록이 반환됩니다. 각 목록에는 고유 한 클래스의 개체가 포함되어 있으며 대략적인 목록 크기는 50, 100 및 170입니다. 각 객체에는 Guid ID가 있으며 각 객체에 대한 관계 데이터가 있습니다. 예컨대 :작은 데이터 세트로 해싱하여 가이드 압축

o = { Id = "8f088552-5b24-4ba4-a6e5-8958c4353581", 
     RelatedIds = ["19d2e562-0874-473f-8e05-7052e8defd9a", "615b4c47-199a-4f7d-8268-08ed43d9c891", ... ] } 

신원 맵을 저장하지 않고 뭔가 분류기에이 GUID를 압축하는 방법이 있나요? 아마도 해시 함수를 사용하고 있을까요?

답변

0

아니요. (암호화되지 않은) 해시의 속성 중 하나는 hash(a) == hash(b)이지만 a != b과 충돌한다는 것입니다. 이들은 평등성 검사를 많이하고 많은 거짓 결과가 예상되는 경우 성능 최적화입니다 (hash(a) != hash(b), a != b). GUID-> 카운터 맵은 아마도 작은 ID를 가져 오는 가장 좋은 방법 일 것입니다.

+0

암호화 해시도 충돌합니다. – Iridium

+0

이론적으로. 규칙적인 해시는 지속적으로 실제로 충돌합니다. –

0

GUID의 16 바이트 표현을 Base 64 문자열로 변환 할 수 있습니다. 그러나 프로그래밍 언어는 언급하지 않았으므로 더 이상 지원할 수 없습니다.

해시 함수는 일반적으로 손실이 크기 때문에 해시 함수는 권장되지 않습니다.

0

16 진수 (base16)를 base64로 변환하고 모든 구두점을 제거 할 수 있습니다. base64를 사용하면 25 %, 구두점을 사용할 때는 4 바이트를 절약해야합니다.

0

HTTP 압축 (활성화 된 경우)이 데이터를 충분히 압축 할 것이라는 것을 알았 기 때문에 수동으로 데이터를 압축 할 필요가 없습니다.