О р м: Составить слова из слова, слова из букв, анаграммы
РМ-5-Э – Расходомер-счетчик электромагнитный
Главная / Каталог / Электромагнитные расходомеры / РМ-5-Э
Тип: | Электромагнитный |
---|---|
Ду: | 15 … 80мм |
Расход: | Min: 0,06 м3/час … Max: 160 м3/час |
Выходы: | Импульсный, Токовый, RS-232, RS-485 |
Монтаж: | Фланцы |
Указаны обобщенные параметры.
Доставка: В любой регион
Доставка продукции осуществляется транспортными компаниями на Ваш выбор. Подробнее
Мы рекомендуем:
ЖелДорЭкспедиция |
Деловые линии |
Оформить заявку
Есть вопросы? Задать вопрос специалисту.
Содержание
- Описание
- Технические характеристики
- Габаритные и присоединительные размеры
- Документация
Счётчики-расходомеры РМ-5 модификации РМ-5-Э (в дальнейшем РМ-5-Э) предназначены для выполнения измерений, требующих повышенной точности объёмного и массового расхода, объёма, массы среды.
Областью применения РМ-5-Э является коммерческий и технологический учёт, диспетчерский, технологический и технический контроль на источниках и у потребителей жидких сред, где предъявляются повышенные требования к точности результатов, а также применение РМ-5-Э в качестве рабочих эталонов расхода и объёма жидкости в проливных установках, предназначенных для поверки, калибровки или иных испытаний рабочих средств измерений расхода и объёма электропроводящих жидкостей.
РМ-5-Э обеспечивают представление измерительной информации и параметров своего состояния в виде индикации на дисплее вычислительного устройства (при наличии у него дисплея с клавиатурой), либо на дисплее вспомогательного компонента (периферийного устройства) — адаптера периферии АП-5 (при включении его в комплект поставки РМ-5-Э) следующих данных:
- текущее значение объёмного расхода в трубопроводах с установленными преобразователями расхода, м3/ч;
- текущее значение температуры среды в трубопроводах, где установлены термопреобразователи, °С;
- текущее значение давления среды в трубопроводах, на которые установлены датчики давления кгс/см2 и МПа;
- объём, нарастающим итогом, м3;
- текущее значение массового расхода, если на трубопроводах установлены преобразователи (датчики) давления и/или температуры, или плотность задается в виде константы, т/ч;
- масса нарастающим итогом в трубопроводах, где измеряется массовый расход, т;
- текущие значения температуры окружающего воздуха при комплектовании РМ-5-Э соответствующими термопреобразователями сопротивления,°С;
- время работы РМ-5-Э, ч;
- текущие значения даты и времени;
- информация о модификации РМ-5, его параметрах настройки и состояния.
Технические характеристики
DN | 15 | 25 | 32 | 50 | 80 |
---|---|---|---|---|---|
Масса, кг | 2,6 | 4 | 5,5 | 7,5 | 15 |
Поддиапазоны измерений | Пределы допускаемой относительной погрешности РМ-5-Э, % | ||
---|---|---|---|
Для ПРЭ класса А | Для ПРЭ класса В | Для ПРЭ класса С | |
50 < Gmax/G ≤ 100 | ± 0,5 | ± 0,5 | ± 0,5 |
25 < Gmax/G ≤ 50 | ± 0,2 | ± 0,2 | ± 0,5 |
1 ≤ Gmax/G ≤ 25 | ± 0,16 | ± 0,2 | ± 0,2 |
G — текущее значение расхода;
Gmax— наибольшее значение расхода.
Параметр | Значение |
---|---|
Напряжение питания переменного тока | от 187 до 242 В |
Потребляемая мощность, В•А, не более | 10 |
Устойчивость и прочность к воздействию атмосферного давления по ГОСТ 12997 | Р1 |
Устойчивость и прочности к механическим воздействиям по ГОСТ 12997 | N3 |
Степень защиты от воздействия окружающей среды в зависимости от исполнения: | |
– РМ-5 | IP65 |
– вычислительное устройство (раздельное исполнение) | IP20 |
– блок питания (раздельное исполнение) | IP20 |
Средняя наработка на отказ, ч, не менее | 75000 |
Средний срок службы, лет | 15 |
Межповерочный интервал, лет | 4 |
Температура измеряемой жидкости (не отрицательная), °С | от 1 до 150 |
Удельная электрическая проводимость измеряемой жидкости, См/м | от 10-3 до 10 |
Габаритные и присоединительные размеры
Скачать документацию:
РМ-5-Т-И
Расходомер-счетчик электромагнитный
Тип: | Электромагнитный |
---|---|
Ду: | 15 … 300мм |
Расход: | Min: 0,0025 м3/час … Max: 2500 м3/час |
Выходы: | Импульсный, Токовый, RS-232, RS-485 |
Монтаж: | Фланцы / резьба |
Подробнее
РМ-5-П
Расходомер-счетчик электромагнитный
Тип: | Электромагнитный |
---|---|
Ду: | 15 … 50мм |
Расход: | Min: 0,16 м3/час … Max: 32 м3/час |
Выходы: | Импульсный, Токовый, RS-232, RS-485 |
Монтаж: | Резьбовые муфты |
Подробнее
РМ-5-Т
Расходомер-счетчик электромагнитный
Тип: | Электромагнитный |
---|---|
Ду: | 15 … 300мм |
Расход: | Min: 0,006 м3/час … Max: 2500 м3/час |
Выходы: | Импульсный, Токовый, RS-232, RS-485 |
Монтаж: | Фланцы / резьба |
Подробнее
ПРЭМ
Расходомер электромагнитный
Тип: | Электромагнитный |
---|---|
Ду: | 20 … 150мм |
Расход: | Min: 0,02 м3/час … Max: 630 м3/час |
Выходы: | Импульсный, Токовый, RS-232, RS-485 |
Монтаж: | Фланцы / “Сэндвич” |
Подробнее
Н.
О.Р.М. — Образовательный портал о женском здоровье Women FirstНерегулярный цикл Дисменорея Обильные менструации
Стоит ли использовать КОК при нерегулярном цикле?
Нерегулярный цикл и задержки менструации случаются по причине сбоя на одном из уровней гормональной регуляции, что чаще всего связано с нарушениями работы гипоталамуса и гипофиза (областей мозга). Гипоталамус перестаёт передавать сигналы гипофизу, чтобы он вырабатывал лютеинизирующий гормон (ЛГ), оказывающий влияние на выход яйцеклетки из фолликула (функциональной единицы яичника) в маточные трубы, и фолликулостимулирующий гормон (ФСГ), оказывающий влияние на рост фолликула и развитие яйцеклетки внутри него. ЛГ и ФСГ, в свою очередь, не оказывают своевременного воздействия на женские репродуктивные органы, в связи с чем менструальный цикл нарушается.
Эффективность лечения этого состояния
прогнозировать довольно сложно, так как оно
наступает по причине сильного стресса,
физического перенапряжения, хронического
несоблюдения режима труда и отдыха, резкой
потери массы тела (нередко анорексии) и др.
Поэтому, как правило, менструации
восстанавливаются самостоятельно, после
устранения стрессового фактора или по прошествии
достаточного времени (иногда 6-12 месяцев).
Так как снижается концентрация фолликулостимулирующего гормона, нарушается процесс роста и созревания доминантного фолликула в яичниках, а следственно, отсутствует овуляция. Все эти процессы приводят к недостаточной выработке эстрадиола яичниками, что нарушает рост и трансформацию слизистой оболочки матки – менструация не наступает. Такая патология носит название “вторичная гипоталамо-гипофизарная аменорея”.
А при нерегулярном менструальном цикле это может
еще больше усугубить ситуацию, так как продукция
гормонов гипоталамусом и гипофизом и так
снижена.
Поэтому перед тем, как лечить аменорею, нужно
проконсультироваться с квалифицированным
специалистом, который разберется в проблеме,
верно поставит диагноз и назначит адекватное
лечение.
НЕРЕГУЛЯРНЫЙ
МЕНСТРУАЛЬНЫЙ ЦИКЛ
Особенности менструации при нерегулярном менструальном цикле
Нерегулярный цикл и задержки менструации случаются по причине сбоя на одном из уровней гормональной регуляции, что чаще всего связано с нарушениями работы гипоталамуса и гипофиза (областей мозга). Гипоталамус перестаёт передавать сигналы гипофизу, чтобы он вырабатывал лютеинизирующий гормон (ЛГ), оказывающий влияние на выход яйцеклетки из фолликула (функциональной единицы яичника) в маточные трубы, и фолликулостимулирующий гормон (ФСГ), оказывающий влияние на рост фолликула и развитие яйцеклетки внутри него. ЛГ и ФСГ, в свою очередь, не оказывают своевременного воздействия на женские репродуктивные органы, в связи с чем менструальный цикл нарушается.
Стоит ли использовать КОК при нерегулярном цикле?
Эффективность лечения этого состояния
прогнозировать довольно сложно, так как оно
наступает по причине сильного стресса,
физического перенапряжения, хронического
несоблюдения режима труда и отдыха, резкой
потери массы тела (нередко анорексии) и др.
Поэтому, как правило, менструации
восстанавливаются самостоятельно, после
устранения стрессового фактора или по прошествии
достаточного времени (иногда 6-12 месяцев).
Очень часто пациенткам с жалобами на длительное
отсутствие менструации назначают гормональные
контрацептивы.
Но прием КОК — лишь маскировка проблемы, ведь
иллюзия стабильности цикла создается за счет
регулярного приема таблеток и следующих за ними
менструально-подобных кровотечений. Скорее
всего, после отмены препарата все жалобы
вернутся вновь и цикл снова нарушится. Механизм
действия КОК – подавление функции гипоталамуса
и гипофиза, что в итоге приводит к отсутствию
овуляции.
НЕРЕГУЛЯРНЫЙ
МЕНСТРУАЛЬНЫЙ ЦИКЛ
Особенности менструации при нерегулярном менструальном цикле
Так как снижается концентрация фолликулостимулирующего гормона, нарушается процесс роста и созревания доминантного фолликула в яичниках, а следственно, отсутствует овуляция. Все эти процессы приводят к недостаточной выработке эстрадиола яичниками, что нарушает рост и трансформацию слизистой оболочки матки – менструация не наступает. Такая патология носит название “вторичная гипоталамо-гипофизарная аменорея”.
Особенности менструации при нерегулярном менструальном цикле
А при нерегулярном менструальном цикле это может еще больше усугубить ситуацию, так как продукция гормонов гипоталамусом и гипофизом и так снижена. Поэтому перед тем, как лечить аменорею, нужно проконсультироваться с квалифицированным специалистом, который разберется в проблеме, верно поставит диагноз и назначит адекватное лечение.
Как происходит менструация при дисменорее.
Дисменорея – это болезненные менструации, которые также могут сопровождаться множеством других неприятных симптомов, таких как головокружение, слабость, сонливость, тошнота, рвота, боли в пояснице и бедрах, потеря сознания, повышенная утомляемость, головные боли и другие.
Изменения, происходящие в слизистой оболочке матки в период менструации, очень сходны с воспалительным процессом. При этом образуются специальные химические вещества – простагландины и провоспалительные цитокины, которые повышают чувствительность рецепторов в эндометрии Железы которые вырабатывают и тем самым регулируют гормональную систему всего организма. к боли. Кроме того, повышенное содержание простагландинов вызывает сокращения мышечного слоя матки (миометрия), в процессе чего спазмируются маточные сосуды, что приводит к повышению давления в них. Это и вызывает болезненные менструации.
КОК могут оказывать положительное влияние на симптомы дисменореи и уменьшать боль. Это происходит за счет подавления избыточного роста эндометрия и снижения локальной концентрации простагландинов, вследствие чего снижается сократительная активность мышечного слоя матки. Все эти процессы реализуются в основном за счет гестагенового компонента, входящего в состав КОК.
ДИСМЕНОРЕЯ
Как происходит менструация при дисменорее.
Дисменорея – это болезненные менструации, которые также могут сопровождаться множеством других неприятных симптомов, таких как головокружение, слабость, сонливость, тошнота, рвота, боли в пояснице и бедрах, потеря сознания, повышенная утомляемость, головные боли и другие.
Изменения, происходящие в слизистой оболочке
матки в период менструации, очень сходны
с воспалительным процессом.
При этом образуются специальные химические
вещества – простагландины и провоспа-лительные
цитокины, которые повышают чувствительность
рецепторов в эндометрии к боли.
Кроме того, повышенное содержание
простагландинов вызывает сокращения мышечного
слоя матки (миометрия), в процессе которого
спазмируются маточные сосуды, что приводит к
повышению давления в них. Это и вызывает
болезненные менструации.
Что происходит при приеме КОК и дисменорее?
КОК могут оказывать положительное влияние на симптомы дисменореи и уменьшать боль. Это происходит засчет подавления избыточного роста эндометрия и снижения локальной концентрации простагландинов, вследствие чего снижается сократительная активность мышечного слоя матки. Все эти процессы реализуются в основном за счет гестагенового компонента, входящего в состав КОК.
Обильные месячные –
это нередкая ситуация, которая может быть вызвана
множеством причин.
Чаще всего у женщин репродуктивного возраста причиной
обильных менструаций являются состояния, которые
приводят к повышенному «росту» слизистой оболочки
матки (эндометрия), например, синдром поликистозных
яичников, заболевания щитовидной железы и другие
проблемы, связанные с отсутствием овуляции и
избыточным уровнем эстрогенов. Есть и ряд других
«органических» заболеваний, симптомом которых являются
обильные месячные: миома матки, полип и гиперплазия
эндометрия, эндометриоз, доброкачественные заболевания
яичников, патология свертывающей системы крови, а
также онкологические заболевания матки, шейки матки
и яичников.
Когда причиной обильных менструаций является
органический субстрат, т.е. миоматозный узел или полип
в полости матки, объем менструальной кровопотери
увеличивается, так как матка, образно выражаясь,
«воспринимает» эти образования как инородные и
пытается путем активных сократительных действий
вытолкнуть их.
Кроме того, при таких патологических состояниях, как
гиперплазия эндометрия, полипоз и другие,
увеличивается содержание простагландинов за счет отека
слизистой оболочки матки, что косвенно влияет на объем
кровопотери в сторону его увеличения.
Основой лечения обильных месячных является воздействие на причину, их вызвавшую. Если это полип, миома или гиперплазия эндометрия, в первую очередь следует удалить образование. Только после получения результатов гистологического исследования удаленного образования решается вопрос о возможной консервативной терапии – назначении КОК, гестагенов или другой симптоматической терапии. Одновременно с хирургическим лечением проводится коррекция анемии (снижения уровня гемоглобина на фоне хронической кровопотери).
В случае, если обильные менструации являются следствием дисгормональных нарушений и/или отсутствием овуляции, проводится гормональная коррекция. КОК в данном случае могут быть одним из способов лечения, и объем менструаций сокращается за счет того, что на фоне приема гормональных контрацептивов эндометрий не нарастает так, как при нормальном менструальном цикле. Но менструально-подобные кровотечения — не равно менструации, даже если они не такие обильные. Таким образом, создается лишь впечатление о регулярном менструальном цикле.
С позиций лечения гиперплазии эндометрия наиболее значимы два эффекта: подавление овуляции и секреторная трансформация эндометрия (развитие эндометрия и насыщение его полезными веществами, необходимыми для зачатия и прикрепления плода), препятствующая избыточному росту слизистой оболочки матки. Реализуются эти эффекты за счет гестагенов, входящих в состав КОК. В своих секреторнотрансформирующих дозах большинство гестагенов подавляют овуляцию. Дидрогестерон в состав КОК не входит, а сам по себе является гестагенной монотерапией и в той дозе, которая вызывает секреторную трансформацию эндометрия, не способен подавлять овуляцию.
ОБИЛЬНЫЕ МЕНСТРУАЦИИ
Обильные месячные –
это нередкая ситуация, которая может быть
вызвана множеством причин.
Чаще всего у женщин репродуктивного возраста
причиной обильных менструаций являются
состояния, которые приводят к повышенному
«росту» слизистой оболочки матки (эндометрия),
например, синдром поликистозных яичников,
заболевания щитовидной железы и другие проблемы,
связанные с отсутствием овуляции и избыточным
уровнем эстрогенов.
Есть и ряд других «органических» заболеваний,
симптомом которых являются обильные месячные:
миома матки, полип и гиперплазия эндометрия,
эндометриоз, доброкачественные заболевания
яичников, патология свертывающей системы крови,
а также онкологические заболевания матки, шейки
матки и яичников.
Когда причиной обильных менструаций является
органический субстрат, т.е. миоматозный узел или
полип в полости матки, объем менструальной
кровопотери увеличивается, так как матка,
образно выражаясь, «воспринимает»
эти образования как инородные и пытается путем
активных сократительных действий вытолкнуть их.
Кроме того, при таких патологических состояниях,
как гиперплазия эндометрия, полипоз и другие,
увеличивается содержание простагландинов за счет
отека слизистой оболочки матки, что косвенно
влияет на объем кровопотери в сторону его
увеличения.
КОК
при обильных месячных
Основой лечения обильных месячных является
воздействие на причину, их вызвавшую. Если это
полип, миома или гиперплазия эндометрия, в
первую очередь следует удалить образование.
Только после получения результатов
гистологического исследования удаленного
образования решается вопрос о возможной
консервативной терапии – назначении КОК,
гестагенов или другой симптоматической терапии.
Одновременно с хирургическим лечением проводится
коррекция анемии (снижения уровня гемоглобина на
фоне хронической кровопотери).
Правда ли, что КОКи —
единственный вариант
при
лечении нарушений цикла?
Чек-лист: на что обратить внимание, когда назначена терапия
Жизнь после КОКов: синдром отмены
Зачем нужна овуляция?
С# – Есть ли веские причины не использовать ORM?
Задавать вопрос
спросил
Изменено 2 года, 3 месяца назад
Просмотрено 47 тысяч раз
Во время моего обучения я использовал NHibernate для некоторых небольших проектов, которые я в основном кодировал и проектировал самостоятельно. Теперь, прежде чем начать какой-то более крупный проект, возникла дискуссия о том, как спроектировать доступ к данным и следует ли использовать слой ORM. Поскольку я все еще учусь и все еще считаю себя новичком в корпоративном программировании, я на самом деле не пытался настаивать на своем мнении, что использование реляционного преобразователя объектов в базу данных может значительно облегчить разработку. Другие кодеры в команде разработчиков намного опытнее меня, поэтому я просто буду делать то, что они говорят. 🙂
Однако я не совсем понимаю две основные причины отказа от использования NHibernate или подобного проекта:
- Можно просто создать свои собственные объекты доступа к данным с запросами SQL и скопировать эти запросы из Microsoft SQL Server Management Studio.
- Отладка ORM может быть сложной.
Итак, конечно, я мог бы просто построить свой уровень доступа к данным с большим количеством SELECT
и т. д., но здесь я упускаю преимущество автоматических объединений, ленивой загрузки прокси-классов и меньших усилий по обслуживанию, если таблица получает новый столбец или столбец переименовывается. (Обновление многочисленных SELECT
, INSERT
и UPDATE
запросы по сравнению с обновлением конфигурации сопоставления и, возможно, рефакторингом бизнес-классов и DTO.)
Кроме того, при использовании NHibernate вы можете столкнуться с непредвиденными проблемами, если вы не очень хорошо знаете структуру. Это может быть, например, доверие к Table.hbm.xml, где вы устанавливаете длину строки для автоматической проверки. Однако я также могу представить подобные ошибки в «простом» уровне доступа к данным на основе запросов SqlConnection.
Наконец, действительно ли эти аргументы, упомянутые выше, являются хорошей причиной не использовать ORM для нетривиального корпоративного приложения на основе базы данных? Возможно, есть другие аргументы, которые они/я могли пропустить?
(Возможно, я должен добавить, что, по моему мнению, это первое «большое» приложение на основе .NET/C#, требующее командной работы. Передовые методы, которые считаются вполне нормальными в Stack Overflow, такие как модульное тестирование или непрерывная интеграция, здесь до сих пор не существует. )
- c#
- форма
- предприятие
0
Короткий ответ: да, на то есть веские причины. На самом деле есть случаи, когда вы просто не можете использовать ORM.
Например, я работаю в крупном финансовом учреждении, и мы должны следовать многим правилам безопасности. Чтобы соответствовать правилам и положениям, которые наложены на нас, единственный способ пройти аудит — сохранить доступ к данным в рамках хранимых процедур. Теперь некоторые могут сказать, что это просто глупо, но, честно говоря, это не так. Использование инструмента ORM означает, что инструмент/разработчик может вставлять, выбирать, обновлять или удалять все, что он или она хочет. Хранимые процедуры обеспечивают гораздо большую безопасность, особенно в средах при работе с данными клиента. Я думаю, что это самая большая причина задуматься. Безопасность.
11
Лучшее место ORM
ORM полезны для автоматизации более 95% запросов, где они применимы. Их особая сила заключается в том, что у вас есть приложение с сильной архитектурой объектной модели и база данных, которая хорошо работает с этой объектной моделью. Если вы делаете новую сборку и у вас есть сильные навыки моделирования в вашей команде, вы, вероятно, получите хорошие результаты с ORM.
Возможно, у вас есть несколько запросов, которые лучше выполнять вручную. В этом случае не бойтесь написать несколько хранимых процедур, чтобы справиться с этим. Даже если вы собираетесь портировать свое приложение на несколько СУБД, код, зависящий от базы данных, будет в меньшинстве. Принимая во внимание, что вам нужно будет протестировать свое приложение на любой платформе, на которой вы собираетесь его поддерживать, небольшие дополнительные усилия по переносу некоторых хранимых процедур не будут иметь большого значения для вашей совокупной стоимости владения. В первом приближении 9Портативность на 8 % так же хороша, как и на 100 %, и намного лучше, чем запутанные или малоэффективные решения для обхода ограничений ORM.
Я видел, как первый подход хорошо работает в очень большом (сотни человеко-лет) проекте J2EE.
В тех случаях, когда ORM может оказаться не лучшим вариантом
В других случаях могут быть подходы, которые подходят для приложения лучше, чем ORM. В документе Фаулера «Шаблоны архитектуры корпоративных приложений» есть раздел, посвященный шаблонам доступа к данным, в котором довольно хорошо каталогизированы различные подходы к этому. Вот некоторые примеры ситуаций, когда ORM может быть неприменим:
В приложении со значительной устаревшей кодовой базой хранимых процедур вы можете захотеть использовать функционально ориентированный (не путать с функциональными языками) уровень доступа к данным для переноса существующих sprocs. При этом повторно используется существующий (и, следовательно, протестированный и отлаженный) уровень доступа к данным и структура базы данных, что часто требует значительных усилий по разработке и тестированию и избавляет от необходимости переноса данных в новую модель базы данных. Часто это неплохой способ обернуть слои Java вокруг устаревших баз кода PL/SQL или перенацелить приложения VB, Powerbuilder или Delphi на полнофункциональные клиенты с веб-интерфейсами.
Разновидностью является случай, когда вы наследуете модель данных, которая не обязательно хорошо подходит для отображения O-R. Если (например) вы пишете интерфейс, который заполняет или извлекает данные из внешнего интерфейса, вам может быть лучше работать непосредственно с базой данных.
Финансовые приложения или другие типы систем, в которых важна межсистемная целостность данных, особенно если вы используете сложные распределенные транзакции с двухфазной фиксацией. Возможно, вам потребуется микроуправление вашими транзакциями лучше, чем это может поддерживать ORM.
Высокопроизводительные приложения, для которых требуется действительно настроить доступ к базе данных. В этом случае может быть предпочтительнее работать на более низком уровне.
Ситуации, когда вы используете существующий механизм доступа к данным, такой как ADO. Net, который «достаточно хорош» и хорошо взаимодействует с платформой, приносит больше пользы, чем ORM.
Иногда данные — это просто данные. Например, может случиться так, что ваше приложение работает с «транзакциями», а не с «объектами», и это разумное представление домена. Примером этого может быть финансовый пакет, в котором у вас есть транзакции с настраиваемыми полями анализа. Хотя само приложение может быть построено на платформе O-O, оно не привязано к одной модели бизнес-домена и может не знать гораздо больше, чем коды GL, счета, типы документов и полдюжины полей анализа. В этом случае приложение не знает о модели бизнес-домена как таковой, а объектная модель (помимо самой структуры реестра) не имеет отношения к приложению.
3
Во-первых, использование ORM не упростит тестирование вашего кода и не обязательно даст какие-либо преимущества в сценариях непрерывной интеграции.
По моему опыту, хотя использование ORM может увеличить скорость разработки, самые большие проблемы, которые вам необходимо решить, это:
- Тестирование вашего кода
- Поддержание вашего кода
Решения для них:
- Сделайте свой код тестируемым (используя принципы SOLID)
- Напишите автоматизированные тесты для максимально возможной части кода
- Запускайте автоматические тесты как можно чаще
Возвращаясь к вашему вопросу, два возражения, которые вы перечислили, больше похожи на невежество, чем на что-либо еще.
Невозможность писать запросы SELECT вручную (что, как я полагаю, является причиной необходимости копирования и вставки), по-видимому, указывает на то, что существует острая необходимость в некотором обучении SQL.
Есть две причины, по которым я бы не стал использовать ORM:
- Это строго запрещено политикой компании (в таком случае я бы пошел работать в другое место)
- Проект требует чрезвычайно больших объемов данных, и использование решений, специфичных для поставщиков (таких как BulkInsert), имеет больше смысла.
Обычные отказы от ORM (в частности, NHibernate):
Скорость
Нет причин, по которым использование ORM было бы медленнее, чем доступ к данным вручную. На самом деле, из-за встроенного кэширования и оптимизации это может быть быстрее. Хорошая ORM создаст повторяющийся набор запросов, для которых вы можете оптимизировать свою схему. Хорошая ORM также позволяет эффективно извлекать связанные данные с использованием различных стратегий выборки.
Сложность
Что касается сложности, использование ORM означает меньший объем кода, что обычно означает меньшую сложность. Многие люди, использующие написанный от руки (или сгенерированный кодом) доступ к данным, обнаруживают, что пишут свою собственную структуру поверх “низкоуровневых” библиотек доступа к данным (например, написание вспомогательных методов для ADO.Net). Это означает большую сложность, и, что еще хуже, они редко хорошо документированы или хорошо протестированы.
Если вы ищете именно NHibernate, то такие инструменты, как Fluent NHibernate и Linq To NHibernate, также смягчат кривую обучения.
Во всех дебатах об ORM меня заводит то, что те же самые люди, которые утверждают, что использование ORM будет слишком сложным/медленным/что угодно, — это те же самые люди, которые более чем счастливы, используя Linq To Sql или типизированные наборы данных. Хотя Linq To Sql является большим шагом в правильном направлении, он все еще на световые годы отстает от некоторых ORM с открытым исходным кодом. Однако фреймворки как для типизированных наборов данных, так и для Linq To Sql по-прежнему чрезвычайно сложны, и использовать их, чтобы зайти слишком далеко от (Table = Class) + (базовый CRUD), тупо сложно.
Мой совет: если в конце дня вы не можете получить ORM, убедитесь, что ваш доступ к данным отделен от остального кода, и что вы следуете совету Банды Четырех кодирование интерфейса. Кроме того, получите инфраструктуру внедрения зависимостей, чтобы выполнить подключение.
(Как вам такая болтовня?)
0
Существует множество распространенных проблем, для решения которых ORM-инструменты, такие как Hibernate, являются находкой, а некоторые — помехой. Я недостаточно знаю о вашем проекте, чтобы понять, что это такое.
Одной из сильных сторон Hibernate является то, что вы можете сказать что-то только 3 раза: каждое свойство упоминается в классе, в файле .hbm.xml и в базе данных. С SQL-запросами ваши свойства находятся в классе, базе данных, операторах выбора, операторах вставки, операторах обновления, операторах удаления и во всем коде маршалинга и демаршаллинга, поддерживающего ваши SQL-запросы! Это может быстро запутаться. С другой стороны, вы знаете, как это работает. Вы можете отладить его. Все это находится прямо в вашем собственном слое сохраняемости, а не в недрах стороннего инструмента.
Hibernate может стать детищем закона Спольски о дырявых абстракциях. Немного отойдите от проторенной дорожки, и вам нужно будет хорошо знать внутреннюю работу инструмента. Это может быть очень раздражающим, когда вы знаете, что могли бы исправить SQL за считанные минуты, но вместо этого вы тратите часы, пытаясь уговорить свой чертов инструмент сгенерировать разумный SQL. Отладка иногда превращается в кошмар, но трудно убедить людей, которые там не были.
РЕДАКТИРОВАТЬ: Возможно, вы захотите заглянуть в iBatis.NET, если они не собираются обращать внимание на NHibernate и хотят контролировать свои SQL-запросы.
РЕДАКТИРОВАТЬ 2: Вот большой красный флаг, однако: «Хорошие практики, которые считаются довольно нормальными в Stack Overflow, такие как модульное тестирование или непрерывная интеграция, здесь до сих пор не существуют». Итак, эти «опытные» разработчики, какой у них опыт в разработке? Их безопасность работы? Похоже, вы можете быть среди людей, которые не особенно интересуются этой областью, поэтому не позволяйте им убить ваш интерес. Вы должны быть балансом. Устраивать драку.
3
В последние годы произошел взрывной рост ORM, и ваши более опытные коллеги, возможно, все еще думают, что «каждый вызов базы данных должен осуществляться через хранимую процедуру».
Почему ORM усложняет отладку? Вы получите тот же результат, независимо от того, исходит ли он из хранимого процесса или из ORM.
Думаю, единственный реальный недостаток ORM, о котором я могу думать, это то, что модель безопасности немного менее гибкая.
РЕДАКТИРОВАТЬ: Я только что перечитал ваш вопрос, и похоже, что они копируют и вставляют запросы во встроенный sql. Это делает модель безопасности такой же, как ORM, поэтому не будет абсолютно никакого преимущества перед этим подходом перед ORM. Если они используют непараметризованные запросы, это фактически представляет угрозу безопасности.
7
Я работал над одним проектом, в котором неиспользование ORM было очень успешным. Это был проект, который
- Должно быть горизонтальное масштабирование с самого начала
- Пришлось срочно разрабатывать
- Имела относительно простую модель предметной области
Время, которое потребовалось бы для того, чтобы заставить NHibernate работать в горизонтально разделенной структуре, было бы намного больше, чем время, которое потребовалось для разработки супер простого модуля отображения данных, который знал бы о нашей схеме разделения…
Итак, в 90% проектов, над которыми я работал, ORM оказал неоценимую помощь. Но есть некоторые очень специфические обстоятельства, когда я считаю, что лучше не использовать ORM.
3
Позвольте мне сначала сказать, что ORM могут облегчить вашу жизнь при разработке, если их правильно интегрировать, но есть несколько проблем, когда ORM может фактически помешать вам достичь заявленных требований и целей.
Я обнаружил, что при проектировании систем с высокими требованиями к производительности мне часто приходится искать способы сделать систему более производительной. Много раз я приходил к решению с тяжелым профилем производительности записи (это означает, что мы записываем данные намного чаще, чем читаем данные). В этих случаях я хочу воспользоваться преимуществами возможностей платформы базы данных, чтобы достичь наших целей по производительности (это OLTP, а не OLAP). Итак, если я использую SQL Server и знаю, что мне нужно записать много данных, почему бы мне не использовать массовую вставку… ну, как вы, возможно, уже обнаружили, большинство ORMS (я не знаю, даже один из них) не имеют возможности воспользоваться специфическими преимуществами платформы, такими как массовая вставка.
Вы должны знать, что вы можете сочетать методы ORM и не-ORM. Я только что обнаружил, что есть несколько пограничных случаев, когда ORM не могут поддерживать ваши требования, и вам нужно обойти их для этих случаев.
Для нетривиального корпоративного приложения, основанного на базе данных, действительно нет никаких оснований не использовать ORM.
Особенности в стороне:
- Не используя ORM, вы решаете проблему, которая уже неоднократно решались крупными сообществами или компаниями со значительными Ресурсы.
- Благодаря использованию ORM основная часть вашего уровня доступа к данным получает преимущества от усилий по отладке этого сообщества или компании.
Чтобы придать аргументу некоторую перспективу, рассмотрите преимущества использования ADO.NET по сравнению с написанием кода для самостоятельного анализа потока табличных данных.
Я видел, как незнание того, как использовать ORM, оправдывает презрение разработчика к ORM. Например: нетерпеливая загрузка (что-то, о чем вы, как я заметил, не упомянули). Представьте, что вы хотите получить информацию о клиенте и всех его заказах, а также обо всех деталях заказа. Если вы полагаетесь только на отложенную загрузку, вы уйдете с ORM с мнением: «ORM медленные». Если вы научитесь использовать нетерпеливую загрузку, то за 2 минуты с 5 строками кода сделаете то, на что у ваших коллег уйдет полдня: один запрос к базе данных и привязка результатов к иерархии объектов. Другим примером может быть трудность ручного написания SQL-запросов для реализации пейджинга.
Возможным исключением для использования ORM было бы, если бы это приложение было структурой ORM, предназначенной для применения специализированных абстракций бизнес-логики и предназначенной для повторного использования в нескольких проектах. Однако даже если бы это было так, вы могли бы ускорить внедрение, дополнив существующую ORM этими абстракциями.
Не позволяйте опыту старших членов команды увлечь вас в направлении, противоположном развитию информатики. Профессионально развиваюсь уже 23 года, и одна из констант — это пренебрежение к новому старой закалкой. ORM относятся к SQL так же, как язык C к ассемблеру, и можно поспорить, что эквиваленты C++ и C# уже в пути. Одна строка кода новой школы равна 20 строкам кода старой школы.
Я думаю, что есть много веских причин не использовать ORM. Прежде всего, я разработчик .NET, и мне нравится придерживаться того, что мне уже предоставила замечательная платформа .NET. Он делает все, что мне, возможно, нужно. Делая это, вы остаетесь с более стандартным подходом, и, таким образом, у любого другого разработчика, работающего над тем же проектом, гораздо больше шансов взять то, что есть, и работать с ним. Возможности доступа к данным, уже предоставленные Microsoft, вполне достаточны, нет причин отказываться от них.
Я был профессиональным разработчиком в течение 10 лет, руководил несколькими очень успешными проектами стоимостью более миллиона долларов, и я ни разу не написал приложение, которое должно было иметь возможность переключаться на любую базу данных. Почему вы вообще хотите, чтобы клиент сделал это? Тщательно спланируйте, выберите нужную базу данных для того, что вам нужно, и придерживайтесь ее. Лично SQL Server смог сделать все, что мне когда-либо нужно было сделать. Это просто и отлично работает. Есть даже бесплатная версия, которая поддерживает до 10 ГБ данных. О, и это прекрасно работает с .NET.
Недавно мне пришлось начать работу над несколькими проектами, использующими ORM в качестве уровня данных. Я думаю, что это плохо, и что-то дополнительное мне пришлось научиться использовать без какой-либо причины. В безумно редком случае, когда заказчику действительно нужно было изменить базы данных, я мог бы легко переработать весь уровень данных за меньшее время, чем я потратил на то, чтобы дурачиться с поставщиками ORM.
Честно говоря, я думаю, что есть одно реальное применение ORM: если вы создаете приложение, такое как SAP, которому действительно нужна возможность работать с несколькими базами данных. В противном случае, как поставщик решений, я говорю своим клиентам, что это приложение предназначено для работы в этой базе данных, и так оно и есть. Еще раз, после 10 лет и бесчисленного количества приложений, это никогда не было проблемой.
В противном случае я думаю, что ORM предназначены для разработчиков, которые не понимают, что меньше значит больше, и считают, что чем больше классных сторонних инструментов они используют в своем приложении, тем лучше будет их приложение. Я оставлю такие вещи твердолобым гикам Uber, а тем временем создам гораздо больше отличного программного обеспечения, которое любой разработчик может взять и сразу же приступить к работе.
3
Когда вам нужно обновить 50000000 записей. Установите флаг или что-то в этом роде.
Попробуйте сделать это с помощью ORM без , вызывающего хранимую процедуру или собственные команды SQL.
Обновление 1. Попробуйте также получить одну запись только с несколькими полями. (Когда у вас очень “широкий” стол). Или скалярный результат. ORM тоже отстой в этом.
ОБНОВЛЕНИЕ 2 : Кажется, что бета-версия EF 5.0 обещает пакетные обновления, но это очень горячие новости (2012, январь)
1
Я думаю, что, возможно, когда вы работаете с более крупными системами, вы можете использовать инструмент генератора кода, такой как CodeSmith, вместо ORM. .. Недавно я нашел это: Cooperator Framework, который генерирует хранимые процедуры SQL Server, а также создает ваши бизнес-объекты, преобразователи, шлюзы, отложенная загрузка и все такое на C#… посмотрите… это было написано командой здесь, в Аргентине…
Я думаю, что это что-то среднее между кодированием всего уровня доступа к данным и использованием ORM…
0
Лично я (до недавнего времени) выступал против использования ORM и обходился написанием слоя доступа к данным, инкапсулирующего все команды SQL. Основное возражение против ORM заключалось в том, что я не верил, что реализация ORM напишет правильный SQL. И, судя по ORM, которые я видел (в основном PHP-библиотеки), я думаю, что был совершенно прав.
Теперь большая часть моей веб-разработки использует Django, и я нашел включенный ORM очень удобным, а поскольку модель данных выражается сначала в их терминах, а только потом в SQL, она отлично подходит для моих нужд. Я уверен, что было бы несложно перерасти его и дополнить написанным от руки SQL; но для CRUD доступа более чем достаточно.
Я не знаю о NHibernate; но я думаю, что это также «достаточно хорошо» для большей части того, что вам нужно. Но если другие кодеры не доверяют этому; это будет главный подозреваемый в каждой ошибке, связанной с данными, что сделает проверку более утомительной.
Вы можете постепенно внедрять его на своем рабочем месте, сосредоточившись сначала на небольших «очевидных» приложениях, таких как простой доступ к данным. Через некоторое время его можно будет использовать в прототипах, и его нельзя будет заменить…
Если это база данных OLAP (например, статические, доступные только для чтения данные, используемые для отчетов/аналитики и т. д.), то внедрение инфраструктуры ORM не подходит. Вместо этого предпочтительнее использовать собственные функции доступа к данным базы данных, такие как хранимые процедуры. ORM лучше подходят для транзакционных (OLTP) систем.
1
Производительность во время выполнения – единственный реальный недостаток, о котором я могу думать, но я думаю, что это более чем справедливый компромисс для времени, которое ORM экономит на разработке/тестировании/и т.д. И в большинстве случаев вы должны уметь находить узкие места в данных и изменять структуры объектов, чтобы они были более эффективными.
Я никогда раньше не использовал Hibernate, но одна вещь, которую я заметил в нескольких «готовых» ORM-решениях, — отсутствие гибкости. Я уверен, что это зависит от того, с чем вы идете и что вам нужно с этим делать.
1
Есть два аспекта ORM, которые вызывают беспокойство. Во-первых, это код, написанный кем-то другим, иногда с закрытым исходным кодом, иногда с открытым исходным кодом, но с огромным объемом. Во-вторых, они копируют данные.
Первая проблема вызывает две проблемы. Вы полагаетесь на сторонний код. Мы все делаем это, но выбор сделать это не следует воспринимать легкомысленно. А что, если он не делает то, что вам нужно? Когда вы обнаружите это? Вы живете внутри коробки, которую рисует для вас ваш ORM.
Вторая проблема связана с двухэтапной фиксацией. Реляционная база данных копируется в объектную модель. Вы меняете объектную модель и предполагается обновление базы данных. Это двухэтапная фиксация и не самая простая вещь для отладки.
5
Я предлагаю это чтение для списка недостатков ORM.
http://blogs.tedneward.com/2006/06/26/The+Vietnam+Of+Computer+Science.aspx
Лично я обнаружил, что ORM очень полезны для большинства приложений, которые я написал!
/Asger
Мой опыт работы с Hibernate заключается в том, что его семантика тонка, и когда возникают проблемы, немного сложно понять, что происходит под капотом. Я слышал от друга, что часто начинают с Criteria, затем нужно немного больше гибкости и нужен HQL, а позже замечают, что в конце концов нужен необработанный SQL (например, в Hibernate нет union AFAIK).
Также с ORM люди легко склонны злоупотреблять существующими отображениями/моделями, что приводит к тому, что есть объект с большим количеством неинициализированных атрибутов. Таким образом, после запроса внутри транзакции Hibernate производит дополнительную выборку данных, что приводит к потенциальному замедлению. Также, к сожалению, объект модели гибернации иногда просачивается на уровень архитектуры представления, и тогда мы видим LazyInitializationExceptions.
Чтобы использовать ORM, нужно хорошо в нем разбираться. К сожалению, легко создается впечатление, что это легко, хотя это не так.
1
Не для того, чтобы быть ответом как таковым, я хочу перефразировать недавно услышанную цитату. «Хороший ORM подобен йети: все говорят о нем, но никто его не видит».
Всякий раз, когда я беру в руки ORM, я обычно борюсь с проблемами/ограничениями этого ORM. В конце концов, да, он делает то, что я хочу, и это было написано где-то в этой паршивой документации, но я теряю еще один час, которого никогда не получу. Любой, кто использовал nhibernate, а затем бегло использовал nhibernate на postgresql, поймет, через что мне пришлось пройти. Постоянное чувство «этот код не под моим контролем» действительно отстой.
Я не показываю пальцами и не говорю, что они плохие, но я начал думать о том, что я отдаю только для того, чтобы автоматизировать CRUD в одном выражении. В настоящее время я думаю, что мне следует меньше использовать ORM, возможно, создать или найти решение, которое позволяет выполнять операции с БД как минимум. Но это только я. Я считаю, что некоторые вещи неверны в этой области ORM, но я недостаточно опытен, чтобы выразить это, а что нет.
1
Я думаю, что использование ORM по-прежнему является хорошей идеей. Особенно учитывая ситуацию, которую вы приводите. Судя по вашему сообщению, вы более опытны, когда дело доходит до стратегий доступа к БД, и я бы упомянул об использовании ORM.
Нет никаких аргументов в пользу #1, так как копирование и вставка запросов и жесткое кодирование в тексте не дают гибкости, а для #2 большинство форм будут обертывать исходное исключение, позволят отслеживать сгенерированные запросы и т. д., поэтому отладка тоже не ракетостроение.
Что касается валидации, использование ORM также обычно значительно упрощает разработку стратегий валидации поверх любой встроенной валидации.
Написание собственного фреймворка может быть трудоемким, и часто что-то упускается.
РЕДАКТИРОВАТЬ: Я хотел подчеркнуть еще один момент. Если ваша компания примет стратегию ORM, это еще больше повысит ее ценность, поскольку вы разработаете руководящие принципы и практики для использования и внедрения, и каждый получит дополнительные знания о выбранной структуре, смягчив одну из проблем, которые вы подняли. Кроме того, вы узнаете, что работает, а что нет в определенных ситуациях, и в итоге это сэкономит много времени и усилий.
Каждая ORM, даже «хорошая», обременена определенным количеством допущений, связанных с базовой механикой, используемой программным обеспечением для передачи данных туда и обратно между вашим прикладным уровнем и вашим хранилищем данных.
Я обнаружил, что для умеренно сложного приложения обход этих предположений обычно занимает больше времени, чем просто написание более простого решения, такого как запрос данных и ручное создание экземпляров новых объектов.
В частности, вы, вероятно, столкнетесь с заминками, как только будете использовать многостолбцовые ключи или другие умеренно сложные отношения, которые выходят за рамки удобных примеров, предоставленных вам вашей ORM при загрузке кода.
Я признаю, что для определенных типов приложений, особенно тех, которые имеют очень большое количество таблиц базы данных или динамически генерируемых таблиц базы данных, автоматический магический процесс ORM может быть полезен.
Иначе к черту ORM. Теперь я считаю их в основном причудой.
404: Страница не найдена
Страница, которую вы пытались открыть по этому адресу, похоже, не существует. Обычно это результат плохой или устаревшей ссылки. Мы извиняемся за любые неудобства.
Что я могу сделать сейчас?
Если вы впервые посещаете TechTarget, добро пожаловать! Извините за обстоятельства, при которых мы встречаемся. Вот куда вы можете пойти отсюда:
Поиск- Ознакомьтесь с последними новостями.
- Наша домашняя страница содержит самую свежую информацию о Java-разработке.
- Наша страница «О нас» содержит дополнительную информацию о сайте, на котором вы находитесь, TheServerSide.com.
- Если вам нужно, пожалуйста, свяжитесь с нами, мы будем рады услышать от вас.
Просмотр по категории
Архитектура приложения
- Прочная связь между законом Конвея и микросервисами
Хотя закону Конвея уже несколько десятков лет, некоторые утверждают, что спешка индустрии по внедрению микросервисов заставляет его принимать …
- Как выжить, когда царит развитие Waterfall
Несмотря ни на что, методология водопада крепко держит бесчисленное количество команд разработчиков программного обеспечения. …
- Необработанный, но растущий потенциал банковского обслуживания без ядра
Несмотря на то, что банковское дело без ядра все еще является новой концепцией, оно демонстрирует большой потенциал для освобождения банков от жестких программных систем, которые. ..
Качество программного обеспечения
- Как сбалансировать доступ к данным и безопасность в финтех-тестировании
Использование реальных данных полезно при тестировании программного обеспечения, но команды должны быть осторожны, чтобы не поставить под угрозу безопасность и конфиденциальность. Шесть ядер…
- Тестовые фреймворки и примеры для модульного тестирования кода Python
Модульное тестирование является важным аспектом разработки программного обеспечения. Команды могут использовать Python для модульного тестирования, чтобы оптимизировать преимущества Python…
- Атрибуты эффективной стратегии тестирования базы данных
Команды должны внедрить правильную стратегию тестирования базы данных для оптимизации результатов. Изучите эффективные атрибуты тестирования базы данных…
Облачные вычисления
- Как работает маршрутизация на основе задержки в Amazon Route 53
Если вы рассматриваете Amazon Route 53 как способ уменьшить задержку, вот как работает этот сервис.
- 4 рекомендации, чтобы избежать привязки к поставщику облачных услуг
Без надлежащего планирования организация может оказаться в ловушке отношений с облачным провайдером. Следуйте этим …
- Подходит ли вам облачная стратегия?
Стратегия, ориентированная на облачные технологии, имеет свои преимущества и недостатки. Узнайте, как избежать рисков и построить стратегию, которая …
Безопасность
- Mandiant: в 2022 году 63% взломов были обнаружены извне
Компания Mandiant заявила, что на увеличение в 2022 году, скорее всего, повлияла фирма по анализу угроз, активно расследующая активность угроз…
- Как создать программу обмана кибербезопасности
В «Искусстве войны» Сунь-Цзы заявил: «Вся война основана на обмане». Узнайте, как применить этот принцип на предприятии…
- 14 главных целей программ-вымогателей в 2023 году и далее
Согласно недавнему исследованию, две из трех организаций подвергались атакам программ-вымогателей за один 12-месячный период.