2012-01-21 2 views
11

먼저 견적을 수 있습니다 : 엔티티의 모든 속성의Azure 테이블 스토리지 행 1MB 제한 정보, UTF8 코드 계산 방법은 무엇입니까?

결합 크기가 1MB의 초과 할 수 없습니다. 이 msdn에서 (행/법인 용)

내 질문

입니다 : 모든 것이 1메가바이트을 위해, 그래서 데이터를 XMLed되기 때문에, 무슨 1MB의, ASCII 숯을 1MB의, 또는 UTF8 숯을 1MB의, 또는 뭔가 그밖에?

샘플 :

Row1: PartitionKey="A', RowKey="A", Data="A" 
Row2: PartitionKey="A', RowKey="A", Data="A" (this is a UTF8 unicode A) 

는 ROW1 및 행 2 같은 (길이) 크기, Row2.Length=Row1.Length+1인가?

+0

내 대답 Row2.Length = Row1.Length + 1 –

답변

12

예제에서 "데이터"와 같은 단일 열은 64KB의 이진 데이터로 제한되며 단일 행은 1MB의 데이터로 제한됩니다. 문자열은 UTF8 형식의 이진 형식으로 인코딩되므로 바이트 크기가 문자열에 맞게 끝나는 한계가 있습니다. 열에 64KB 이상의 데이터를 저장하려면 Lokad (https://github.com/Lokad/lokad-cloud-storage/blob/master/Source/Lokad.Cloud.Storage/Azure/FatEntity.cs)와 함께 제공되는 FAT Entity와 같은 기술을 사용할 수 있습니다. 이 기술은 매우 간단합니다. 문자열을 바이너리로 인코딩 한 다음 여러 열에 바이너리를 분할하면됩니다. 그런 다음 테이블에서 문자열을 읽으려면 열을 다시 조인하고 다시 이진을 문자열로 변환하면됩니다.

+0

ASCII 코드가 1M 문자는 저장할 수 있지만 UTF8 코드는 저장할 수 있다는 것을 의미합니까? –

+3

UTF8 인코딩이 ASCII 인코딩의 두 배 크기 일 필요는 없습니다. 실제로 캐릭터가 0-128의 ASCII 범위에 있으면 인코딩은 같은 크기가됩니다. UTF8이 인코딩되는 방법을 찾아야합니다. – RyanFishman

+0

아시아 문자를 저장하면 순수 영어의 절반 만 저장할 수 있습니까? 오른쪽 –