AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 28.01.2009, 14:51   #1  
alex55 is offline
alex55
MCTS
MCBMSS
 
224 / 145 (5) +++++
Регистрация: 13.02.2007
Адрес: Москва
Максимальная длина типа String в DAX 4.0
1. В документации (http://msdn.microsoft.com/en-us/libr...72(AX.10).aspx) упоминается некая "максимальная длина", но чему она равна пока найти не удалось, может кто подскажет? Экспериментальным путем удалось объявить максимальную длину чуть более, чем 2.0 E9, далее начинает ругаться компилятор.

2. Какова максимальная длина поля таблицы с типом String (не Memo)? 1999 символов - я правильно понимаю? (При превышении - ошибка SQL на сохранении).

3. Какова максимальная длина поля таблицы типа String c "подтипом" Memo?

Последний раз редактировалось alex55; 28.01.2009 в 14:54.
Старый 28.01.2009, 14:53   #2  
Sada is offline
Sada
Программатор
Аватар для Sada
 
1,450 / 153 (8) ++++++
Регистрация: 29.03.2005
Адрес: Толи Барнаул, толи Москва
Memo гигантское, коллеги подсказывают 16 мегабайт.

Последний раз редактировалось Sada; 28.01.2009 в 14:57.
Старый 28.01.2009, 14:59   #3  
egorych is offline
egorych
Участник
Самостоятельные клиенты AX
Oracle
 
761 / 154 (7) ++++++
Регистрация: 09.11.2006
Адрес: Краснодарский край
Тут уже вступают в действие ограничения SQL Server, получается -
1. строковое поле - 4000байт, что в случае unicode = 2000 символов
2. тип memo - суть varchar(max) - 2Gb данных.
Старый 28.01.2009, 15:04   #4  
Sada is offline
Sada
Программатор
Аватар для Sada
 
1,450 / 153 (8) ++++++
Регистрация: 29.03.2005
Адрес: Толи Барнаул, толи Москва
2 Gb о_О. Мемо вообще предпочитаю не использовать. Только в оч крайних случаях. База может вырасти до невероятных размеров
Старый 28.01.2009, 15:07   #5  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2156 (80) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
Мне казалось, что Memo хранится в БД как-то по отдельности от обычных данных. В чем проблема его использования?
__________________
Ivanhoe as is..
Старый 28.01.2009, 15:08   #6  
Sada is offline
Sada
Программатор
Аватар для Sada
 
1,450 / 153 (8) ++++++
Регистрация: 29.03.2005
Адрес: Толи Барнаул, толи Москва
Не нравится мне оно
Старый 28.01.2009, 15:45   #7  
alex55 is offline
alex55
MCTS
MCBMSS
 
224 / 145 (5) +++++
Регистрация: 13.02.2007
Адрес: Москва
Цитата:
Сообщение от egorych Посмотреть сообщение
Тут уже вступают в действие ограничения SQL Server, получается -
1. строковое поле - 4000байт, что в случае unicode = 2000 символов
2. тип memo - суть varchar(max) - 2Gb данных.
1. Для MSSQL 2005, насколько я понял, DAX хранит String в nvarchar - до 4000 символов юникода макс., теоретически (http://msdn.microsoft.com/en-us/libr...9(SQL.90).aspx). То есть получается, что ограничение все же аксаптовое, в данном случае..

2. Посмотрел для Memo - хранится в ntext - до 1,073,741,823 юникода, теоретически (http://msdn.microsoft.com/en-us/libr...3(SQL.90).aspx). Вопрос лишь в том, даст ли DAX столько положить..
Старый 28.01.2009, 15:52   #8  
blokva is offline
blokva
Пенсионер
Аватар для blokva
SAP
NavAx Club
 
743 / 167 (7) ++++++
Регистрация: 04.06.2003
Адрес: Беларусь
Цитата:
Сообщение от Sada Посмотреть сообщение
Не нравится мне оно
Это наверное от xBASE систем чувство осталось!
__________________
Законы природы еще никто не отменял!
А еще у меня растет 2 внучки!!! Кому интересно подробности тут:
http://www.baby-shine.com/
Старый 28.01.2009, 15:58   #9  
egorych is offline
egorych
Участник
Самостоятельные клиенты AX
Oracle
 
761 / 154 (7) ++++++
Регистрация: 09.11.2006
Адрес: Краснодарский край
Цитата:
Сообщение от Ivanhoe Посмотреть сообщение
Мне казалось, что Memo хранится в БД как-то по отдельности от обычных данных. В чем проблема его использования?
Не совсем так - МОЖНО НАСТРОИТЬ, чтоб они хранились отдельно.
Старый 28.01.2009, 16:48   #10  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от Ivanhoe Посмотреть сообщение
В чем проблема его использования?
Информация по старым версиям. Может быть в последних исправили.

Предположим, в записи содержится memo-поле.
В этом случае выборка select * from... будет выбирать и мемо-поле среди остальных.
Что приведет к огромному трафику, тормозам передачи по сети и прочим радостям.
Во многих случаях, по умолчанию Аксапта делает именно такую выборку.

Если включен автовыбор полей, то Аксапта не делает разницы между memo и обычным полем и при малейшей необходимости тянет все. что приводит к трафику и тормозам.

поэтому memo-поля раньше рекомендовалось выделять в отдельные таблицы.

Вроде в последних версиях что-то делали с мемо-полями.
Но не помню. Надо проверять.
__________________
полезное на axForum, github, vk, coub.
Старый 28.01.2009, 16:56   #11  
Sada is offline
Sada
Программатор
Аватар для Sada
 
1,450 / 153 (8) ++++++
Регистрация: 29.03.2005
Адрес: Толи Барнаул, толи Москва
Вот! Интуиция не подвела Плохие они - memo поля.
Старый 28.01.2009, 17:19   #12  
egorych is offline
egorych
Участник
Самостоятельные клиенты AX
Oracle
 
761 / 154 (7) ++++++
Регистрация: 09.11.2006
Адрес: Краснодарский край
Цитата:
Сообщение от mazzy Посмотреть сообщение
...Предположим, в записи содержится memo-поле.
В этом случае выборка select * from... будет выбирать и мемо-поле среди остальных.
Что приведет к огромному трафику, тормозам передачи по сети и прочим радостям...
Можно я опять немного встряну?
Тут все зависит от того, скоко в ентом меме хранится! Суть в чем - первые 256 символов поля по своему хранению в БД ничем не отличаются от обычного varchar и увеличить трафик ну никак не смогут! Вот если больше, тогда возможны "лишние" искания сервера, дабы найти данные поля которые будут немного в другом месте файла данных храниться. Но опять-же "огромный трафик" - что-то в районе сказок!
Старый 28.01.2009, 17:43   #13  
alex55 is offline
alex55
MCTS
MCBMSS
 
224 / 145 (5) +++++
Регистрация: 13.02.2007
Адрес: Москва
Цитата:
Сообщение от Sada Посмотреть сообщение
Memo гигантское, коллеги подсказывают 16 мегабайт.
Спасибо. Будет время, поэксперементирую.
Старый 28.01.2009, 18:01   #14  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от egorych Посмотреть сообщение
Можно я опять немного встряну?
Тут все зависит от того, скоко в ентом меме хранится! Суть в чем - первые 256 символов поля по своему хранению в БД ничем не отличаются от обычного varchar и увеличить трафик ну никак не смогут!
но ведь memo поле вряд ли будет задействовано для того, чтобы хранить строки около 256 символов. memo как правило задействуется для хранения изображений, документов и прочей мультимедии.

Если же в memo-поле в основном хранятся строки до 256 символов, то это скорее ошибка архитектуры, поскольку memo-поля не индексируются.

Цитата:
Сообщение от egorych Посмотреть сообщение
Вот если больше, тогда возможны "лишние" искания сервера, дабы найти данные поля которые будут немного в другом месте файла данных храниться. Но опять-же "огромный трафик" - что-то в районе сказок!
Вы сейчас о дисковых операциях SQL-сервера.
Я о сетевом трафике о перемещениях данных в памяти сервера.

Ведь работу с этими данными будет выполнять AOS или аксаптовский клиент.
А они как должны получить значение memo-поля
огромный трафик будет между SQL'ем и AOS'ом/клиентом
__________________
полезное на axForum, github, vk, coub.
Старый 28.01.2009, 18:11   #15  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2156 (80) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
Хранение memo:
http://www.sql.ru/articles/mssql/200...eRecords.shtml

Поиск таблиц в АОТ, где есть memo поля, дает достаточно много ссылок на таблицы в т.ч. на слое sys, среди которых не только справочники.

Все-таки, с точки зрения стандартной Аксапты memo-поля - нормальное явление или от них нужно избавляться?
__________________
Ivanhoe as is..
Старый 28.01.2009, 18:39   #16  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от Ivanhoe Посмотреть сообщение
дает достаточно много ссылок на таблицы
Мне нравится чеканная формулировка "достаточно много".
Почти как "чуть менее, чем полный"

Я привел список memo-полей в ax4.0.
Он содержит 174 поля в 125 таблицах.
ax4.0 - список memo-полей.xls

Если проанализировать, то в основном это поля для хранения сообщений об ошибках.
Зачастую хранятся параметры/шаблоны в контейнерах.
Часто хранятся запросы (Query)
Есть примеры хранения удаленных заказов/закупок в memo-полях
Ну и конечно хранятся изображения.

Есть memo-поля, которые находятся за гранью добра и зла - это Amounts в книгах покупок и продаж...

Цитата:
Сообщение от Ivanhoe Посмотреть сообщение
Все-таки, с точки зрения стандартной Аксапты memo-поля - нормальное явление или от них нужно избавляться?
Нормальное.
Только не надо вставлять их в таблицы, которые часто выбираются. А также не стоит вставлять поля в таблицы, которые кэшируются.

Например вставить memo-поле в inventTrans, LedgerTrans, Currency, ExchRates и т.п. - будет огромной ошибкой, поскольку трафик будет забит этими мемо-полями.
Вставить memo-поле в CompanyInfo или LedgerParameters - будет огромной ошибкой, поскольку кэш забьется этим мемо-полем и перестанет работать как должно. (Обратите внимание на поле DEL_Logo в CompanyInfo )

А вот вставить memo-поле в специальную таблицу CompanyImage или специальную таблицу DocuField - почему бы и нет?

Цитата:
А ведь, кажется, так просто запомнить, что, например, раскаленной докрасна кочергой можно обжечься, если будешь держать ее в руках слишком долго; что если ОЧЕНЬ глубоко порезать палец ножом, из этого пальца, как правило, пойдет кровь, и так далее и тому подобное.

И уж Алиса-то отлично помнила, что если выпьешь слишком много из бутылки, на которой нарисованы череп и кости и написано "Яд!", то почти наверняка тебе не поздоровится (то есть состояние твоего здоровья может ухудшиться).
(C)
__________________
полезное на axForum, github, vk, coub.
Старый 28.01.2009, 21:41   #17  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,312 / 3547 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Еще 5 копеек про мемо-поля. Их нельзя впихнуть в условие Where (следствие их неиндексируемости). А также - по ним невозможен поиск.
Ряд консалтиновых компаний используют в своей работе GPT (General Problem Tracker) - систему запросов клиентов с контролем их исполнения. Не знаю - пошла ли терминология от Колумбуса или нет - это неважно. Важно то, что описания задач и комментарии к ним - руки чешутся сделать мемо-полями (типа информации может быть много). Однако - это решение является архитектурной ошибкой (на мой взгляд), т.к. впоследствии возникает задача поиска по запросам или комментариям, а по мемо-полю этого сделать увы - нельзя. Я говорю о GPT, реализованного на Аксапте.

Это в качестве примера. Ряд остальных доводов хорошо расписал Mazzy
__________________
Возможно сделать все. Вопрос времени
Старый 28.01.2009, 22:29   #18  
alex55 is offline
alex55
MCTS
MCBMSS
 
224 / 145 (5) +++++
Регистрация: 13.02.2007
Адрес: Москва
Цитата:
Сообщение от sukhanchik Посмотреть сообщение
Важно то, что описания задач и комментарии к ним - руки чешутся сделать мемо-полями (типа информации может быть много). Однако - это решение является архитектурной ошибкой (на мой взгляд), т.к. впоследствии возникает задача поиска по запросам или комментариям, а по мемо-полю этого сделать увы - нельзя.
А какие более правильные альтернативы существуют в DAX, если нужно хранить более чем 1999 символов в документе?

Собственно получается задача полнотекстового поиска? Ее вообще оптимально будет средствами DAX решать?
Старый 29.01.2009, 06:48   #19  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от alex55 Посмотреть сообщение
А какие более правильные альтернативы существуют в DAX, если нужно хранить более чем 1999 символов в документе?
Это не совсем полный вопрос.
Правильный вопрос: как хранить более чем 1999 символов НА РАЗНЫХ ЯЗЫКАХ.
Отдельной таблицей.
См. как сделано описание номенклатуры или Представления номенклатуры: одной номенклатуре может соответствовать несколько описаний на разных языках.

Название: 1.png
Просмотров: 1726

Размер: 10.5 Кб

Цитата:
Сообщение от alex55 Посмотреть сообщение
Собственно получается задача полнотекстового поиска? Ее вообще оптимально будет средствами DAX решать?
Полнотекстовый поиск средствами DAX - не очень. Он работает только по текстовым полям и не работает по memo-полям.
См. как сделан Агент данных (data crawler).

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

Нажмите на изображение для увеличения
Название: 2.png
Просмотров: 443
Размер:	17.4 Кб
ID:	4237
__________________
полезное на axForum, github, vk, coub.
Старый 29.01.2009, 10:45   #20  
Ivanhoe is offline
Ivanhoe
Участник
Аватар для Ivanhoe
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
4,143 / 2156 (80) +++++++++
Регистрация: 29.09.2005
Адрес: Санкт-Петербург
Цитата:
Сообщение от mazzy Посмотреть сообщение
Мне нравится чеканная формулировка "достаточно много".
Почти как "чуть менее, чем полный"
Формулировка родилась после поиска по АОТу. Решил, что никому не будет интересен список на форуме - кто захочет, сам посмотрит.

Цитата:
Сообщение от mazzy Посмотреть сообщение
Я привел список memo-полей в ax4.0.
Он содержит 174 поля в 125 таблицах.
Вложение 4235
Посмотрел Ваш список, не нашел некоторых таблиц, сделал свой.

В Вашем списке выборочно посмотрел поля - у них тип Контейнер, а не String (MEMO). В моем списке 195 полей, есть популярные таблицы EmplTable, AssetTable, CustInvoiceLine, RContractTable.
Вложения
Тип файла: xls DAX4SP2_memo.xls (82.0 Кб, 138 просмотров)
__________________
Ivanhoe as is..
За это сообщение автора поблагодарили: mazzy (10).
Теги
ax4.0, memo, string, полезное

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
HRM,склонение ФИО и все все все OmenSore DAX: Функционал 22 09.02.2009 17:08
Максимальная длина символьного поля CCADOField Владимир Максимов DAX: Программирование 5 11.01.2008 11:32
dax-dilettante: 15. System Classes \ The Collection Classes Blog bot DAX Blogs 0 26.09.2007 23:51
dax-lessons: Active directory in Axapta Blog bot DAX Blogs 0 27.08.2007 23:00
Как в Design из Reports выводить многострочные Fields типа String? bolt DAX: Программирование 1 19.02.2004 16:57
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 22:18.