Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Можно ли упорядочить xml коллекцию  [new]
d_lucas
Member

Откуда:
Сообщений: 11
Есть xml коллекция, которая содержит несколько десятков элементов типа int, имена которых расположены в алфавитном порядке. Т.е. элемент Агенты перед элементом ДоговорыСтрахования. Однако если, например, конвертировать из nvarchar в xml строку, в которой порядок следования элементов другой, получим и хml c тем же порядком, что и в исходной строке.

Declare @x xml(SkCollection)

SELECT @x =
'<ДоговорыСтрахования>311563</ДоговорыСтрахования>
<Агенты>276598</Агенты>'


Select @x
____________________________
Результат: <ДоговорыСтрахования>311563</ДоговорыСтрахования>
<Агенты>276598</Агенты>


Есть ли возможность сохранить именно тот порядок, который исходно был в самой коллекции, т.е. при конвертации '<ДоговорыСтрахования>311563</ДоговорыСтрахования>
<Агенты>276598</Агенты>' получить <Агенты>276598</Агенты><ДоговорыСтрахования>311563</ДоговорыСтрахования>)?
13 апр 12, 18:31    [12413902]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли упорядочить xml коллекцию  [new]
iljy
Member

Откуда:
Сообщений: 8711
d_lucas,

чего??
13 апр 12, 18:34    [12413918]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли упорядочить xml коллекцию  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
Предположительно на вопрос "Накуя это нуна" ответа нет в природе.
#Close

PS: "Надо" это не ответ.
13 апр 12, 18:39    [12413945]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли упорядочить xml коллекцию  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
Справка:
1. XML, как таковой, предполагает сортировку элементов (см. доку)
2. Храните как текст, если приспичило
13 апр 12, 18:41    [12413958]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли упорядочить xml коллекцию  [new]
d_lucas
Member

Откуда:
Сообщений: 11
Mnior
Справка:
1. XML, как таковой, предполагает сортировку элементов (см. доку)
2. Храните как текст, если приспичило


Как текст не подходит.

Не совсем понял, что имеется в виду. Надо ли внести изменения в коллекцию или же есть какой-то метод, который позволит упорядочить беспорядочные элементы в том порядке, в котором они расположены в коллекции?
13 апр 12, 20:01    [12414369]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли упорядочить xml коллекцию  [new]
iljy
Member

Откуда:
Сообщений: 8711
d_lucas,

в какой еще коллекции? В схеме чтоли?
13 апр 12, 22:02    [12414959]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли упорядочить xml коллекцию  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
d_lucas
сохранить именно тот порядок, который исходно был в самой коллекции
Нет такой бизнес-задачи.
Огласите её, чтоб эту муть убрать.
13 апр 12, 22:57    [12415307]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли упорядочить xml коллекцию  [new]
d_lucas
Member

Откуда:
Сообщений: 11
Mnior
d_lucas
сохранить именно тот порядок, который исходно был в самой коллекции
Нет такой бизнес-задачи.
Огласите её, чтоб эту муть убрать.


Пожалуйста. Необходимо ввести в широкую таблицу неповторяющиеся данные.
Две разные строки, приведенные ниже, при вводе в широкую таблицу конвертируются в одну
xml-переменную.

'<ДоговорыСтрахования>311563</ДоговорыСтрахования><Агенты>276598</Агенты>'

<Агенты>276598</Агенты><ДоговорыСтрахования>311563</ДоговорыСтрахования>

Я хочу иметь возможность этот факт заранее выяснить, чтобы не вводить лишнего.
13 апр 12, 23:18    [12415456]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли упорядочить xml коллекцию  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
FacePalm.jpg

1. И это не бизнес задача. Вы хоть понимаете разницу технического/программного решения от бизнес задачи?
2. XML как уникальный ключ? Что с вами?!
3. Как это - атрибуты объекта как его идентификация?
4. Хранение плоских данных (реляционных) в XML? Нагружаете процы лишней работой? Да и лишним кодом ...
5. Если у вас XиMиLиоз мозга в последней стадии, то можете использовать наборы столбцов

