powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / Java [игнор отключен] [закрыт для гостей] / Преобразовать XML utf-8 в utf-16 вместе с заголовком
64 сообщений из 64, показаны все 3 страниц
Преобразовать XML utf-8 в utf-16 вместе с заголовком
    #39966616
selis76
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть сообщение xml сообщения в формате UTF-8 т.е. там из само сообщение и его заголовок с указанием версии
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
нужно сконвертировать XML в Utf-16 вместе с заголовком.

Самый легкий путь это конечно снести заголовок и просто перекодировать сообщение в UTF-16 как текст, но хотелось бы более технологичный вариант.

Напр через JAXP через парсер считать XML (без DOM просто Simple API ), и перевести в другую кодировку.
В документации JAXP и поиском хорошего варианта я не нашел.

Задача относится к известной проблеме - как сохранить Utf-8 в колонку MS SQL с типом XML . MS SQL хранит все в UTF-16, а сообщение приходит в UTF-8

Я сначала думал что SQLXML может сам преобразовать, но ошибался .
Код: java
1.
2.
3.
    String messagetext = new String(body, "UTF-8");
                  SQLXML TrueXML = QJDBCConnect.createSQLXML() ;
                    TrueXML.setString(messagetext);



Выдаст "XML parsing: line 1, character 38, unable to switch the encoding"

Самое удивительное если сообщение передать в UTF-8 но заголовок поправить на encoding="UTF-16" передача в SQl пройдет нормально. Возможно из за того что Java хранит строки внутри в Utf-16 по некоторым источникам.
В общем хотелось бы услышать Best practice , не хочется писать костыли
...
Рейтинг: 0 / 0
Преобразовать XML utf-8 в utf-16 вместе с заголовком
    #39966620
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
selis76,
Делай как проще. Сама задача есть костыль.
А ты думаешь как костыль сделать технологичнее)))
...
Рейтинг: 0 / 0
Преобразовать XML utf-8 в utf-16 вместе с заголовком
    #39966624
selis76
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
selis76,
Делай как проще. Сама задача есть костыль.
А ты думаешь как костыль сделать технологичнее)))

Ну это странно, что сама задача костыль вроде перекодировка в более широкую кодировку не является криминалом.
Мне потом для Win-1251 тоже отдельный костыль писать?
...
Рейтинг: 0 / 0
Преобразовать XML utf-8 в utf-16 вместе с заголовком
    #39966626
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
selis76,
Костыль или нет задача мы поймем если ты напишешь откуда появляется кодировка НЕ ТА ЧТО ТРЕБУЕТСЯ.
...
Рейтинг: 0 / 0
Преобразовать XML utf-8 в utf-16 вместе с заголовком
    #39966628
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
selis76,
Сиквел хранит только в utf 16, а приходят извне нас utf 8.
Так?
...
Рейтинг: 0 / 0
Преобразовать XML utf-8 в utf-16 вместе с заголовком
    #39966634
selis76
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
selis76,
Сиквел хранит только в utf 16, а приходят извне нас utf 8.
Так?

да
Сообщения приходят из шины RabbitMQ, кодировка сообщения известна. Я их сохраняю в свой буфер, буфер на MSSQL он XML хранит в UTF16.
При маштабировании могут появляться новые кодировки
...
Рейтинг: 0 / 0
Преобразовать XML utf-8 в utf-16 вместе с заголовком
    #39966639
Фотография Valentin Kolesnikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
selis76
Есть сообщение xml сообщения в формате UTF-8 т.е. там из само сообщение и его заголовок с указанием версии
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
нужно сконвертировать XML в Utf-16 вместе с заголовком.

Самый легкий путь это конечно снести заголовок и просто перекодировать сообщение в UTF-16 как текст, но хотелось бы более технологичный вариант.

Напр через JAXP через парсер считать XML (без DOM просто Simple API ), и перевести в другую кодировку.
В документации JAXP и поиском хорошего варианта я не нашел.

Задача относится к известной проблеме - как сохранить Utf-8 в колонку MS SQL с типом XML . MS SQL хранит все в UTF-16, а сообщение приходит в UTF-8

Я сначала думал что SQLXML может сам преобразовать, но ошибался .
Код: java
1.
2.
3.
    String messagetext = new String(body, "UTF-8");
                  SQLXML TrueXML = QJDBCConnect.createSQLXML() ;
                    TrueXML.setString(messagetext);



Выдаст "XML parsing: line 1, character 38, unable to switch the encoding"

Самое удивительное если сообщение передать в UTF-8 но заголовок поправить на encoding="UTF-16" передача в SQl пройдет нормально. Возможно из за того что Java хранит строки внутри в Utf-16 по некоторым источникам.
В общем хотелось бы услышать Best practice , не хочется писать костыли


Underscore-java умеет читать xml строку в кодировке UTF-16.

Нужно прочитать строку в карту, поменять кодировку и сохранить в строку.

