2015-03-15 4 views
0

Производительность мудрая, это умно для этого? Примером может быть с GsonСохранить java-объект как строку json в базе данных MySQL?

Gson gson = new Gson(); 
String json = gson.toJson(myObject); 

// store json string in sql with primary key 
// retrieve json string in sql with primary key 

Я хочу, чтобы упростить путь я хранить и извлекать объекты, а здания и разделив их на куски и отдельные столбцы каждый раз, когда я сохранить/извлечь из базы данных.

Но моя забота об использовании строки json заключается в том, что длина может повлиять на производительность при заполнении базы данных? Я не уверен, вот почему я спрашиваю.

ответ

1

Нет проблем с использованием «пространства» или его эффективности: MySQL будет иметь дело с этим просто отлично.

То есть, если весь фрагмент JSON нужно вытащить/направить для обработки и изменения, то MySQL будет продолжать обрабатывать такие, как это было лучше всего, даже «по мере заполнения базы данных».

Однако при выполнении этой задачи возникают проблемы с нормализацией и непрозрачностью информации. Базы данных относятся к информации, но blob JSON - это просто ... блок JSON для базы данных SQL.

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

Если только JSON действительно не непрозрачных данные, как содержимое двоичного файла, рассмотреть возможность работы на соответствующей нормировке .. или перейти к (JSON) document-oriented базы данных (например, Raven, Redis, Couch, Mongo).

1

Проблемы с пространством или производительностью при хранении строк JSON. MySQL может обрабатывать большие капли, если вам это нужно.

Решение о том, следует ли хранить ваши данные, сериализованные в JSON, или нет, должно основываться на том, как вам нужно обрабатывать эти данные. Реляционные базы данных, такие как MySQL, предположим, что вы нормализуете данные и устанавливаете отношения между записями. Тем не менее, во многих случаях это может быть практичным делать иначе (т. Е. Хранить как JSON).

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

В качестве более популярных баз данных, таких как MongoDB, некоторые традиционные реляционные базы данных, такие как PostgreSQL и MariaDB, недавно также реализовали поддержку встроенного JSON.