[]
        
(Showing Draft Content)

메모리 테이블 추가

메모리 테이블은 클라이언트에 데이터를 로컬로 저장합니다.

데이터는 addTable을 호출할 때 data 옵션을 통해 직접 제공됩니다.

모든 작업은 메모리에서 수행됩니다.

서버 통신은 포함되지 않습니다.

메모리 테이블은 다음과 같은 경우에 적합합니다.

  • 정적 데이터 집합

  • 클라이언트 측 애플리케이션

  • 프로토타이핑 시나리오

  • 오프라인 사용 사례

메모리 테이블 생성

IDataSourceOptiondata 속성을 사용합니다.

const dataManager = spread.dataManager();

const table = dataManager.addTable("employees", {
    data: [
        { id: 1, name: "Alice", age: 24 },
        { id: 2, name: "Bob", age: 26 },
        { id: 3, name: "Cindy", age: 25 }
    ]
});

이제 테이블은 정의되었지만 아직 초기화되지는 않았습니다.

필수 초기화

테이블 생성 후 다음을 호출합니다.

table.fetch();

데이터가 이미 로컬에 존재하더라도 fetch()를 호출하면 다음이 보장됩니다.

  • 내부 데이터 상태 초기화

  • 정의된 경우 스키마 처리 적용

  • View 생성 준비 완료

예제:

table.fetch().then(function () {
    const view = table.addView("defaultView");
});

모든 테이블 유형은 추가 작업 전에 fetch()가 필요합니다.

데이터 형식 제공

data 옵션은 여러 형식을 지원합니다.

  • JSON 배열(기본값)

  • CSV 문자열

  • XML 문자열

data가 JSON 배열인 경우 추가 구성은 필요하지 않습니다.

JSON(기본값)

const table = dataManager.addTable("employees", {
    data: [
        { id: 1, name: "Alice", price: 24 },
        { id: 2, name: "Bob", price: 26 },
        { id: 3, name: "Cindy", age: 25 }
    ]
});

JSON은 기본 데이터 형식입니다.

schema.type을 지정하지 않으면 "json"으로 처리됩니다.

CSV

CSV 데이터를 문자열로 제공하는 경우 다음을 지정해야 합니다.

schema: {
    type: "csv"
}

예제:

const table = dataManager.addTable("employees", {
    data: `id,name,price
1,Alice,24
2,Bob,26
3,Cindy,25`,
    schema: {
        type: "csv"
    }
});

schema.type = "csv"를 지정하지 않으면 문자열은 일반 JSON 값으로 처리되며 구문 분석이 수행되지 않습니다.

XML

XML 데이터를 제공하는 경우 다음을 지정해야 합니다.

  • schema.type = "xml"

  • schema.dataPath (컬렉션이 중첩된 경우)

예제:

const table = dataManager.addTable("employees", {
    data: `
<root>
    <row>
        <id>1</id>
        <name>Alice</name>
        <price>24</price>
    </row>
    <row>
        <id>2</id>
        <name>Bob</name>
        <price>26</price>
    </row>
    <row>
        <id>3</id>
        <name>Cindy</name>
        <price>25</price>
    </row>
</root>
`,
    schema: {
        type: "xml",
        dataPath: "root.row"
    }
});

설명:

  • type: "xml"은 XML 구문 분석을 활성화합니다.

  • dataPath는 레코드 컬렉션이 위치한 경로를 지정합니다.

  • dataPath를 지정하지 않으면 전체 구문 분석 객체가 반환됩니다.

메모리 테이블의 스키마

메모리 테이블에서 schema는 두 가지 주요 목적을 가집니다.

  1. 데이터 구문 분석(CSV 또는 XML 사용 시)

  2. 열 모델링 및 데이터 동작

스키마를 제공하지 않으면:

  • JSON 데이터는 자동으로 추론됩니다.

  • 열은 객체 키를 기반으로 생성됩니다.

스키마 구성은 스키마 섹션에 설명되어 있습니다.

이 섹션에서는 메모리 테이블에서의 일반적인 사용 방법을 보여줍니다.

구문 분석 동작

schema.type 속성은 data 문자열을 어떻게 구문 분석할지 결정합니다.

schema.type

예상 데이터 형식

json (기본값)

JSON 배열

csv

CSV 문자열

xml

XML 문자열

columnJson

열 기반 JSON 구조

schema.type을 설정하지 않고 문자열을 제공하면 "json"으로 처리되며 CSV 또는 XML로 구문 분석되지 않습니다.

열 모델링

스키마는 열 구조 및 데이터 형식을 정의할 수 있습니다.

const table = dataManager.addTable("orders", {
    data: [
        { id: 1, orderDate: "2025-01-01" }
    ],
    schema: {
        columns: {
            orderDate: {
                dataType: "date"
            }
        }
    }
});

열 정의를 통해 다음을 수행할 수 있습니다.

  • 데이터 형식 변환

  • 서식 동작 정의

  • 기본 키 정의

  • 고급 열 구성

중첩 필드 펼치기

필드에 중첩 객체가 포함된 경우 spread를 사용하여 여러 열로 펼칠 수 있습니다.

예제:

const table = dataManager.addTable("sales", {
    data: [
        {
            id: 1,
            address: {
                country: "USA",
                state: "California",
                city: "San Francisco",
                postalCode: "94105"
            }
        },
        {
            id: 2,
            address: {
                country: "Germany",
                state: "Berlin",
                city: "Berlin",
                postalCode: "10115"
            }
        }
    ],
    schema: {
        columns: {
            address: {
                spread: true
            }
        }
    }
});

fetch() 이후 중첩 필드는 개별 열로 변환됩니다.

이를 통해 구조화된 데이터를 View에서 사용할 수 있도록 평면화할 수 있습니다.

내보내기 및 가져오기

메모리 테이블은 다음 형식을 통한 내보내기 및 가져오기를 지원합니다.

  • JSON

  • SJS

데이터가 전적으로 메모리에 존재하므로 전체 직렬화를 지원합니다.