Хорошего вам вечера!
...
Рейтинг: 0 / 0
Преобразовать XML utf-8 в utf-16 вместе с заголовком
    #39966645
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
selis76,
И что? Не шина их перекодирует, а все 500 адаптеров пишут у себя код перекодировки?
Как то странно имхо.
...
Рейтинг: 0 / 0
Преобразовать XML utf-8 в utf-16 вместе с заголовком
    #39966649
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
selis76,
Дай ссыль что сиквел не умеет хранить другие кодировки.
Я нашел
https://docs.microsoft.com/ru-ru/sql/relational-databases/native-client/features/using-xml-data-types?view=sql-server-ver15
...
Рейтинг: 0 / 0
Преобразовать XML utf-8 в utf-16 вместе с заголовком
    #39966664
Фотография Dmitry.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
наличие xml заголовка типа <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
в java строке - абсурдно

т.к. для получения строки уже была использована кодировка

Код: java
1.
String messagetext = new String(body, "UTF-8");



т.е. если в body есть заголовок encoding="windows-1251" а ты применил "UTF-8", то ты поломал кодировку сообщения.

попробуй использовать TrueXML.setBinaryStream().write(body) вместо TrueXML.setString(messagetext)
...
Рейтинг: 0 / 0
Преобразовать XML utf-8 в utf-16 вместе с заголовком
    #39966966
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
selis76
PetroNotC Sharp
selis76,
Сиквел хранит только в utf 16, а приходят извне нас utf 8.
Так?

да
Сообщения приходят из шины RabbitMQ, кодировка сообщения известна. Я их сохраняю в свой буфер, буфер на MSSQL он XML хранит в UTF16.
При маштабировании могут появляться новые кодировки


Не делайте буфер на MS SQL.

Ну если делаете, то храните XML в BLOB-ах. :-)
...
Рейтинг: 0 / 0
Преобразовать XML utf-8 в utf-16 вместе с заголовком
    #39966974
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgul,
+1
Аффтар,
1. Вы не читаете что вам пишут. Сиквел хранит любую кодировку.
2. Не используйте сиквел.
Итого проблема высосана из пальца.
...
Рейтинг: 0 / 0
Преобразовать XML utf-8 в utf-16 вместе с заголовком
    #39967065
selis76
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp
mad_nazgul,
+1
Аффтар,
1. Вы не читаете что вам пишут. Сиквел хранит любую кодировку.
2. Не используйте сиквел.
Итого проблема высосана из пальца.


Petro - к сожалению вы не прочитали ту ссылку которую привели (я понимаю много букв) . Покажу пальцем.
https://docs.microsoft.com/ru-ru/sql/relational-databases/native-client/features/using-xml-data-types?view=sql-server-ver15
здесь описываются правила того как SQL сервер проводит конвертации в свой внутренний тип.
Возьмите напр раздел ODBC

"
When converting from C to SQL data types, SQL_C_WCHAR, SQL_C_BINARY, and SQL_C_CHAR can all be converted to SQL_SS_XML, with the following stipulations:

SQL_C_WCHAR: A BOM is always be added to data sent to the server. If the data already started with a BOM, this results in two BOMs at the start of the buffer. The server uses the first BOM to recognize the encoding as UTF-16 and then discard it. The second BOM is interpreted as a zero-width nonbreaking space character.

SQL_C_BINARY: No conversion is performed, and the data is passed to the server "as is." UTF-16 data must start with a BOM; if it does not, the encoding may not be correctly recognized by the server.

SQL_C_CHAR: The data is converted to UTF-16 on the client and sent to the server just as SQL_C_WCHAR (including the addition of a BOM). If the XML is not encoded in the client code page this can cause data corruption.
"

Про OleDB аналогично. Я думаю это достаточно для понимания что проблема существует и SQL сервер хранит XML тип в UTF-16.
Если спросите гугл "ms sql xml utf-8 utf-16 " там будет куча подобных проблем.

Больше я бы не хотел обсуждать постановку задачи, поскольку для меня проблема очевидна

P S Версия SQL у меня 2008r2 , в более старших там не лучше , кому интересно см тут https://techcommunity.microsoft.com/t5/sql-server/introducing-utf-8-support-for-sql-server/ba-p/734928 они расширили поддержку для строковых типов но для XML колонок нет
Кстати SQL вообще на внутренних типах сидит на UTF-16 на всех типах и только с 2019 го там начали UTF-8 внедрять
Более того Db2 тоже этим страдает https://www.ibm.com/support/knowledgecenter/SSEPEK_11.0.0/java/src/tpc/imjcc_c0021816.html
...
Рейтинг: 0 / 0
Преобразовать XML utf-8 в utf-16 вместе с заголовком
    #39967071
selis76
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgul


Не делайте буфер на MS SQL.

Ну если делаете, то храните XML в BLOB-ах. :-)