То есть коллекция не влияет на порядок?
Ну может кому то это надо. Например ради скорости.
Укажите версию сервера (2005 и 2008 всё-таки отличаются).
15 апр 12, 00:30    [12418315]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли упорядочить xml коллекцию  [new]
d_lucas
Member

Откуда:
Сообщений: 11
Mnior
FacePalm.jpg

1. И это не бизнес задача. Вы хоть понимаете разницу технического/программного решения от бизнес задачи?
2. XML как уникальный ключ? Что с вами?!
3. Как это - атрибуты объекта как его идентификация?
4. Хранение плоских данных (реляционных) в XML? Нагружаете процы лишней работой? Да и лишним кодом ...
5. Если у вас XиMиLиоз мозга в последней стадии, то можете использовать наборы столбцов

То есть коллекция не влияет на порядок?
Ну может кому то это надо. Например ради скорости.
Укажите версию сервера (2005 и 2008 всё-таки отличаются).

2008 с прицелом на 2012.
Далась Вам эта бизнес-задача... Кто вообще сказал, что я непременно должен решать именно ее?

Дело в том, что я уже использую широкие таблицы, о чем, собственно и написал ранее.
Никаких ключей НЕПОСРЕДСТВЕННО из xml я строить не собираюсь, и с чего Вы это взяли?

А вот идея построить ключ, например int, на основе xml, кажется мне вполне разумной.

Задача состоит в том, что существует совокупность учетных объектов, числом в несколько млн. Каждый из объектов может обладать определенными признаками, число которых варьируется от 0 до 50 (для примера).

Поэтому все объекты заливаются в широкую таблицу, признаки - в набор столбцов.

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

Дело в том, что запрос типа Select DISTINCT cast(CS as nvarchar)) from WideTable, где CS - набор столбцов, возвращает число строк, на порядок меньше, чем исходное число строк в широкой таблице. Поэтому и хочется построить новый ключ, сравнивая xml.

Но при этом xml-переменные, отличающиеся только порядком следования элементов, следует считать равными. И сравнивать их надо ДО заливки в широкую таблицу, поскольку сама заливка CS есть процесс медленный, а повторять его надо, в силу специфики бизнес-процесса, многократно.

Так вот, после всего сказанного: как конвертировать стринг в xml из коллекции, используя порядок следования элементов коллекции, а не порядок самого стринга?

Большая просьба просто ответить - есть такой способ или нет. У меня уже есть работающие иные варианты решения, но они не устраивают меня по скорости.
15 апр 12, 12:40    [12418653]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли упорядочить xml коллекцию  [new]
iljy
Member

Откуда:
Сообщений: 8711
d_lucas,

если ваши хмули соответствуют схеме независомо от порядка элементов, значит схема этот порядок не фиксирует. Вы ее смотрели вообще?
15 апр 12, 13:31    [12418725]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли упорядочить xml коллекцию  [new]
d_lucas
Member

Откуда:
Сообщений: 11
iljy
d_lucas,

если ваши хмули соответствуют схеме независомо от порядка элементов, значит схема этот порядок не фиксирует. Вы ее смотрели вообще?



CREATE XML SCHEMA COLLECTION [dbo].[SkCollection] AS
N'<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="Агенты" type="xsd:int" />
<xsd:element name="БанковскиеСчета" type="xsd:int" />
...
<xsd:element name="ЦенныеБумаги" type="xsd:int" /><xsd:element name="A_ROW_ID" type="xsd:int" /></xsd:schema>'
GO

Вот она. Середину выкинул, все однотипно. Как изменить?
15 апр 12, 13:43    [12418750]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли упорядочить xml коллекцию  [new]
iljy
Member

Откуда:
Сообщений: 8711
d_lucas,

