Firebase Summit에서 발표된 모든 내용을 살펴보고 Firebase로 앱을 빠르게 개발하고 안심하고 앱을 실행하는 방법을 알아보세요. 자세히 알아보기

데이터 색인 생성

컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요.

Firebase를 사용하면 임의의 하위 키를 사용하여 데이터에 임시 쿼리를 수행할 수 있습니다. 색인이 무엇인지 미리 알고 있다면 Firebase 실시간 데이터베이스 보안 규칙의 .indexOn 규칙을 통해 색인을 정의하여 쿼리 성능을 개선할 수 있습니다.

데이터 인덱스 정의

Firebase는 데이터 주문쿼리 를 위한 강력한 도구를 제공합니다. 특히 Firebase를 사용하면 공통 하위 키를 사용하여 노드 모음에서 임시 쿼리를 수행할 수 있습니다. 앱이 성장함에 따라 이 쿼리의 성능이 저하됩니다. 그러나 쿼리할 키에 대해 Firebase에 알리면 Firebase는 서버에서 해당 키를 인덱싱하여 쿼리 성능을 향상시킵니다.

orderByChild를 사용한 인덱싱

이것을 설명하는 가장 쉬운 방법은 예를 통해서입니다. Firebase의 우리 모두는 공룡이 꽤 멋지다는 데 동의합니다. 다음은 공룡 사실에 대한 샘플 데이터베이스의 스니펫입니다. .indexOnorderByChild() 와 함께 작동하는 방식을 설명하는 데 사용할 것입니다.

{
  "lambeosaurus": {
    "height" : 2.1,
    "length" : 12.5,
    "weight": 5000
  },
  "stegosaurus": {
    "height" : 4,
    "length" : 9,
    "weight" : 2500
  }
}

앱에서 이름, 키, 길이로 공룡을 정렬해야 하지만 무게로는 정렬하지 않는 경우가 많다고 상상해 봅시다. Firebase에 이 정보를 알려줌으로써 쿼리 성능을 향상시킬 수 있습니다. 공룡의 이름은 키일 뿐이므로 Firebase는 공룡 이름이 레코드의 키이기 때문에 이미 공룡 이름으로 쿼리를 최적화합니다. .indexOn 을 사용하여 높이와 길이에 대한 쿼리도 최적화하도록 Firebase에 알릴 수 있습니다.

{
  "rules": {
    "dinosaurs": {
      ".indexOn": ["height", "length"]
    }
  }
}

다른 규칙과 마찬가지로 규칙의 모든 수준에서 .indexOn 규칙을 지정할 수 있습니다. 모든 공룡 데이터가 데이터베이스의 루트에 저장되기 때문에 위의 예에서는 루트 수준에 배치했습니다.

orderByValue로 인덱싱

이 예제에서는 .indexOnorderByValue() 와 함께 작동하는 방식을 보여줍니다. 다음 데이터를 사용하여 공룡 스포츠 점수의 순위표를 만든다고 가정해 보겠습니다.

{
  "scores": {
    "bruhathkayosaurus" : 55,
    "lambeosaurus" : 21,
    "linhenykus" : 80,
    "pterodactyl" : 93,
    "stegosaurus" : 5,
    "triceratops" : 22
  }
}

순위표를 만들기 위해 orderByValue()를 사용하고 있으므로 /scores 노드에 .value 규칙을 추가하여 쿼리를 최적화할 수 있습니다.

{
  "rules": {
    "scores": {
      ".indexOn": ".value"
    }
  }
}
,

Firebase를 사용하면 임의의 하위 키를 사용하여 데이터에 임시 쿼리를 수행할 수 있습니다. 색인이 무엇인지 미리 알고 있다면 Firebase 실시간 데이터베이스 보안 규칙의 .indexOn 규칙을 통해 색인을 정의하여 쿼리 성능을 개선할 수 있습니다.

데이터 인덱스 정의

Firebase는 데이터 주문쿼리 를 위한 강력한 도구를 제공합니다. 특히 Firebase를 사용하면 공통 하위 키를 사용하여 노드 모음에서 임시 쿼리를 수행할 수 있습니다. 앱이 성장함에 따라 이 쿼리의 성능이 저하됩니다. 그러나 쿼리할 키에 대해 Firebase에 알리면 Firebase는 서버에서 해당 키를 인덱싱하여 쿼리 성능을 향상시킵니다.

orderByChild를 사용한 인덱싱

이것을 설명하는 가장 쉬운 방법은 예를 통해서입니다. Firebase의 우리 모두는 공룡이 꽤 멋지다는 데 동의합니다. 다음은 공룡 사실에 대한 샘플 데이터베이스의 스니펫입니다. .indexOnorderByChild() 와 함께 작동하는 방식을 설명하는 데 사용할 것입니다.

{
  "lambeosaurus": {
    "height" : 2.1,
    "length" : 12.5,
    "weight": 5000
  },
  "stegosaurus": {
    "height" : 4,
    "length" : 9,
    "weight" : 2500
  }
}

앱에서 이름, 키, 길이로 공룡을 정렬해야 하지만 무게로는 정렬하지 않는 경우가 많다고 상상해 봅시다. Firebase에 이 정보를 알려줌으로써 쿼리 성능을 향상시킬 수 있습니다. 공룡의 이름은 키일 뿐이므로 Firebase는 공룡 이름이 레코드의 키이기 때문에 이미 공룡 이름으로 쿼리를 최적화합니다. .indexOn 을 사용하여 높이와 길이에 대한 쿼리도 최적화하도록 Firebase에 알릴 수 있습니다.

{
  "rules": {
    "dinosaurs": {
      ".indexOn": ["height", "length"]
    }
  }
}

다른 규칙과 마찬가지로 규칙의 모든 수준에서 .indexOn 규칙을 지정할 수 있습니다. 모든 공룡 데이터가 데이터베이스의 루트에 저장되기 때문에 위의 예에서는 루트 수준에 배치했습니다.

orderByValue로 인덱싱

이 예제에서는 .indexOnorderByValue() 와 함께 작동하는 방식을 보여줍니다. 다음 데이터를 사용하여 공룡 스포츠 점수의 순위표를 만든다고 가정해 보겠습니다.

{
  "scores": {
    "bruhathkayosaurus" : 55,
    "lambeosaurus" : 21,
    "linhenykus" : 80,
    "pterodactyl" : 93,
    "stegosaurus" : 5,
    "triceratops" : 22
  }
}

순위표를 만들기 위해 orderByValue()를 사용하고 있으므로 /scores 노드에 .value 규칙을 추가하여 쿼리를 최적화할 수 있습니다.

{
  "rules": {
    "scores": {
      ".indexOn": ".value"
    }
  }
}