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

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

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

[personal profile] develop7 2012-12-18 10:59 am (UTC)(link)
Во всяких — по-всякому.

[identity profile] aamonster.livejournal.com 2012-12-18 11:05 am (UTC)(link)
Особенно шикарно, что у меня в ленте следующий пост -
"Мне тут добрые люди подсказывают (а то сам я в суете чё-то подзабыл), что ровно 25 лет назад, 18 декабря 1987 года, американский лингвист и программист Ларри Уолл сообщил о выпуске им перла 1.0 — это надо отметить!"

[identity profile] sergiej.livejournal.com 2012-12-18 11:18 am (UTC)(link)
ИМХО в этом смысле NoSQL ещё хуже :)
а вообще давно надо забить на типизацию данных в базе и думать о типах только в приложении. Иначе шиза растёт.

[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] plumqqz.livejournal.com 2012-12-18 11:28 am (UTC)(link)
Я бы автору - который по ссылке - посоветовал бы бабу, что ли, завести. Ну или пить начать в качестве паллиатива. Впрочем, простой народ не любит простые решения.

[identity profile] vit-r.livejournal.com 2012-12-18 11:30 am (UTC)(link)
Не могу не процитировать пробежавшее недавно.

Мне всегда в подобных случаях почему-то вспоминается один случай: параметр в функцию передавался путем неявного приведения типа, причем с перегруженным оператором этого самого приведения.

Система типов хороша, если она хороша. Чего в живой природе встречается гораздо реже чем хотелось бы

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

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

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

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

[identity profile] nivanych.livejournal.com 2012-12-18 11:51 am (UTC)(link)
Всякие NoSQL есть.
Есть и с типами под хацкель ;-)

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

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

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

[identity profile] plumqqz.livejournal.com 2012-12-18 12:16 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] jakobz.livejournal.com 2012-12-18 12:42 pm (UTC)(link)
Надо уже разделять монстроидальные СУБД, где все в куче, на кусочки. Пусть будет отдельно тупое хранилище бинарных данных, отдельно брокер транзакций, отдельно оптимизатор запросов, и отдельно сериализатор - хочешь с типами, хочешь с JSON.

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

[identity profile] andybil.livejournal.com 2012-12-18 12:49 pm (UTC)(link)
Да никакой содомии. Все динамические типы собраны из букв, цифр и разделителей.
Обычный ML (XML, HTML и т.д.).
Какие проблемы? В каждом приложении напишите свой небольшой браузер.

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

[identity profile] metaclass.livejournal.com 2012-12-18 12:52 pm (UTC)(link)
Да, но ведь все кончится десятком разной степени недоделанности комбайнов :)

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

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

Page 1 of 3