Nano Hash - криптовалюты, майнинг, программирование

Структурирование базы данных Firebase

Недавно я начал использовать firebase и пытаюсь преобразовать свои данные в NoSql-приложении для Android. Моя текущая структура MIX --- > MIXTITLE ----> MIXDETAILS (Все подробности для этого микса). Я видел много структур, заказывающих элементы по UID, но как мне связать это с пользователями и избежать множества дублирующихся записей для каждого пользователя?

Например, пользователь может добавлять песни в библиотеку, и в этой библиотеке есть три вкладки: одна для всех песен, одна для списков воспроизведения и одна для избранных. Хранение MIX по UID не позволило бы мне найти все MIXES, где этот микс был добавлен в пользовательскую библиотеку.

Будет ли лучшим подходом денормализация данных и создание узла USERMIX, в котором перечислены все MIX под UID пользователя?


  • UID означает идентификатор пользователя. UID — это то, как Firebase отслеживает аутентифицированных пользователей внутри себя, т. е. когда пользователь создается, ему назначается UID, и этот uid может затем использоваться для создания собственного узла /users, где вы можете хранить дополнительную информацию о каждом пользователе /users/uid_0 и /users. /uid_1 и т. д. Если вы хотите создать уникальные ключи для хранения других типов данных, это обычно выполняется с помощью childByAutoId() (swift) или push(). Без дополнительной информации о вашем варианте использования и платформе в вашем вопросе мы не сможем предоставить гораздо больше информации, 08.08.2017
  • Моделирование данных в Firebase — очень широкая тема. Лучшая модель та, которая работает для ваших вариантов использования. Это своего рода совет, но на самом деле чрезвычайно важный: в NoSQL вы часто заканчиваете тем, что дополняете свою модель данных для вариантов использования вашего приложения. Я рекомендую прочитать моделирование данных NoSQL и посмотреть Firebase для разработчиков SQL. 09.08.2017

Ответы:


1

Как я понял может быть так для примера.

allSongs
- sid1
- sid2
..
users
- uid1
- uid2
..
favorites
-uid1
--sid1:true
--sid5:true
..
playlists
-uid1
--sid2:true
--sid7:true
--sid12:true
..
08.08.2017
  • Эй, спасибо за ответ! У меня действительно был дополнительный вопрос к этому. Как бы я мог вложить объекты в эту структуру, например, вместо всех песен -- › songId, разве не имеет смысла, чтобы это были песни ---> UID ----> songId ---> SongDetails. Если да, то как мне вставить это в базу данных, не создавая объект только для хранения идентификатора песни и добавления объекта песни к этому объекту? 11.08.2017
  • лучше хранить песни только с songId. добавление узла uid к песням может привести к дублированию песен. лучшая структура — song-›songid-›songObject. вы можете вставить songObject с помощью songRef.child(songId).setValue(SongObject). 11.08.2017
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..