если вы ее измените, то ваши данные перестанут соответствовать схеме. Вы ерундой занимаетесь.
15 апр 12, 14:13    [12418805]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли упорядочить xml коллекцию  [new]
d_lucas
Member

Откуда:
Сообщений: 11
iljy
d_lucas,

если вы ее измените, то ваши данные перестанут соответствовать схеме. Вы ерундой занимаетесь.


Тогда к чему Ваши вопросы? Если изменение схемы заведомо ничего не даст, затем на нее вообще смотреть? Чтобы дать очередной бессмысленный комментарий?
15 апр 12, 15:09    [12418892]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли упорядочить xml коллекцию  [new]
iljy
Member

Откуда:
Сообщений: 8711
d_lucas,

вы воспринимаете себя слишком всерьез. Этот форум читают разные люди, в том числе и новички, и поэтому желательно, чтоб они четко понимали, как делать не надо.
15 апр 12, 15:14    [12418903]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли упорядочить xml коллекцию  [new]
Владимир СА
Member

Откуда:
Сообщений: 7915
d_lucas
...
Задача состоит в том, что существует совокупность учетных объектов, числом в несколько млн. Каждый из объектов может обладать определенными признаками, число которых варьируется от 0 до 50 (для примера).

Поэтому все объекты заливаются в широкую таблицу, признаки - в набор столбцов.

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

Дело в том, что запрос типа Select DISTINCT cast(CS as nvarchar)) from WideTable, где CS - набор столбцов, возвращает число строк, на порядок меньше, чем исходное число строк в широкой таблице. Поэтому и хочется построить новый ключ, сравнивая xml.

Но при этом xml-переменные, отличающиеся только порядком следования элементов, следует считать равными. И сравнивать их надо ДО заливки в широкую таблицу, поскольку сама заливка CS есть процесс медленный, а повторять его надо, в силу специфики бизнес-процесса, многократно.

Так вот, после всего сказанного: как конвертировать стринг в xml из коллекции, используя порядок следования элементов коллекции, а не порядок самого стринга?

Большая просьба просто ответить - есть такой способ или нет. У меня уже есть работающие иные варианты решения, но они не устраивают меня по скорости.

Я извиняюсь... Но хотелось бы себя просветить...
Что реляционными таблицами нельзя задачу описать?
И что такое "широкая" таблица? Значит есть и "узкая" таблица?
16 апр 12, 07:24    [12420692]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли упорядочить xml коллекцию  [new]
iljy
Member

Откуда:
Сообщений: 8711
Владимир СА,

http://msdn.microsoft.com/ru-ru/library/ms186986.aspx

Естественно задачу можно решить реляционными методами, например - создать новую таблицу, в ней по разреженным полям создать уникальный индекс с IGNORE_DUP_KEY и перелить все данные. Но, так как внятно изложить задачу ТС отказывается, точное решение проблематично, можно только констатировать, что он занимается фигней.
16 апр 12, 10:01    [12420982]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли упорядочить xml коллекцию  [new]
Владимир СА
Member

Откуда:
Сообщений: 7915
Насколько я помню... давненько делал небольшой проект, где использовалось для описания какого-либо объекта и его неопределенного количества атрибутов всего 2 таблицы:
в первой идентификация обекта, во второй описание его атрибутов... связь один ко многим... причем можно рассматривать значение атрибута различными типами (int, float, datetime,...) - вот это поля значений. Как раз их можно и было бы рассматривать как разреженные столбцы... (но я правда этим не заморачивался).
И задача давнишняя... и ею заказчик до сих пор пользуется и не жалуется... Доволен...
16 апр 12, 10:34    [12421160]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли упорядочить xml коллекцию  [new]
iljy
Member

Откуда:
Сообщений: 8711
Владимир СА,

это называется модель EAV, и это альтернативное широким таблицам решение. У обоих есть как плюсы, так и минусы.
16 апр 12, 10:36    [12421175]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли упорядочить xml коллекцию  [new]
Владимир СА
Member

