2012-01-13 4 views
-2

I 일부 데이터가 N -D 배열 (최신 CSV 형식) - 각각의 N의 각각의 데이터 포인트에 대한 N -dimensions가 있으며, 하나 개의 데이터 값 치수입니다. 나는이 배열을 저장하기위한 마련 모든 스키마 솔루션은 공간 효율적이지 - 예를 들어, 2 차원에 대한 확실한 해결책은 :효율적

Table ArrayData 
---------------- 
id 
row 
column 
dataValue 

는 (N^2) 공간 O를 차지하며, 마찬가지로 노스 다코타 배열 (O 소요 N^N) 공간. rowcolumn의 크기와 모양이 무엇인지 알기 때문에 (단지 0에서부터 어떤 범위의 값이든간에) 나는 iddataValue을 저장해야한다고 느낍니다. 데이터의 순서가 충분해야합니다. n -D 배열은 C로 메모리에 저장됩니다.

색인 배열 및 배열 - 색인 함수를 정의 할 수 있습니다. 나는 그 명백한 것을 놓치고 있습니까? 이런 종류의 SQL 함수가 미리 정의되어 있습니까?

답변

1

전통적인 관계형 데이터베이스 디자인의 차원에서는 생각하지 않습니다. 우리는 일반적으로 물건의 관점에서 생각합니다. 코드에 다차원 배열에 데이터를 저장한다고해서 데이터베이스 스키마에이를 반영해야하는 것은 아닙니다.

즉, OLAP (다차원 데이터베이스 디자인)과 같은 차원에서 생각하면 편리 할 때가 많습니다. 일반적으로 이러한 스키마는 대량의 데이터에서 데이터를 매우 빠르게 검색하고 집계하기 위해보고 목적으로 작성되었습니다. 쿼리에 익숙하지 않으며 불량 데이터를 허용 할 수 있지만 수행하는 작업은 매우 효율적입니다.

문자열을 3 차원으로 저장하려는 경우.

SOME_VALUE_FACT 
---------------- 
X_DIM_ID int (FK) 
Y_DIM_ID int (FK) 
Z_DIM_ID int (FK) 
THE_STRING_BEING_STORED varchar(200) 

X_DIM 
-------------- 
X_DIM_ID int (PK) 
X_DIM_VALUE 

(Y, and Z tables are similar) 
+0

감사합니다. 개체 및 전통적인 데이터 저장소에 대한 귀하의 의견을 듣습니다. 다른 기술에 대해 알고 있습니까? 나는 여전히이 데이터를 최대한 효율적으로 유지하려고합니다. 당신이 설명하는'FK'는'int'이므로 저장 공간은 여전히 ​​O (N^N)입니까? – danodonovan

+0

무슨 뜻인지 모르겠다. 선택은 정규화되지 않고 값을 모두 한 테이블 (레코드 복제)에 두거나 외래 키를 사용하는 것입니다. 저장하려는 데이터가 실제로 정수인 경우 정규화를 통해 공간을 절약하지 않을 것입니다 (이는 사용자가 묻는 것일 수도 있습니다). 만약 당신이 더 작은 int 타입을 사용하려고한다면 더 작은 데이터 타입 (16 비트 int 타입)을 사용할 수 있습니다. – Arbiter

관련 문제