А зачем в SQL XML колонки как специальный тип? Подумали? .....
а ну конечно чтобы XMLQuery использовать XPath и вообще много чего интересного. Нельзя узко мыслить в современном мире, иначе XML будет восприниматься как обычный текст с тегами, без валидации по схеме и без применения стека XML технологий.
...
Рейтинг: 0 / 0
Преобразовать XML utf-8 в utf-16 вместе с заголовком
    #39967073
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
selis76
mad_nazgul


Не делайте буфер на MS SQL.

Ну если делаете, то храните XML в BLOB-ах. :-)


А зачем в SQL XML колонки как специальный тип? Подумали? .....
а ну конечно чтобы XMLQuery использовать XPath и вообще много чего интересного. Нельзя узко мыслить в современном мире, иначе XML будет восприниматься как обычный текст с тегами, без валидации по схеме и без применения стека XML технологий.

Вы правы наполовину.
Если используете запросы к XML, то дайте пример.
Если нет, то оверхед по архитектуре.
...
Рейтинг: 0 / 0
Преобразовать XML utf-8 в utf-16 вместе с заголовком
    #39967075
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
selis76,
Если для вас проблема с сиквелом очевидна, значит вам не трудно дать ссыль на нее с нашего форума по сиквелу?
...
Рейтинг: 0 / 0
Преобразовать XML utf-8 в utf-16 вместе с заголовком
    #39967076
selis76
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PetroNotC Sharp

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

Perto прошу не участвовать в обсуждении, я не собираюсь рассказывать всю свою архитектуру для этого есть другой раздел форума
https://www.sql.ru/forum/systems-architecture . Как говорится не знаете ответа пройдите мимо
...
Рейтинг: 0 / 0
Преобразовать XML utf-8 в utf-16 вместе с заголовком
    #39967079
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
selis76

Самое удивительное если сообщение передать в UTF-8 но заголовок поправить на encoding="UTF-16" передача в SQl пройдет нормально. Возможно из за того что Java хранит строки внутри в Utf-16 по некоторым источникам.
В общем хотелось бы услышать Best practice , не хочется писать костыли

Несколько мыслей.

1) Непонятно зачем это делать. Utf-8 достаточно удобная кодировка. И должна быть поддержана всеми средствами
чтения текстовых документов.

2) Xml - это не просто текст. Это документ с множеством уровней или слоёв семантики и каждый раз когда вы его
процессите вы должны правильно реагировать на разные действия. Как-то реакция на XML-entities. Что делать?
Разворачивать или нет? Блоки обработки инструкций и стилевая транфсормация. Теоретически к документу
может быть пристёгнут скрипт xslt который что-то с ним делает при отображении. Будете-ли вы его тоже обрабатывать?
Или нет? Вопрос. Далее. Indentations, переводы строк и форматирование. Если документ внизу в footer содержит
ЭЦП тогда это действие надо делать аккуратно чтоб сигнатура не сломалась. Иначе документ станет с невалидной
подписью. Здесь я не готов пока приводить все аргументы но еще во времена развития SOAP были рекомендации
по тому как вычислять ЭЦП с учотом например пробелов или переносов в меж-теговом пространстве. И разные
парсеры (Sax, Stax, Saxon, Xerces, LibXML, MSXml) могли по разному интерпретировать поток тегов. Кто-то брал
во внимание форматирование и кто-то нет.

Вобщем при прочих равных условиях лучше ничего не трогать и оставить как есть. Тоесть просто смена кодировки
- ну возьмите Reader/Writer с кодировками и сделайте.

Как только вы захотите более технологичный вариант - поднимутся "технологичные" вопросы.
...
Рейтинг: 0 / 0
Преобразовать XML utf-8 в utf-16 вместе с заголовком
    #39967082
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
selis76,
Добро пожаловать в публичный форум.
...
Рейтинг: 0 / 0
Преобразовать XML utf-8 в utf-16 вместе с заголовком
    #39967083
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
selis76,
Если мне идти в "разработка ИС" тогда вам в ветку сиквела. Вдруг вы дезу гоните. А мы запомним))
...
Рейтинг: 0 / 0
Преобразовать XML utf-8 в utf-16 вместе с заголовком
    #39967106
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
selis76
mad_nazgul


Не делайте буфер на MS SQL.

Ну если делаете, то храните XML в BLOB-ах. :-)


А зачем в SQL XML колонки как специальный тип? Подумали? .....
а ну конечно чтобы XMLQuery использовать XPath и вообще много чего интересного. Нельзя узко мыслить в современном мире, иначе XML будет восприниматься как обычный текст с тегами, без валидации по схеме и без применения стека XML технологий.


Э-э-э я о том, что не надо решать задачу, не удобными инструментами.
Если нужен буфер/кэш, то для этого есть другие инструменты, которые заточены под эту работу.
Запихивать все в БД, это так себе идея.

Когда мне говорят, что собираются хранить в БД JSON или XML у меня первый вопрос "Зачем?", второй "Можно ли этого не делать?", третий "Можно ли хранить данные в РМД?" и т.д.

Т.к. хранение в "гибких форматах" в БД это просто оправдание "кривой архитектуры".

