Хранение пользовательских данных в файлах JSON на сервере


Я создаю веб-приложение, которое использует PHP и MySQL на бэкэнде. Я хочу сохранить некоторые пользовательские данные - в основном набор объектов в формате JSON, которые содержат подробную информацию о "избранном" пользователя для приложения. Я не хочу хранить эти данные JSON в одном поле MySQL в моей таблице базы данных пользователей, потому что это не кажется эффективным.

Итак, я думаю просто сохранить данные JSON в плоском файле на сервере с уникальным идентификатором, который я могу использовать, чтобы узнать, какой пользователь файл связан с. Мои вопросы таковы: будет ли это масштабируемым решением для более чем 10 000 пользователей?

Author: Ed Cottrell, 2016-06-12

1 answers

Это, вероятно, вызовет у вас много головной боли, как с точки зрения технических аспектов, так и с точки зрения безопасности. И нет, это не очень масштабируемо. Подумайте о проблемах, которые это вызовет: что произойдет, когда вам нужно будет добавить сервер? Как вы будете синхронизировать файлы? Что делать, если вы хотите сделать что-то с участием нескольких пользователей, например, посмотреть, у скольких людей XYZ является любимым?

Гораздо лучший вариант - выполнить одно из следующих действий:

  • Нормализуйте свою базу данных (выполните эту часть независимо от этого) и поместите избранное в свою собственную таблицу или
  • Сохраните избранное в столбце JSON (возможно, неправильный ответ, но в некоторых контекстах имеет смысл)

Если вы беспокоитесь о скорости, вы можете реализовать некоторое кэширование с помощью Redis, memcached или какой-либо другой системы. Но пока не делайте этого - это преждевременная оптимизация. Делайте это, когда вам это нужно.

 2
Author: Ed Cottrell, 2016-06-12 14:33:59