Откуда:
Сообщений: 7915
iljy
Владимир СА,
это называется модель EAV, и это альтернативное широким таблицам решение. У обоих есть как плюсы, так и минусы.
О сколько нам открытий чудных
Готовит просвещенья дух.... (С) А.С.Пушкин...
А я и не задумывался об этом.
Блин... А где увидеть про плюсы и минусы... Просто сейчас затишье... надо просвещаться...
16 апр 12, 10:47    [12421215]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли упорядочить xml коллекцию  [new]
iljy
Member

Откуда:
Сообщений: 8711
Владимир СА,

как обычно - в гугле. Набираете "eav vs wide table" - и в добрый путь. Если навскидку - то EAV однозначно выигрывает при пользовательском задании структуры, а WT как правило работает быстрее и запросы проще.
16 апр 12, 11:08    [12421329]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли упорядочить xml коллекцию  [new]
Mnior
Member

Откуда: Кишинёв
Сообщений: 6724
d_lucas
Далась Вам эта бизнес-задача...
Просто если проанализировать среднюю температуру по больнице что тут пишут на форумах, то менее чем полностью не эффективно решают бизнес задачу. Ну и как уже говорил iljy, это форум и поэтому решение в своей проблеме "оплачивается" обучением всяк сюда входящего.
d_lucas, вам с детства нравятся играть в партизанов? Если мы и дальше будем вытягивать всё клещами, то к 21.12.2012 точно не успеем. :)

Далее. Не люблю термины да ещё в диалектах, текст должен пониматься всеми, добавляйте "дублирующие" понятия/выражения. Это и для надёжности понимания.
Элемент <xsd:sequence> (ну конечно этот элемент был вырезан в приведённом XSD)
d_lucas видимо счастливый обладатель заветных армейских часов с восемью стрелками.
16 апр 12, 13:13    [12422154]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли упорядочить xml коллекцию  [new]
d_lucas
Member

Откуда:
Сообщений: 11
Mnior
d_lucas
Далась Вам эта бизнес-задача...
Просто если проанализировать среднюю температуру по больнице что тут пишут на форумах, то менее чем полностью не эффективно решают бизнес задачу. Ну и как уже говорил iljy, это форум и поэтому решение в своей проблеме "оплачивается" обучением всяк сюда входящего.
d_lucas, вам с детства нравятся играть в партизанов? Если мы и дальше будем вытягивать всё клещами, то к 21.12.2012 точно не успеем. :)

Далее. Не люблю термины да ещё в диалектах, текст должен пониматься всеми, добавляйте "дублирующие" понятия/выражения. Это и для надёжности понимания.
Элемент <xsd:sequence> (ну конечно этот элемент был вырезан в приведённом XSD)
d_lucas видимо счастливый обладатель заветных армейских часов с восемью стрелками.


Нет такого элемента, я внимательно просмотрел, что удалял. Если можно, поясните, как он должен выглядеть в данном случае, чтобы решить поставленную задачу.
16 апр 12, 13:47    [12422361]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли упорядочить xml коллекцию  [new]
d_lucas
Member

Откуда:
Сообщений: 11
Из того, что прочитал по ссылке, понял, что <xsd:sequence> не имеет отношения к сортировке самих элементов (если даже допустить, что таковая в принципе возможна). Или я чего-то не уловил?
16 апр 12, 13:54    [12422408]     Ответить | Цитировать Сообщить модератору
 Re: Можно ли упорядочить xml коллекцию  [new]
iljy
Member

Откуда:
Сообщений: 8711
d_lucas
Из того, что прочитал по ссылке, понял, что <xsd:sequence> не имеет отношения к сортировке самих элементов (если даже допустить, что таковая в принципе возможна). Или я чего-то не уловил?

Сурово.... Первое же предложение:
BOL
Требует, чтобы элементы группы появлялись в содержащем их элементе в указанной последовательности.
16 апр 12, 13:59    [12422446]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить