LINUX.ORG.RU
ФорумTalks

JSON теперь в SQL: SQL/JSON

 , , , ,


2

1

Монгокапец

Объектная модель данных теперь в SQL: хранение, запросы, прозрачная интеграция с реляционной схемой.

Part 6: SQL support for JavaScript Object Notation (JSON) https://standards.iso.org/ittf/PubliclyAvailableStandards/c067367_ISO_IEC_TR_...

Уже в Постгресе (то ли в последнем выпущенном, то ли в надвигающемся).

★★★★★

Ответ на: комментарий от TheAnonymous

Стек для командования лошадьми? JSON беден. Не зря появился YAML. Но лучше XML пока ничего не придумали. Для JSON нет XPath, XSLT. Велосипеды вместо NS. Нет INCLUDE нормальных. В итоге «простой» формат превратился в формат + 10001 додумок (а вот тут коды товаров, а тут коды юзеров...)

demrnd
()
Ответ на: комментарий от demrnd

Под Linux это почти все обертки libxml под винду MSXMLParser

Вы доводы приведете оправдывающие вашу точку зрения?

Покажите мне обёртки в
https://www.google.com/search?q=java xml parser

А может XMLDocument или XDoc в дотнете враперы над libxml или MSXMLParser?

И что интересно и жаба и дотнет работают под Линук и Виндовс.

grim ★★☆☆
()
Ответ на: комментарий от demrnd

Пережили страдальцев неневидевших XML переживёт и страдальцев по XML ;)

Для JSON нет XPath, XSLT

Вы хоть понимаете что за хрень написали?

grim ★★☆☆
()
Последнее исправление: grim (всего исправлений: 1)
Ответ на: комментарий от grim

Вы хоть понимаете что за хрень написали?

Видимо нет если вам это доставит удовольствие. А будут какие нибудь конструктивные предложения? Ну Ок в Java может еще свой XML парсер. На то она и Java. А про .NET XMLDocument и есть MSXMLParser https://support.microsoft.com/ru-ru/help/269238/list-of-microsoft-xml-parser-... Собственно смена имени ни о чем не говорит...

demrnd
()
Ответ на: комментарий от demrnd

А про .NET XMLDocument и есть MSXMLParser https://support.microsoft.com/ru-ru/help/269238/list-of-microsoft-xml-parser-...

Где там упоминание того, что ".NET XMLDocument и есть MSXMLParser "?

Написано что оно входит в состав .Net 2000го года но не написано для чего.

Т.е. уже почти 20 лет никто им не пользуется кроме вас.

Вы на каком ЯП страдаете?
Я вас уже спрашивал, что стесняетесь?
На пых-пыхе чтоли?

grim ★★☆☆
()
Ответ на: комментарий от grim

На пых-пыхе чтоли?

А что вы имеете против PHP?

Где там упоминание того, что ".NET XMLDocument и есть MSXMLParser "?

Да MS каждый год пишет новый парсер.

demrnd
()
Ответ на: комментарий от demrnd

Так я и не стесняюсь.

Так что-же неотечаете, когда я вас спрашиваю?

Считаю PHP это практически родитель интернета

хехехе
Очень интересно ;)

grim ★★☆☆
()
Последнее исправление: grim (всего исправлений: 1)
Ответ на: комментарий от grim

Очень интересно ;)

99% интернет сайтов на PHP и понятно, что Фейсбук и Баду не дураки и не просто так выбрали эту технологию. Да и Вконтакте...

demrnd
()
Ответ на: комментарий от grim

Не переписывать, а улучшать. Теперь после улучшений вообще смысла нет использовать другия языки. Думаешь Битрикс в России просто так монополист? Вон у нас тут пробегал один java программист который всеравно для перезапуска java системы использовал PHP. Я еще ни разу не слышал чтоб у PHP сайта текла память...

demrnd
()
Ответ на: комментарий от demrnd

Не переписывать, а улучшать. 

