update guardar datos data consultas firebase database-design database nosql

guardar - Diseño de base de datos NoSQL para consultas con restricciones múltiples(Firebase)



firebase update document (1)

Dado que Firebase solo puede filtrar en una propiedad, deberá combinar los valores que desea filtrar en una sola propiedad. Dado que tiene múltiples necesidades de filtrado, es posible que necesite dicha propiedad para cada caso de uso de filtrado.

Parece que esto será posible si combina <category>_<date> en una sola propiedad, que llamaremos multi-prop . También combinaremos <category>_<subcategory>_<date> en una propiedad llamada megaprop :

$productId /date /category /subcategory /multiprop /megaprop

Algunos datos de muestra:

id_cc_1234 date: 20151031 category: candy subcategory: halloween multiprop: candy_20151031 megaprop: candy_halloween_20151031 id_tg_2345 date: 20151125 category: candy subcategory: thanksgiving multiprop: candy_20151125 megaprop: candy_thanksgiving_20151125 id_tg_3456 date: 20151125 category: food subcategory: thanksgiving multiprop: food_20151125 megaprop: food_thanksgiving_20151125 id_sk_4567 date: 20151205 category: candy subcategory: sinterklaas multiprop: candy_20151205 megaprop: candy_sinterklaas_20151205 id_sc_5678 date: 20151225 category: candy subcategory: christmas multiprop: candy_20151225 megaprop: candy_christmas_20151225

Ahora sus consultas se convierten en:

  1. recuperar los últimos 4 productos

    ref.orderByChild(''date'').limitToLast(4);

  2. recuperar los últimos 4 productos de la categoría X

    ref.orderByChild(''multiprop'').startAt(''candy'').endAt(''candy_~'').limitToLast(4);

  3. recuperar los últimos 4 productos de la categoría X y la subcategoría Y.

    ref.orderByChild(''megaprop'').startAt(''candy_christmas'').endAt(''candy_christmas_~'').limitToLast(4);

También vea: http://jsbin.com/piluzo/edit?js,console para una versión de trabajo.

Necesito mejores consejos prácticos para mejorar el rendimiento de mi base de datos noSQL (alojada en Firebase). Además, necesito consejos sobre cómo estructurar los nodos.

La base de datos almacena información del producto, con tres propiedades principales:

$productId /date /category /subcategory

En mi sitio web, tengo tres puntos de vista:

  • recuperar los últimos 4 productos (fecha de pedido)
  • recuperar los últimos 4 productos (por fecha) de la categoría X
  • recuperar los últimos 4 productos (por fecha) de la categoría X y la subcategoría Y.

Tenga en cuenta que también tengo un nodo product_images, que tiene subnodos que coinciden con los productIDs. Entonces, construyendo los databas de la siguiente manera:

$categoryId $subCategoryId $productId

no funcionará, ya que necesito saber de antemano el $ categoryId y $ subCatrgoryId antes de poder compararlo con $ productId. También dificultaría la recuperación de los últimos 4 productos.

¿Cómo construiría mi base de datos noSQL de manera eficiente y cómo recuperaría los productos con Firebase filtrándolo con múltiples restricciones?

Sé que en Firebase puedes usar orderByChild e equalTo, pero esto solo funciona en una restricción, mientras que tengo que lidiar con uno a tres.