metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2012-12-18 01:53 pm

Об отсутствии типов в БД

http://justy-tylor.livejournal.com/195108.html
Как сейчас дела во всяких NoSQL обстоят? Там та же содомия из поддельных ad-hoc и динамических типов?

[identity profile] fas-tm.livejournal.com 2012-12-18 11:24 am (UTC)(link)
ага. вытащить 100500 строк и потом в приложении процессить ? Иногда проще застрелиться.

[identity profile] sergiej.livejournal.com 2012-12-18 11:25 am (UTC)(link)
Зачем вытаскивать? Вытаскиваешь что нужно, в приложении делаешь из них нужные типы. Или ты предлагаешь процедуры на базе писать по обработке данных?

[identity profile] fas-tm.livejournal.com 2012-12-18 11:34 am (UTC)(link)
>>Вытаскиваешь что нужно
Мне нужно вытащить килограммы. пока не вытащу - могу и не узнать что это именно они :)
Это ж типичный ад когда непонятно как описывать типы полей в базе или вдруг при расширении оказывается нужно хранить еще не только килограммы а еще унции к примеру.

[identity profile] sergiej.livejournal.com 2012-12-18 11:38 am (UTC)(link)
Шутишь. То есть масса в килограммах и масса в фунтах это две разные массы?
Индусятиной пахнет, уважаемый.
Приложение создаёт тип "масса" записывает его в базу в формате который удобен для поиска и сортировки, вытягивая делает из него свой тим "Масса" который в зависимости от локали будет конвертироваться в стринг как фунты, килограммы или стаканы.

[identity profile] fas-tm.livejournal.com 2012-12-18 11:53 am (UTC)(link)
Именно поэтому чаще всего как ребе М издеваются и пишут сервера приложений с проверкой схемы данных итд. Потому что тетя Маша завтра играя в пасьянс переключит на зулусскую локаль и будет боль.
Я просто забавный случай видел когда народ сходил сума когда автоматизацию какую то для общепита делали. Там в рецептуре могли быть в одно и то же время еденицы измерения - граммы/килограммы/штуки. списание со склада вообще по вууду формуле считалось.
Так что не все так однозначно.

[identity profile] sergiej.livejournal.com 2012-12-18 12:15 pm (UTC)(link)
надо писать так, чтобы локаль ничего не ломала, и тётя Маша имеет полное право переключать на зулусскую локаль

[identity profile] justy-tylor.livejournal.com 2012-12-18 12:23 pm (UTC)(link)
Агасчазблин.

Если в САПРе указано в попугаях, то и в базу пишется в попугаях. Конверсии только явные - когда один из продуктов в пайплайне не понимает в попугаях, то для него конвертируем в шушпанчики и внимательно наблюдаем, не разъехалось ли что-то от погрешностей плавучки.

[identity profile] sergiej.livejournal.com 2012-12-18 12:25 pm (UTC)(link)
далеко вы так заедете

[identity profile] metaclass.livejournal.com 2012-12-18 12:52 pm (UTC)(link)
А по другому в CAD и с плавающей точкой вообще никак.
С плотностями топлива та же проблема.

[identity profile] justy-tylor.livejournal.com 2012-12-18 12:53 pm (UTC)(link)
Вот на "далеко" (от центра координат) проблемы с погрешностями часто проявляются, так что все ездят осторожно, как указано выше. :)

[identity profile] sergiej.livejournal.com 2012-12-19 09:02 am (UTC)(link)
"Конверсии только явные - когда один из продуктов в пайплайне не понимает в попугаях, то для него конвертируем в шушпанчики и внимательно наблюдаем, не разъехалось ли что-то от погрешностей плавучки. "
а если у вас десятки разнородных систем пользуются этими данными?
Я просто устал уже от систем, в которых пишут в своих папугаях, потому что в данный момент требования считать в мартышках не было, или было только в качестве исключения. Когда такая система сталкивается с реальной интерпрайзной жизнью она требует тонны костылей.
В примере выше существует понятная стандартизированная единица измерения для массы, если разработчики полезут записывать её в папугаях, потому что требование на сегодняшний день - папугаи, то я буду бить больно по рукам.

[identity profile] justy-tylor.livejournal.com 2012-12-19 12:05 pm (UTC)(link)
Разработчики могут записать массу в (буквально) стандартных у себя унциях или в стандартных граммах, оба случая потребуют конверсии для приведения к кг. Это и есть реальная энтерпрайзная жизнь, всё понятно, всё работает.

Впрочем, существование десятичной запятой и нестандартных форматов даты/времени меня ещё напрягает, ибо телепаты и неконтролируемые системные настройки.

[identity profile] avnik.livejournal.com 2012-12-18 02:00 pm (UTC)(link)
zodb же (персистентность, индексы прямо в приложении, категории^Wинтерфейсы, кровь кишки...)

[identity profile] metaclass.livejournal.com 2012-12-18 11:35 am (UTC)(link)
Я подумываю в базе процедуры не писать (не делать их частью схемы, грех это) а отсылать их туда на исполнение.
Это в целом работает, но вопросы безопасности (которые обычно решают заворачиванием работы с данными в SP) превращаются в тыкву. Приходится наворачивать сервера приложений и прочий грех.

[identity profile] sergiej.livejournal.com 2012-12-18 11:39 am (UTC)(link)
Сервета приложений это тот грех, которые позволяет удрать от ада.

[identity profile] falcrum.livejournal.com 2012-12-18 12:47 pm (UTC)(link)
За что ты так "хранимки" не любишь-то?

[identity profile] metaclass.livejournal.com 2012-12-18 12:54 pm (UTC)(link)
Я люблю, но очень уж дико геморно их поддерживать и обновлять, по сравнению с компилируемым кодом.
В том числе, не в последнюю очередь из-за кривого языка и системы типов.
Сейчас, если не требуется дикая производительность или заведомо нужна двухзвенка с нормальными правами доступа, не рекомендуется вообще логику в БД делать.