JSON используется только для JavaScript? - PullRequest
5 голосов
/ 03 февраля 2009

Я храню строку JSON в базе данных, которая представляет набор свойств. В коде я экспортирую его и использую для некоторой пользовательской логики. По сути, я использую его только как механизм хранения. Я понимаю, что XML лучше подходит для этого, но я прочитал, что JSON быстрее и предпочтительнее.

Является ли хорошей практикой использование JSON, если целью является не использовать строку на стороне клиента?

Ответы [ 8 ]

8 голосов
/ 03 февраля 2009

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

5 голосов
/ 03 февраля 2009

Я не могу сказать, хорошая ли это практика, но мне кажется странным. Наличие полей XML в вашей базе данных SQL, по крайней мере, запрашиваемо (SQL Server 2000 или более поздняя версия, MySQL и другие), но чаще всего является последним средством для метаданных.

JSON обычно является носителем между JavaScript и вашим бэкэндом, а не самим хранилищем, если у вас нет JSON бэкэнда ориентированной на документы базы данных , такой как CouchDB или SOLR , поскольку JSON отлично подходит для хранения документов.

Нельзя сказать, что я не согласен с использованием JSON в качестве простого (то есть не сериализующего ссылки) сериализатора данных через XML, но я не буду вдаваться в рассуждения JSON vs XML просто ради этого :) .

Если вы не используете JSON для его переносимости между двумя языками и уверены, что никогда не будете запрашивать данные из SQL, вам будет лучше с сериализацией по умолчанию из .NET.

4 голосов
/ 03 февраля 2009

Вы не единственный, кто использует JSON для хранения данных. CouchDB - это документно-ориентированная база данных, которая использует JSON для хранения информации. Сначала они хранили эту информацию в формате XML, а затем переключились на JSON. Запрос выполняется через старый добрый HTTP.

Кстати, в последнее время CouchDB получил некоторое внимание и поддерживается IBM и Apache Software Foundation . Он написан на Erlang и много обещает (ИМХО).

2 голосов
/ 03 февраля 2009

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

Однако вы не говорите, какую базу данных используете. Если это SQL Server 2005 или более поздняя версия, то сама база данных имеет широкие возможности при работе с XML, включая тип данных XML, поддержку XQuery и возможность оптимизировать выражения XQuery как часть плана выполнения. Так что, если это так, я бы гораздо больше склонялся к использованию XML и использованию возможностей базы данных.

2 голосов
/ 03 февраля 2009

Да, я думаю, что JSON великолепен. Это открытый стандарт и может использоваться любым языком программирования. Большинство языков программирования также имеют библиотеки для анализа и кодирования JSON.

1 голос
/ 03 февраля 2009

Просто помните, что у JSON есть те же проблемы, что и у XML в качестве внутреннего хранилища данных; а именно, он никоим образом не заменяет реляционную базу данных или даже двоичный формат фиксированного размера. Если у вас есть миллионы строк и вам нужен произвольный доступ, вы столкнетесь с теми же фундаментальными проблемами производительности с JSON, что и с XML. Я сомневаюсь, что вы намереваетесь использовать его для такого рода сценариев хранилища данных, но вы никогда не знаете ... странные вещи были опробованы:)

0 голосов
/ 03 февраля 2009

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

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

0 голосов
/ 03 февраля 2009

JSON короче, поэтому он будет занимать меньше места в вашей базе данных. Возможно, я бы использовал его вместо XML или для написания своего собственного формата.

С другой стороны, поиск совпадений будет отстой - вам придется использовать «где json вроде«% somevalue% »», что будет мучительно медленно Это то же самое ограничение с любой другой стратегией хранения текста (включая xml).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...