Либо у вас приложение не зависит от системы хранения данных.
Так что можно достаточно безболезненно можно поменять одно хранилище на другое.
Либо у вас появлется жуткокостыльный монстр, которой потом будут разгребать за вами.
Хорошо если быстро похоронят.
...
Рейтинг: 0 / 0
Преобразовать XML utf-8 в utf-16 вместе с заголовком
    #39967173
selis76
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitry.
наличие xml заголовка типа <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
в java строке - абсурдно

т.к. для получения строки уже была использована кодировка

Код: java
1.
String messagetext = new String(body, "UTF-8");



т.е. если в body есть заголовок encoding="windows-1251" а ты применил "UTF-8", то ты поломал кодировку сообщения.

попробуй использовать TrueXML.setBinaryStream().write(body) вместо TrueXML.setString(messagetext)


Код: java
1.
TrueXML.setBinaryStream().write(body) 

работает.
Хотя непонятно тогда почему на том же сообщении в UTF-8 НЕ работает
Код: java
1.
TrueXML.setString(messagetext)



Судя по стандарту https://www.w3.org/TR/xml/#sec-guessing должно было работать, но видимо SQLXML от setString ждет чтото другого.

Проверю еще на разных кодировках, спасибо за наводку
...
Рейтинг: 0 / 0
Преобразовать XML utf-8 в utf-16 вместе с заголовком
    #39967180
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgul
selis76
пропущено...


А зачем в SQL XML колонки как специальный тип? Подумали? .....
а ну конечно чтобы XMLQuery использовать XPath и вообще много чего интересного. Нельзя узко мыслить в современном мире, иначе XML будет восприниматься как обычный текст с тегами, без валидации по схеме и без применения стека XML технологий.


Э-э-э я о том, что не надо решать задачу, не удобными инструментами.
Если нужен буфер/кэш, то для этого есть другие инструменты, которые заточены под эту работу.
Запихивать все в БД, это так себе идея.

Когда мне говорят, что собираются хранить в БД JSON или XML у меня первый вопрос "Зачем?", второй "Можно ли этого не делать?", третий "Можно ли хранить данные в РМД?" и т.д.

Т.к. хранение в "гибких форматах" в БД это просто оправдание "кривой архитектуры".

Я думаю что можно если на уровне бизнеса мы договариваемся что JSON-документ - атомарен
с точки зрения БЛ и мы никогда никогда не будем модифицировать его поля в транзакциях
и в кросс-зависимостях от других документов и не делать петель и дедлоков.

Кстати посмотрите вот этот господин рассказывает что разрабатывал платёжные системы
и он рекомендует JSON(B) в PG.

YouTube Video
...
Рейтинг: 0 / 0
Преобразовать XML utf-8 в utf-16 вместе с заголовком
    #39967239
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton

Я думаю что можно если на уровне бизнеса мы договариваемся что JSON-документ - атомарен
с точки зрения БЛ и мы никогда никогда не будем модифицировать его поля в транзакциях
и в кросс-зависимостях от других документов и не делать петель и дедлоков.


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

А потом выясниться, что по этим JSON-ам нужно аналитику делать, да еще "по времени".

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

Сам участвовал в проекте, где "архитекторы" решили все данные хранить в JSON (MS SQL)
Для ввода данных было еще норм, но пользователи постоянно жаловались на тормоза.

А вот когда приступили к отчетам, то базисты "вешались".
Запросы по несколько часов. БД вставала колом.
В конце концов решили делать отдельную БД для построения отчетов. Нормализованную без JSON.
И вся идея "гибкости ввода" пошла по бороде.
Т.к. нужно было постоянно отслеживать изменения в JSON. Менять скрипты загрузки и менять структуру БД для отчетов.

ИМХО там БД нужна была, как телеге пятая нога.
Т.е. данные прогонялись по Event Sourcing, в архитектуре CQRS.
А для отчетов нужно было брать что-то вроде Hadoop.

Тогда может быть было бы полегче.

А так. Взяли худшее из двух "миров" и огребли проблемы по полной.

mayton

Кстати посмотрите вот этот господин рассказывает что разрабатывал платёжные системы
и он рекомендует JSON(B) в PG.

Ну и посмотрите последние доклады Бартунова по поводу перформанса JSON.


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

Да. Возможность есть. Да работает достаточно быстро. Но стоить систему на данной фиче не надо.
...
Рейтинг: 0 / 0
Преобразовать XML utf-8 в utf-16 вместе с заголовком
    #39967253
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgul
А так. Взяли худшее из двух "миров" и огребли проблемы по полной.

Ну так понятно, что надо было сразу брать монгу и всё бы работало нормально.
...
Рейтинг: 0 / 0
Преобразовать XML utf-8 в utf-16 вместе с заголовком
    #39967260
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgul

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

Я не понимаю к чему ты клонишь. Требования могут меняться. Это правда.

Но из этого не следует что любой входящий документ в систему нужно тут-те нормализовывать
и раскладывать по табличкам.
...
Рейтинг: 0 / 0
Преобразовать XML utf-8 в utf-16 вместе с заголовком
    #39967322
selis76
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgul, у вас там какая то своя боль по поводу хранения в форматах XML Json и вы куда то повели далеко от темы
Как я ранее написал " Я их сохраняю в свой буфер, буфер на MSSQL" это именно буфер. Шина не может долго хранить очередь, а вот исходники сообщений нужно гдето хранить для последущей загрузки в структуры реляционной базы данных. В XML колонках это удобно, допустим загрузили из буфера данные в таблицы СУБД, а по истечении времени понадобилось вытащить из сообщений еще один реквизит - просто сканируем буфер еще раз и добавляем его + в регулярный код. При наличии буфера всегда можно предъявить исходник сообщения, по которому создали документ или операцию в таблицах СУБД. Плюсов много не буду все перечислять,.Естественно использовать XML колонки для аналитических отчетов это противопоказано - просто технологически нет достаточных средств для этого.
...
Рейтинг: 0 / 0
Преобразовать XML utf-8 в utf-16 вместе с заголовком
    #39967332
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
selis76,

Так зачем для этого mssql? Выкинь её, раз с ней проблемы.
...
Рейтинг: 0 / 0
Преобразовать XML utf-8 в utf-16 вместе с заголовком
    #39967335
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster
mad_nazgul
А так. Взяли худшее из двух "миров" и огребли проблемы по полной.

Ну так понятно, что надо было сразу брать монгу и всё бы работало нормально.


Почему бы и нет.
Mongo + Elastic Serach.

Если таки нужна БД, то либо из Mongo, либо паралельно с ней сохраняем в СУРБД.
...
Рейтинг: 0 / 0
Преобразовать XML utf-8 в utf-16 вместе с заголовком
    #39967339
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
mad_nazgul

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

Я не понимаю к чему ты клонишь. Требования могут меняться. Это правда.

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


Я с этим не спорю.
Просто не надо использовать СУРБД для хранения ненормализованных данных.
Там для этого слишком много накладных расходов, связанных с ACID.
...
Рейтинг: 0 / 0
Преобразовать XML utf-8 в utf-16 вместе с заголовком
    #39967343
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
selis76
mad_nazgul, у вас там какая то своя боль по поводу хранения в форматах XML Json и вы куда то повели далеко от темы
Как я ранее написал " Я их сохраняю в свой буфер, буфер на MSSQL" это именно буфер.


Если это кэш, то MS SQL для этого самое не подходящее решение.
Есть другие решения, которые справляются гораздо лучше и с меньшими накладными расходами.
Та же mongo. Если данных не слишком много, то можно In Memory DB.

Ну или вообще заменить вашу MQ на kafka, которая по умолчанию хранить сообщение 7 суток, этот параметр можно изменять.

Вы выбрали, самое не удачное решение, теперь боретесь с его последствиями. ;-)
...
Рейтинг: 0 / 0
Преобразовать XML utf-8 в utf-16 вместе с заголовком
    #39967347
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
selis76,
Вы упрямы. Взяли бы еще оракл).
Вам говорят, что получилась каша.
В том числе из терминов.
Кеш?
Буфер?
Архив?
Логирование?
OLAP / OLTP?
...
Рейтинг: 0 / 0
Преобразовать XML utf-8 в utf-16 вместе с заголовком
    #39967348
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
selis76,

автора по истечении времени понадобилось вытащить из сообщений еще один реквизит - просто сканируем буфер еще раз и добавляем его + в регулярный код.
Вчерашним числом?
Апдейт кода без новой версии?
Пример изменения кода не трудно привести?
...
Рейтинг: 0 / 0
Преобразовать XML utf-8 в utf-16 вместе с заголовком
    #39967351
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgul
selis76
mad_nazgul, у вас там какая то своя боль по поводу хранения в форматах XML Json и вы куда то повели далеко от темы
Как я ранее написал " Я их сохраняю в свой буфер, буфер на MSSQL" это именно буфер.


Если это кэш, то MS SQL для этого самое не подходящее решение.
Есть другие решения, которые справляются гораздо лучше и с меньшими накладными расходами.
Та же mongo. Если данных не слишком много, то можно In Memory DB.

Мне кажется ты уже третий раз киваешь подбородком на mongo.
Давай посмотрим цены на Amazon инстнции посуточно и может
так окажется что mongo/PG лежат вообще в одной ценовой категории.

(я имею в виду что цена не будет отличаться на порядки).


Тогда все равно что покупать. А PG даст опцию. Или возможность добавить
что-то реляционное. Монго такого точно не даст.
...
Рейтинг: 0 / 0
Преобразовать XML utf-8 в utf-16 вместе с заголовком
    #39967352
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