Учитывая что оно не совместимо с обычным пых-пыхом, то именно переписывать.

grim ★★☆☆
()
Ответ на: комментарий от surefire

А так?

Чуть лучше, но явно лучше

<p:points xmlns:p="http://pointsite.com/description">
   <p:point x="1", y="2"/>
   <p:point x="3", y="4"/>
   <comment> This is a sphere</comment>
</p:points>
demrnd
()
Ответ на: комментарий от demrnd

Я еще ни разу не слышал чтоб у PHP сайта текла память...

Наверное они просто падают не дождавшись ;)

А утечки памяти можно устроить на любом ЯП

grim ★★☆☆
()
Ответ на: комментарий от grim

А утечки памяти можно устроить на любом ЯП

На PHP нельзя. Там специально архитектурно сделали что при каждом запросе новый процесс. Это безопаснее чем в ваших .NET и Java.

demrnd
()
Ответ на: комментарий от demrnd

Вы не пробовали эти «улучшенные» версии...

Так я с гомосексуализмом не занимался, но мне известно что это не для меня ;)

Я читал, что они не совместимы.

grim ★★☆☆
()
Ответ на: комментарий от demrnd

На PHP нельзя. Там специально архитектурно сделали что при каждом запросе новый процесс.

Вы или врете или пхп ещё хуже чем я о нем думал.

Неужели даже DB connection Pool нет?

Неужели нельзя создать поток или процесс?

grim ★★☆☆
()
Ответ на: комментарий от grim

Я читал, что они не совместимы.

Собственно не зря Facebook не отдает свои наработки (только частично) чтоб не дать конкурентам свое преимущество. Вот всякие ЕЛК и прочие Кассандры отдают - потому что это все ерунда.

demrnd
()
Ответ на: комментарий от grim

Неужели нельзя создать поток или процесс?

Можно. Но из за архитектурных особенностей необходимости в этом нет. Можно вспомнить GO с его горутинами которые под капотом куча потоков. Да и GIL в Python. Обратите внимание, в PHP нет GIL. Он архитектурно совершенее...

demrnd
()
Ответ на: комментарий от demrnd

То что фэйсбуковски не совместим я и читал.

grim ★★☆☆
()
Ответ на: комментарий от grim

Вы или врете или пхп ещё хуже чем я о нем думал.

PHP Чистый Unix way.

demrnd
()
Ответ на: комментарий от grim

Т.е. вы соврали, что нельзя устроить утечки памяти.

Можно и голову себе прострелить. Но ведь это специально только если. А вот в JAVA в 99% программ если их не перезапускать раз в неделю будет утечка. А например WordPress работает годами без утечек.

demrnd
()
Ответ на: комментарий от demrnd

Ну так тебе и в JSON никто не мешает так сделать:


{
  "points":
  [
    { "x": 1, "y": 2 },
    { "x": 2, "y": 3 },
    { "comment": "This is a sphere" }
  ]
}

А теперь представь количество точек в нескольких тысяч и сравни overhead. Но самое главное даже не это.

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

surefire ★★★
()
Ответ на: комментарий от surefire

Я буду в цикле перебирать i-й элемент и грохнусть на комменте потому, что у него нет x y. А в XML я буду перебирать points. Ну и про siblings я уже говорил

demrnd
()
Ответ на: комментарий от demrnd

А в XML я буду перебирать points

Потому, что ты перекладываешь весь overhead на кого-то другого, на парсер, на xpath и т.д.. Считаешь, что раз ты сам этого не делаешь, то это ничего не стоит. Позиция обычного эгоиста.

surefire ★★★
()
Ответ на: комментарий от demrnd

JSON не позволяет в 1 пакете передать N документов. Тоесть я не могу передать скажем счет и счет фактуру....

Тебе врач запретил или святой отец?

surefire ★★★
()
Ответ на: комментарий от surefire

Позиция обычного эгоиста.

Да я эгоист. Я хочу взять XPath и XSLT, а не лепить 1000 циклов с 50000 условий для получения значения из файла в 100 мегабайт.

demrnd
()
Ответ на: комментарий от demrnd

Ты не можешь отличить запись о намерении продажи товара от записи о продаже....

Не перекладывай свои фобии на других. Отвечай только за себя.

surefire ★★★
()
Ответ на: комментарий от demrnd

Я хочу взять XPath и XSLT, а не лепить 1000 циклов с 50000 условий для получения значения из файла в 100 мегабайт.

А теперь представь, что этого вообще ничего не надо.. Ты какие данные сериализовал, такие и вернулись в программу.

surefire ★★★
()
Последнее исправление: surefire (всего исправлений: 1)
Ответ на: комментарий от surefire

Это миф. К сожалению в реальной жизни ты получишь:

{  
   "ticker":[  
      "LTCMXN",
      "ETHBTC",
      "XRPMXN",
      "XRPBTC",
      "ETHMXN",
      "BTCMXN",
      "MXNETH",
      "MXNBTC"
   ],
   "session-regular":"24x7",
   "has-no-volume":false,
   "delay":0,
   "pricescale":[  
      1000,
      100000,
      1000,
      100000000,
      100,
      100,
      100,
      100
   ],
   "has-intraday":true,
   "type":"bitcoin",
   "description":[  
      "Litecoin / Mexican Peso",
      "Ethereum / Bitcoin",
      "Ripple / Mexican Peso",
      "Ripple / Bitcoin",
      "Ethereum / Mexican Peso",
      "Bitcoin / Mexican Peso",
      "Mexican Peso / Ethereum",
      "Mexican Peso / Bitcoin"
   ],
   "is-tradable":[  
      true,
      true,
      true,
      true,
      false,
      true,
      true,
      true
   ],
   "pointvalue":1,
   "has-dwm":true,
   "timezone":"Etc/UTC",
   "exchange-traded":"BITSO",
   "group":"BITSO",
   "session-premarket":"",
   "symbol":[  
      "LTCMXN",
      "ETHBTC",
      "XRPMXN",
      "XRPBTC",
      "ETHMXN",
      "BTCMXN",
      "MXNETH",
      "MXNBTC"
   ],
   "flags":[  
      "has-intraday,has-depth,is-tradable,has-dwm",
      "has-intraday,has-depth,is-tradable,has-dwm",
      "has-intraday,has-depth,is-tradable,has-dwm",
      "has-intraday,has-depth,is-tradable,has-dwm",
      "has-intraday,has-depth,has-dwm",
      "has-intraday,has-depth,is-tradable,has-dwm",
      "has-intraday,has-depth,is-tradable,has-dwm",
      "has-intraday,has-depth,is-tradable,has-dwm"
   ],
   "currency":[  
      "MXN",
      "BTC",
      "MXN",
      "BTC",
      "MXN",
      "MXN",
      "MXN",
      "MXN"
   ],
   "exchange-listed":"BITSO",
   "minmovement":1,
   "session-postmarket":"",
   "has-depth":true,
   "session-extended":"24x7"
}

Тут хорошо видно что валюты сами по себе, а дескрипшн сам по себе... И трансформация такого не проста....

demrnd
()
Ответ на: комментарий от surefire

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

demrnd
()
Ответ на: комментарий от demrnd

Ну так ты вообще знаешь, что такое сериализация данных? Похоже, что не знаешь. Ибо если у тебя получилась каша, которая тебе не нравится, то очевидно у тебя и в программе точно такая же каша из данных.

surefire ★★★
()
Ответ на: комментарий от surefire

У меня получилась каша. У меня получилась. У меня....

demrnd
()
Ответ на: комментарий от surefire

Собственно такой формат сделан для того чтоб не писать 10000 раз flag.. Там даже flags сделаны не массивом. Это я выбрал МАЛЕНЬКИЙ документ. Тут никакого XPath не сделать чтоб выбрать все данные по ETHBTC. Это следствие «удобства» json

demrnd
()
Ответ на: комментарий от demrnd

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

surefire ★★★
()
Ответ на: комментарий от demrnd

Станет ли тебе легче от того, что эта каша будет в XML?

<?xml version="1.0" encoding="UTF-8"?>
<root>
   <currency>
      <element>MXN</element>
      <element>BTC</element>
      <element>MXN</element>
      <element>BTC</element>
      <element>MXN</element>
      <element>MXN</element>
      <element>MXN</element>
      <element>MXN</element>
   </currency>
   <delay>0</delay>
   <description>
      <element>Litecoin / Mexican Peso</element>
      <element>Ethereum / Bitcoin</element>
      <element>Ripple / Mexican Peso</element>
      <element>Ripple / Bitcoin</element>
      <element>Ethereum / Mexican Peso</element>
      <element>Bitcoin / Mexican Peso</element>
      <element>Mexican Peso / Ethereum</element>
      <element>Mexican Peso / Bitcoin</element>
   </description>
   <exchange-listed>BITSO</exchange-listed>
   <exchange-traded>BITSO</exchange-traded>
   <flags>
      <element>has-intraday,has-depth,is-tradable,has-dwm</element>
      <element>has-intraday,has-depth,is-tradable,has-dwm</element>
      <element>has-intraday,has-depth,is-tradable,has-dwm</element>
      <element>has-intraday,has-depth,is-tradable,has-dwm</element>
      <element>has-intraday,has-depth,has-dwm</element>
      <element>has-intraday,has-depth,is-tradable,has-dwm</element>
      <element>has-intraday,has-depth,is-tradable,has-dwm</element>
      <element>has-intraday,has-depth,is-tradable,has-dwm</element>
   </flags>
   <group>BITSO</group>
   <has-depth>true</has-depth>
   <has-dwm>true</has-dwm>
   <has-intraday>true</has-intraday>
   <has-no-volume>false</has-no-volume>
   <is-tradable>
      <element>true</element>
      <element>true</element>
      <element>true</element>
      <element>true</element>
      <element>false</element>
      <element>true</element>
      <element>true</element>
      <element>true</element>
   </is-tradable>
   <minmovement>1</minmovement>
   <pointvalue>1</pointvalue>
   <pricescale>
      <element>1000</element>
      <element>100000</element>
      <element>1000</element>
      <element>100000000</element>
      <element>100</element>
      <element>100</element>
      <element>100</element>
      <element>100</element>
   </pricescale>
   <session-extended>24x7</session-extended>
   <session-postmarket />
   <session-premarket />
   <session-regular>24x7</session-regular>
   <symbol>
      <element>LTCMXN</element>
      <element>ETHBTC</element>
      <element>XRPMXN</element>
      <element>XRPBTC</element>
      <element>ETHMXN</element>
      <element>BTCMXN</element>
      <element>MXNETH</element>
      <element>MXNBTC</element>
   </symbol>
   <ticker>
      <element>LTCMXN</element>
      <element>ETHBTC</element>
      <element>XRPMXN</element>
      <element>XRPBTC</element>
      <element>ETHMXN</element>
      <element>BTCMXN</element>
      <element>MXNETH</element>
      <element>MXNBTC</element>
   </ticker>
   <timezone>Etc/UTC</timezone>
   <type>bitcoin</type>
</root>

surefire ★★★
()
Ответ на: комментарий от surefire

Можно все испортить. Но в любом случае я сделаю XSLT который прозрачно такое конвертнет.... А в случае с JSON я буду писать 1 конвертер на PHP один на Java....

demrnd
()
Ответ на: комментарий от demrnd

Я же это не руками переводил.
А закинул в конвертер, значит и ты так можешь.
Не хочешь работать руками плати за overhead.

surefire ★★★
()
Ответ на: комментарий от demrnd

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

surefire ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.