it-swarm.com.ru

MySQL против JSON - почему?

Я разрабатываю небольшое веб-приложение/игру. Что будет лучше: таблицы MySQL или файлы json? Они оба хранят информацию. Они оба могут быть проанализированы PHP. Каковы преимущества/недостатки?

Это то, что я имею в виду:

username | password
-------------------
seefour  | abc123

vs.

{
  "username":"seefour",
  "password":"abc123"
}

Правка: Wow, прошло всего 3 года с тех пор, как я задал этот вопрос, и удивительно видеть, сколько я созрел с тех пор, как я задал этот вопрос. Из будущего меня в прошлое меня, вот почему эти два не работают. (В случае, если кто-то наивный, как я, может сослаться на это)

Раньше я думал, что они взаимозаменяемы, потому что оба они в значительной степени являются способами хранения информации, хотя в то время мне было проще хранить и использовать файлы JSON. Базы данных - это отдельные части программного обеспечения, которые значительно ускоряют получение данных и не раздуваются со временем. Кроме того, хранение всех данных в одном или двух файлах позволяет в конечном итоге получить кражу или потерю ваших данных, тогда как база данных намного безопаснее с ними. По сути, данные не должны быть частью вашего кода; это должно быть отдельной вещью, с которой работает ваш код.

Кроме того, вы узнаете о хешировании и засолке через пару лет, так что не храните пароли в виде простого текста!

49
avinashbot

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

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

Если вы храните данные в файлах, будь то в формате JSON или чем-то еще, у вас будут возникать всевозможные проблемы, о которых люди перестанут беспокоиться, так как базы данных начали использоваться для одной и той же вещи. Ограничения по размеру, замки, назовите это. Это достаточно хорошо, когда у вас есть один пользователь, но как только вы добавите больше пользователей, вы начнете решать так много проблем, что вы, вероятно, закончите, написав целый движок базы данных только для того, чтобы обрабатывать файлы для вас, пока вы все вместе мог бы просто использовать фактическую базу данных.

30
Teekin

MySQL будет предпочтительнее по многим причинам, не в последнюю очередь из-за того, что вы не хотите, чтобы процесс вашего веб-сервера имел доступ на запись в файловую систему (за исключением, возможно, регистрации), потому что это простой способ использования.

Кроме того, команда MySQL приложила немало инженерных усилий для решения таких задач, как репликация, одновременный доступ к данным, соответствие ACID и целостность данных.

Представьте, например, что вы добавляете новое поле, которое требуется в любой структуре данных, которую вы храните. Если вы храните в файлах JSON, у вас должен быть какой-то процесс, который открывает каждый файл, добавляет поле, а затем сохраняет его. Сравните это с трудностью использования ALTER TABLE со значением DEFAULT для поля. (Немного надуманного примера, но сколько хаков вы хотите оставить в своей кодовой базе для работы со старыми данными?)

17
Meleneth

2 не очень сопоставимы.

MySQL хранит данные в базе данных или фактически является базой данных. JSON хранит данные в формате, который будет передаваться на сервер и с сервера на клиент. Javascript/jquery может использовать JSON в качестве объектов данных, но они существуют только на стороне клиента в течение всей жизни страницы.

Поэтому, если вы хотите сохранить данные в формате JSON (не рекомендуется), вам, вероятно, придется сохранить их в виде текстовых файлов для сохранения данных.

Вы должны хранить данные в базе данных. Используйте функции для преобразования его в формат JSON, а затем передайте его на веб-страницу для использования JavaScript и представления пользователю.

15
Yogurt The Wise