Какой еще амазон? Только облако от антрилоси.ком!
...
Рейтинг: 0 / 0
Преобразовать XML utf-8 в utf-16 вместе с заголовком
    #39967355
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ради бога. Тогда давайте в обсуждение внесем еще прейскурант на другие услуги и топик
будет в плоскости обсуждения как чего сделать дешевле. Я не против вобщем.

Инженер - должен быть еще и хозяйственник.
...
Рейтинг: 0 / 0
Преобразовать XML utf-8 в utf-16 вместе с заголовком
    #39967356
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
selis76,
Почему в буфере НЕ ИСХОДНОЕ сообщение в байтовом или символьном виде?
Код загрузки то одинаков.
С течением времени вы решили достать ветку ИмяЛюбовницы......
...
Рейтинг: 0 / 0
Преобразовать XML utf-8 в utf-16 вместе с заголовком
    #39967358
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так ка сроки хранения буфера НА ДИСКЕ вы не указали, то такой юз кейс.
Вы раскурочили и перекодировали xml 15 летнюю на кредит.
Потом команда Продлить его.
А исходного то нет.
...
Рейтинг: 0 / 0
Преобразовать XML utf-8 в utf-16 вместе с заголовком
    #39967361
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
selis76
Dmitry.
наличие xml заголовка типа <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
в java строке - абсурдно

т.к. для получения строки уже была использована кодировка

Код: java
1.
String messagetext = new String(body, "UTF-8");



т.е. если в body есть заголовок encoding="windows-1251" а ты применил "UTF-8", то ты поломал кодировку сообщения.

попробуй использовать TrueXML.setBinaryStream().write(body) вместо TrueXML.setString(messagetext)


Код: java
1.
TrueXML.setBinaryStream().write(body) 

работает.
Хотя непонятно тогда почему на том же сообщении в UTF-8 НЕ работает
Код: java
1.
TrueXML.setString(messagetext)



Те кто писал библиотеку тоже люди
тут скорее всего просто берется кодировка платформы.
Код: sql
1.
TrueXML.setString(messagetext)


здесь
Код: sql
1.
TrueXML.setBinaryStream() 


кодировка выдергивается из
Код: sql
1.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>


в этом заголовке только ascii символы так можно читать в нескольких кодировках и везеде правильно прочитается
UTF8, latin, ascii
...
Рейтинг: 0 / 0
Преобразовать XML utf-8 в utf-16 вместе с заголовком
    #39967362
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для истории можно было туловище документов писать в Log4j2 с ротацией и архивацией в gzip.
И пускай себе лежит. Обслуживание - минимальное.
...
Рейтинг: 0 / 0
Преобразовать XML utf-8 в utf-16 вместе с заголовком
    #39967365
selis76
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mad_nazgul
selis76
mad_nazgul, у вас там какая то своя боль по поводу хранения в форматах XML Json и вы куда то повели далеко от темы
Как я ранее написал " Я их сохраняю в свой буфер, буфер на MSSQL" это именно буфер.


Если это кэш, то MS SQL для этого самое не подходящее решение.
Есть другие решения, которые справляются гораздо лучше и с меньшими накладными расходами.
Та же mongo. Если данных не слишком много, то можно In Memory DB.

Ну или вообще заменить вашу MQ на kafka, которая по умолчанию хранить сообщение 7 суток, этот параметр можно изменять.

Вы выбрали, самое не удачное решение, теперь боретесь с его последствиями. ;-)


Это именно буфер истории сообщений, сообщение как правило читается максиму 2 -3 раза при импорте в субд. За год может набежать 5 терабайт. Если хотите предложить лучшее решение нужно видеть полную картину и уже от нее думать, но я не дал достаточно информации чтобы думать ;)
...
Рейтинг: 0 / 0
Преобразовать XML utf-8 в utf-16 вместе с заголовком
    #39967367
selis76
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot lleming#22147983]
selis76
пропущено...

...
здесь
Код: sql
1.
TrueXML.setBinaryStream() 


кодировка выдергивается из
Код: sql
1.
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>


в этом заголовке только ascii символы так можно читать в нескольких кодировках и везеде правильно прочитается
UTF8, latin, ascii


Ну тогда это то что нужно, исходники интересно для Jdbc можно смотреть?
...
Рейтинг: 0 / 0
Преобразовать XML utf-8 в utf-16 вместе с заголовком
    #39967369
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
selis76,

Да кидай всё на диск в gzip. Зачем тебе эти субд? Надо будет что-то выбрать, вычитаешь с файла и распарсишь.
...
Рейтинг: 0 / 0
Преобразовать XML utf-8 в utf-16 вместе с заголовком
    #39967371
selis76
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster
selis76,

Да кидай всё на диск в gzip. Зачем тебе эти субд? Надо будет что-то выбрать, вычитаешь с файла и распарсишь.


мне тут смайликов недостаточно что выразить эмоции
...
Рейтинг: 0 / 0
Преобразовать XML utf-8 в utf-16 вместе с заголовком
    #39967373
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
selis76
мне тут смайликов недостаточно что выразить эмоции

Бери мои.


