Мне нужны советы по лучшей практике для повышения производительности моей базы данных noSQL (размещенной на Firebase). Более того, мне нужны советы о том, как структурировать узлы.Конструкция базы данных NoSQL для запросов с несколькими ограничениями (Firebase)
Информация База данных хранит продукт, с тремя основными свойствами:
$productId
/date
/category
/subcategory
На моем сайте, у меня есть три вида:
- извлечь последние 4 продукта (дата OrderBy)
- получить последние 4 статьи (по дате) категории X
- последние 4 изделия (по дате) категории X и подкатегория Y.
Обратите внимание, что у меня также есть узел product_images, у которого есть подносы, соответствующие идентификаторам productID. Так построения databas следующим образом:
$categoryId
$subCategoryId
$productId
не будет работать, как мне нужно знать заранее $ CategoryId и $ subCatrgoryId, прежде чем я могу сравнить его с $ ProductID. Это также затруднит получение последних 4 продуктов.
Как я могу построить свою базу данных noSQL эффективным образом и как я могу получить продукты с Firebase, фильтруя их с несколькими ограничениями?
Я знаю, что в Firebase вы можете использовать orderByChild и equalTo, но это работает только на одном ограничении, тогда как мне приходится иметь дело с одним-тремя.
Определяет смысл!Просто добавлю, скажем, у меня 10000 продуктов и 20 категорий. Я запрашиваю категории на одном представлении. Будет ли это медленнее, если я запрошу 20 раз на продукты узла по сравнению с одним раз для каждой категории, таким образом, по продуктам/$ categoryId? – JohnAndrews
Просто попробовал, к сожалению, это не работает. Он принимает все продукты, которые начинаются с конфеты, а не только candy_christmas – JohnAndrews
Этот ответ верен, и есть несколько других вариантов в зависимости от вашей платформы. Мы обнаружили, что запрос всей Candy и помещение результатов в массив, а затем (ObjC) NSPredicate для «фильтрации» данных, которые мы хотим (рождество) из этого массива, работают хорошо (в зависимости от размера набора данных). Кроме того, структурирование ваших данных по-разному; есть узел christmas_candy и узел thanksgiving_candy, где их дети содержат ссылки на соответствующие дочерние элементы в основном конфетном узле. Это дает вам доступ к «массиву», который можно повторить для получения данных, которые вы хотите, с основного конфетного узла. – Jay