Я собираюсь построить свой первый настоящий проект на Rails, который состоит из веб-приложения, состоящего из 3 основных частей:
- Статическая часть, где база данных не используется
- Часть регистрации пользователя, которая потребует базы данных, и я могу использовать MySQL, поскольку строки каждого пользователя будут иметь одинаковые поля
- Приложение, в котором пользователи смогут создавать, организовывать, редактировать ... элементы в коллекциях и делиться ими с другими пользователями.
Будет несколько типов элементов, и у каждого будут разные параметры, например, у меня могут быть элементы «видео» со следующими параметрами:
- Я бы
- ID пользователя
- collection_id
- заглавие
- платформа (если встроена)
- URL (если встроен)
- имя файла (если оно размещено в моем приложении)
- размер файла (идентификатор размещен в моем приложении)
и элементы "карты":
- Я бы
- ID пользователя
- collection_id
- заглавие
- платформа (карты Google, карты Bing ...)
- расположение
- URL
- размер карты
Как вы можете, в то время как для пользователей я могу использовать MySQL для элементов, гибкость MongoDB может оказаться полезной, поскольку для каждого элемента могут потребоваться разные параметры, чем для другого элемента
До сих пор я всегда использовал PHP и MySQL (всегда на виртуальном хостинге для небольших проектов), и масштабируемость - это совершенно новое слово для меня.
У меня есть время учиться, но я бы хотел сделать что-то конкретное за 1 месяц.
Я много читал о MongoDB и NoSQL против RDMS и MySQL, и после того, как я попробовал это, я должен сказать, что мне нравится, как работает MongoDB: нет таблиц, нет строк и документов JSON, например:
- В моей ситуации, что бы вы порекомендовали? Почему?
- По поводу масштабируемости могут быть проблемы с MongoDB? если да, когда (с точки зрения размера БД) и могут ли эти проблемы значительно замедлить мое приложение?
Редактировать: как приложение будет работать
Поскольку многие спрашивают, вот как я хотел бы, чтобы приложение работало:
- Регистрация пользователя
- Он залогинен
- Он создает свою первую коллекцию, в которой он может создавать бесконечные предметы
- Элементы имеют различный тип, и каждый тип требует различных данных для сохранения в базе данных, и тип элементов может быть добавлен или изменен
Пользователи могут создавать другие коллекции и предметы внутри него.
Таким образом, у нас есть CRUD для коллекций и элементов внутри них, и каждая коллекция / элемент относится к определенному пользователю
Основная проблема с MySQL состоит в том, что у него нет гибкой схемы, есть способ решить эту проблему (обходной путь?)?
Думая о NoSQL, я сомневаюсь только в соединении, например, учитывая определенную совокупность, я хочу получить данные, связанные с пользователем, с полем id = user_id в коллекции.
РЕДАКТИРОВАТЬ: Идея продолжать использовать MySQL
Создайте поле в таблице «items» с дополнительными настройками, каждая настройка делится на | или другой символ.
Затем я сохраню где-нибудь структуру необязательных настроек каждого элемента, например, для типа элемента «notes» нужны две необязательные настройки «color» и «ird_setting », когда я получу данные из MySQL, я разделю поле для необязательных настроек на массив, зная, что первый элемент в массиве для "цвета" и так далее.
Что вы думаете? Есть проблемы с этим решением? у тебя есть другие идеи?