Да что такого? Сейчас ФС такие, что работают не хуже, чем субд в некоторых вещах. Ставишь этот модный zfs и вперёд.
...
Рейтинг: 0 / 0
Преобразовать XML utf-8 в utf-16 вместе с заголовком
    #39967374
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
selis76
crutchmaster
selis76,

Да кидай всё на диск в gzip. Зачем тебе эти субд? Надо будет что-то выбрать, вычитаешь с файла и распарсишь.


мне тут смайликов недостаточно что выразить эмоции

Ты-же понимаешь что над 1 постом обычно больше смеются. Пафоса-то больше.
...
Рейтинг: 0 / 0
Преобразовать XML utf-8 в utf-16 вместе с заголовком
    #39967375
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster
selis76
мне тут смайликов недостаточно что выразить эмоции

Бери мои.


Да что такого? Сейчас ФС такие, что работают не хуже, чем субд в некоторых вещах. Ставишь этот модный zfs и вперёд.

Zfs какраз не очень быстрый.
...
Рейтинг: 0 / 0
Преобразовать XML utf-8 в utf-16 вместе с заголовком
    #39967385
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

Да зачем ему сильно быстрый? Главное, чтобы всё на месте осталось в случае чего и можно было откатываться. Транзакции им нахрен не нужны, там микросервисы с xml, какое-то хитрое индексирование, триггеры тоже. Надо будет аналитику, пробегутся по куче файлов, засунут что надо в субд, да посчитают. Что-то надо real-time - тоже отдельно, зачем 5тб/год тащить в субд?
...
Рейтинг: 0 / 0
Преобразовать XML utf-8 в utf-16 вместе с заголовком
    #39967391
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Для такого архива вообще не нужны транзакции. Только write-only. Идемпотентность. И политика бекапа чтоб хотя-бы в двух
разных датацентрах лежала копия. И гонять по нему Kibana для человеческого поиска. Она кстати прекрасно справляется
с gzip архивами и поиском по логам.
...
Рейтинг: 0 / 0
Преобразовать XML utf-8 в utf-16 вместе с заголовком
    #39967407
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster,
Согласен. Они смешали боевую Модель данных (непротиворечивую и валидированную) и архив входных сообщений терабайтных.
Причем перекодированных.

авторЭто именно буфер истории сообщений, сообщение как правило читается максиму 2 -3 раза при импорте в субд. За год может набежать 5 терабайт. Если хотите предложить лучшее решение нужно видеть полную картину и уже от нее думать, но я не дал достаточно информации чтобы думать ;)
Ну дак мы и заключили по твоему молчанию что постановка - Г.
...
Рейтинг: 0 / 0
Преобразовать XML utf-8 в utf-16 вместе с заголовком
    #39967437
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так бывает. Приходит чел к терапевту. С фурункулом на щеке. Врач смотрит ему в глаза. Качает головой.
Говорит ану-ко давай-ко мы тебя послушаем. И пошло... и острый живот у него с гастритом. И простатит размером
с арбуз. С техикордия пошаливает ... ну короче направлений надо писать на 20 больниц еще и обследований.

Так и в топике.
...
Рейтинг: 0 / 0
Преобразовать XML utf-8 в utf-16 вместе с заголовком
    #39967449
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
Это плата за бесплатную техподдержку. Топик собственность форума).
Поэтому буффер мессаннджей нестираемый.
И никому в голову не придет рядом хранить исходные посты юзверей.
...
Рейтинг: 0 / 0
Преобразовать XML utf-8 в utf-16 вместе с заголовком
    #39967630
lleming
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
selis76

Самое удивительное если сообщение передать в UTF-8 но заголовок поправить на encoding="UTF-16" передача в SQl пройдет нормально.


такое обычно говорит о том что xml руками собирают конкатенацией, заголовок тупо приклеили к телу
...
Рейтинг: 0 / 0
Преобразовать XML utf-8 в utf-16 вместе с заголовком
    #39967638
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Во времена 2000 офиса и старого JasperReports я придумал как разогнать тормозное формирование отчотов.
Мы просто делали docx-документ шаблон а потом я обычными текстовыми операциями "врезал" в него
реквизиты в особые места помеченные тегами типа ${fucken.userName} e.t.c. Это было херово с точки
зрения архитектуры зато быстро.

Вот этот xml-хидер напомнил мне.
...
Рейтинг: 0 / 0
Преобразовать XML utf-8 в utf-16 вместе с заголовком
    #39967669
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Это было херово с точки зрения архитектуры зато быстро.

Да я вообще не всегда понимаю это религиозное соблюдение чистоты архитектуры, когда оно выходит тормозами и не нужными сложностями. Велосипеды наше всё! Велосипеды сейчас лучше, чем костыли потом![br]
Что тс вообще смущается? Ну поменял бы в заголовке 8 на 16, за забил. Зачем вот это вот всё фи "не красиво", "не архитектурно", "костыли". Не надо стесняться простых и эффективных решений!
...
Рейтинг: 0 / 0
Преобразовать XML utf-8 в utf-16 вместе с заголовком
    #39967693
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ради отвлеченного примера.

Любой процесс бэкапа базы данных - это по сути баланс между скоростью и совместимостью.
Те кто хотят совместимости - делают экспорты либо в SQL-скрипт либо специальный бинарь
толерантный к last-big endian как делает Oracle. Те кто хочет скорости - делает физическоую
файловую копию но рискует эту копию не поднять в новой версии софта или в другой разрядности
железа к примеру.

И здесь нет единого правильного решения. Т.к. время бэкапа тоже является важным фактором безопасности
резервной копии. Если логическая копия делается медленнее чем накатываются новые данные (снимок устареет)
то ее надо ресетнуть и начать заново и так до бесконечности.

В нашем случае с XML - если модификация заголовка решает проблему - то пускай автор так и делает.
...
Рейтинг: 0 / 0
Преобразовать XML utf-8 в utf-16 вместе с заголовком
    #39967783
Фотография Valentin Kolesnikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,

Добавил новый метод для библиотеки из соседней ветки 17790633 .

Код: java
1.
String xmlWithNewEncoding = U.changeXmlEncoding(xml, encoding);


При записи в файл нужно переконвертировать строку в нужную кодировку.

Код: java
1.
Files.write(path, U.changeXmlEncoding(xml, encoding).getBytes(encoding));



Хорошего вам дня!
...
Рейтинг: 0 / 0
Преобразовать XML utf-8 в utf-16 вместе с заголовком
    #39967785
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valentin Kolesnikov, шикарно.

А у тебя появились идеи насчет управления форматированием Yaml для конвертера?
...
Рейтинг: 0 / 0
Преобразовать XML utf-8 в utf-16 вместе с заголовком
    #39967794
Фотография Valentin Kolesnikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Valentin Kolesnikov, шикарно.

А у тебя появились идеи насчет управления форматированием Yaml для конвертера?


Да, добавил форматирование 2,3,4 (число пробелов отступов).

Хорошего вам дня!
...
Рейтинг: 0 / 0
Преобразовать XML utf-8 в utf-16 вместе с заголовком
    #39968177
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valentin Kolesnikov, а есть возможность управлять форматирование арреев избирательно? Пример

Код: java
1.
2.
3.
4.
5.
config :
 proxy-list :
   - "127.0.0.1:8081"
   - "192.168.0.1:8082"
 members: [ "billable", "unlimited", "Spec" ]



Мне удобно вести прокси-лист в вертикальном форматировании.
...
Рейтинг: 0 / 0
Преобразовать XML utf-8 в utf-16 вместе с заголовком
    #39968210
Фотография Valentin Kolesnikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Valentin Kolesnikov, а есть возможность управлять форматирование арреев избирательно? Пример

Код: java
1.
2.
3.
4.
5.
config :
 proxy-list :
   - "127.0.0.1:8081"
   - "192.168.0.1:8082"
 members: [ "billable", "unlimited", "Spec" ]



Мне удобно вести прокси-лист в вертикальном форматировании.


Можно поискать настройку для snakeyaml.

Хорошего вам дня!
...
Рейтинг: 0 / 0
Преобразовать XML utf-8 в utf-16 вместе с заголовком
    #39968301
Фотография Valentin Kolesnikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valentin Kolesnikov
mayton
Valentin Kolesnikov, а есть возможность управлять форматирование арреев избирательно? Пример

Код: java
1.
2.
3.
4.
5.
config :
 proxy-list :
   - "127.0.0.1:8081"
   - "192.168.0.1:8082"
 members: [ "billable", "unlimited", "Spec" ]



Мне удобно вести прокси-лист в вертикальном форматировании.


Можно поискать настройку для snakeyaml.

Хорошего вам дня!


Может быть эта настройка поможет.
...
Рейтинг: 0 / 0
Преобразовать XML utf-8 в utf-16 вместе с заголовком
    #39968303
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valentin Kolesnikov, я смотрел DumperOptions. Он ставит свойства на весь документ.

А мне надо управлять форматом отдельных узлов независимо.

Возможно я чего-то хочу "странного" ? Ну да. Просто мне поадались такие конфиги которые иногда
было удобно в столбик писать а иногда строкой.
...
Рейтинг: 0 / 0
Преобразовать XML utf-8 в utf-16 вместе с заголовком
    #39968696
Фотография Valentin Kolesnikov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Zzz79
LinkedList на 50 элементов? за такое надо бить по рукам,так как потом нубы посмотрят и начнут плодить их в реальных проектах - устанешь убирать на ревью


Это часть документации для snakeyaml. Автор библиотеки выбрал LinkedList почему-то.

Хорошего вам вечера!
...
Рейтинг: 0 / 0
64 сообщений из 64, показаны все 3 страниц
Форумы / Java [игнор отключен] [закрыт для гостей] / Преобразовать XML utf-8 в utf-16 вместе с заголовком
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]