Язык SQL в перспективе будет заменен на технологию CMIS


Оглавление (нажмите, чтобы открыть):

6 оптимальных языков для начала карьеры

На самом деле, вы можете потратить уйму времени, выбирая лучший язык программирования. Но как только дело дойдет до личного знакомства, возникнет необходимость сменить фаворита. Сегодня вашему вниманию будет предложен вариант выбора, который должен прийтись по душе абсолютному большинству начинающих гиков — сочетание легкости изучения и востребованности на рынке труда. Эти два аргумента относительно просто достоверно проверить, поэтому полученный результат будет близок к объективности.

Критерии

Нам потребуется два авторитетных рейтинга. Легкость изучения будет оценена условно — в баллах её выразить невозможно, но составить некоторый список «простых» можно, пользуясь коллективными мнениями (1, 2, 3).

Расставлять по местам мы будем исходя из рейтинга востребованности. За базу возьмем ряд зарубежных статей (1, 2, 3), реальность же российскую подтвердим при помощи агрегаторов hh.ru и trud.com. Статистика, разумеется, актуальна на день написания текста, а к публикации вряд ли сильно изменится.

Что учитывать мы не будем, так это уровень зарплат и самодостаточность языка, просто из-за относительности данных критериев.

Swift

Формально, Swift, конечно еще не так востребован среди работодателей как Objective-C, и попаданием в этот рейтинг он во многом обязан общей платформе. Но игнорировать перспективу в этом рейтинге категорически невозможно. Поэтому рекомендуем начинать изучение уже сейчас. Приглашаем вас на бесплатный двухчасовой интенсив по основам Swift.

Взглянем на цифры российских HR-агентств — 471 вакансия в России и ближнем зарубежье на hh.ru и 410 на trud.com. Очень неплохо для трехлетнего языка. Если добавите Objective-C, можете смело умножать цифры на 3.

Называть язык C или C++ лёгкими для изучения не совсем правильно, особенно если сравнивать их с Python или Ruby. Но в данному случае стоит говорить о том огромном количестве учебной качественной литературы, о фундаментальности и том полезном остатке, что останется в вашей голове, даже если свою дальнейшую жизнь с ними вы не свяжете.

Но если всё таки языки вам понравятся, то аж 2 325 вакансий только в России на hh.ru и 12 543 на trud.com. При этом вам важно понимать, что если, в случае с языком Swift, это были вакансии исключительно разработчиков, то с C++ вам язык может понадобится не только в привычной сфере IT, но и на должности оператора ЧПУ, и автоэлектрика.

JavaScript

Мало того, что JavaScript крайне востребован в современном мире благодаря сумасшедшему развитию интернет-технологий, так ещё благодаря модулям и библиотекам его зона влияния стала распространяться во все остальные IT-сферы.

Добавьте сюда тот факт, что JavaScript относительно лёгок для изучения. Заимствовав базовые вещи из Си и постепенно развиваясь от бонусного элемента для HTML и CSS до самостоятельной силы, он получил удобоваримый синтаксис и предельно понятную для новичка логику работы.

А теперь к востребованности: 6 365 вакансий только внутри России на hh.ru и 5 565 на trud.com. Это весьма неплохие цифры для тех, кто твёрдо намерился найти работу по окончанию обучения.

Python

Когда речь идёт о совокупности аргументов лёгкость и востребованность (именно в таком порядке), большинство разработчиков в первую очередь думает о Python. Это проверенный временем и миллионами учеников язык, экономит драгоценное время как на стадии обучения, так и применения. При этом количество областей IT, где бы вам мог потребоваться Python не ограничено вообще ничем. Большое спасибо поклонникам энтузиастам и Python Software Foundation.

Важно отметить, что востребованность в специалистах Python значительно выше за границей, нежели в России. Однако и у нас найти работу большого труда не составит: 2 325 вакансий в открытом доступе по версии hh.ru и 2 537 — trud.com.

Java — великолепный язык во всех отношениях. Это подтверждается и статистикой TIOBE, и самой популярной ОС в мире, и просто тем, что это достаточно простой язык с очень мощной экосистемой.

Если выразить в цифрах российской реальности, то актуальность Java составляет 4 628 пунктов по версии hh.ru и 4 490 — trud.com. Да, это не впечатляющие результаты на фоне некоторых предыдущих претендентов, но, во-первых, это обусловлено спецификой нашего IT-рынка, во-вторых тенденция к росту строго положительная, в-третьих Java всё же будет попроще C/C++.

Наверняка не такого лидера вы хотели увидеть, но формально придраться здесь не к чему. Вам очень трудно избегать использования БД в современных реалиях, а инструмента более универсального ,чем SQL пока никто не придумал. Именно этот факт и позволяет этому языку твёрдо восседать на первом месте практически во всех подобных рейтингах.

Язык отечественных цифр здесь не слишком ярко отражает реальный спрос, но в лидерстве SQL в данном рейтинге сомневаться не заставит. По факту, на hh.ru он набрал 8 303 внутренних вакансий, на trud.com 8 933.

Глядя на опубликованный в самом начале рейтнг, у вас наверняка возникает резонный вопрос: «А где же Perl и C#?». Всё дело в том самом проецировании на российскую действительность. Например, Perl имеет результаты 581 вакансий по версии hh.ru и 577 на trud.com. Это, конечно, лучше, чем Swift, но у яблочного языка есть очевидная перспектива, а спрос на Perl в России скорее всего будет только падать.

Касательно C# здесь ситуация лучше: 906 вакансий на hh.ru и свыше 16 тысяч на trud.com. Однако вторая цифра не должна вводить вас в заблуждение: среди вакансий почти половина C/C++ разработчики со знанием C#, поэтому по совокупности и фундаментальной значимости именно первая группа языков была вынесена в заголовок, а второй скромно упомянут в конце.

Как новичку выбрать язык программирования для будущей работы? Оценить уровень зарплат? Востребованность? Исходить из того, что проще выучить? Или внимательно изучить линии тренда популярности?

На самом деле, вы можете потратить уйму времени, выбирая лучший язык программирования. Но как только дело дойдет до личного знакомства, возникнет необходимость сменить фаворита. Сегодня вашему вниманию будет предложен вариант выбора, который должен прийтись по душе абсолютному большинству начинающих гиков — сочетание легкости изучения и востребованности на рынке труда. Эти два аргумента относительно просто достоверно проверить, поэтому полученный результат будет близок к объективности.

Критерии

Нам потребуется два авторитетных рейтинга. Легкость изучения будет оценена условно — в баллах её выразить невозможно, но составить некоторый список «простых» можно, пользуясь коллективными мнениями (1, 2, 3).

Расставлять по местам мы будем исходя из рейтинга востребованности. За базу возьмем ряд зарубежных статей (1, 2, 3), реальность же российскую подтвердим при помощи агрегаторов hh.ru и trud.com. Статистика, разумеется, актуальна на день написания текста, а к публикации вряд ли сильно изменится.

Что учитывать мы не будем, так это уровень зарплат и самодостаточность языка, просто из-за относительности данных критериев.

Swift

Формально, Swift, конечно еще не так востребован среди работодателей как Objective-C, и попаданием в этот рейтинг он во многом обязан общей платформе. Но игнорировать перспективу в этом рейтинге категорически невозможно. Поэтому рекомендуем начинать изучение уже сейчас. Приглашаем вас на бесплатный двухчасовой интенсив по основам Swift.

Взглянем на цифры российских HR-агентств — 471 вакансия в России и ближнем зарубежье на hh.ru и 410 на trud.com. Очень неплохо для трехлетнего языка. Если добавите Objective-C, можете смело умножать цифры на 3.

Называть язык C или C++ лёгкими для изучения не совсем правильно, особенно если сравнивать их с Python или Ruby. Но в данному случае стоит говорить о том огромном количестве учебной качественной литературы, о фундаментальности и том полезном остатке, что останется в вашей голове, даже если свою дальнейшую жизнь с ними вы не свяжете.

Но если всё таки языки вам понравятся, то аж 2 325 вакансий только в России на hh.ru и 12 543 на trud.com. При этом вам важно понимать, что если, в случае с языком Swift, это были вакансии исключительно разработчиков, то с C++ вам язык может понадобится не только в привычной сфере IT, но и на должности оператора ЧПУ, и автоэлектрика.

JavaScript

Мало того, что JavaScript крайне востребован в современном мире благодаря сумасшедшему развитию интернет-технологий, так ещё благодаря модулям и библиотекам его зона влияния стала распространяться во все остальные IT-сферы.

Добавьте сюда тот факт, что JavaScript относительно лёгок для изучения. Заимствовав базовые вещи из Си и постепенно развиваясь от бонусного элемента для HTML и CSS до самостоятельной силы, он получил удобоваримый синтаксис и предельно понятную для новичка логику работы.

А теперь к востребованности: 6 365 вакансий только внутри России на hh.ru и 5 565 на trud.com. Это весьма неплохие цифры для тех, кто твёрдо намерился найти работу по окончанию обучения.

Python

Когда речь идёт о совокупности аргументов лёгкость и востребованность (именно в таком порядке), большинство разработчиков в первую очередь думает о Python. Это проверенный временем и миллионами учеников язык, экономит драгоценное время как на стадии обучения, так и применения. При этом количество областей IT, где бы вам мог потребоваться Python не ограничено вообще ничем. Большое спасибо поклонникам энтузиастам и Python Software Foundation.

Важно отметить, что востребованность в специалистах Python значительно выше за границей, нежели в России. Однако и у нас найти работу большого труда не составит: 2 325 вакансий в открытом доступе по версии hh.ru и 2 537 — trud.com.

Java — великолепный язык во всех отношениях. Это подтверждается и статистикой TIOBE, и самой популярной ОС в мире, и просто тем, что это достаточно простой язык с очень мощной экосистемой.


Если выразить в цифрах российской реальности, то актуальность Java составляет 4 628 пунктов по версии hh.ru и 4 490 — trud.com. Да, это не впечатляющие результаты на фоне некоторых предыдущих претендентов, но, во-первых, это обусловлено спецификой нашего IT-рынка, во-вторых тенденция к росту строго положительная, в-третьих Java всё же будет попроще C/C++.

Наверняка не такого лидера вы хотели увидеть, но формально придраться здесь не к чему. Вам очень трудно избегать использования БД в современных реалиях, а инструмента более универсального ,чем SQL пока никто не придумал. Именно этот факт и позволяет этому языку твёрдо восседать на первом месте практически во всех подобных рейтингах.

Язык SQL в перспективе будет заменен на технологию CMIS

Ограниченное распространение стандартов для электронного документооборота в России является основным препятствием для развития рынка СЭД. Эксперты надеются, что уменьшить масштаб этих проблем удастся за счет появления нового открытого стандарта CMIS (Content Management Interoperability Services).

Опрос отечественных вендоров СЭД и компаний-интеграторов, проводящих проекты в области автоматизации ЭДО, показал, что на рынке сложилась ситуация, когда заказчики еще не оформили в виде законченных критериев выбора свои требования к соответствию СЭД тем или иным стандартам делопроизводства, особенно мировым, а разработчики и внедренцы пока не определились с тем, востребованы ли рынком сертифицированные под соответствие тому или иному стандарту системы. Поскольку стандартиризация возможна на разных уровнях – уровень разработки, терминологии предметной области, пользовательского интерфейса, то эксперты высказывают предложения по разделению стандартов, относящихся к разному типу – в частности, технических спецификаций и регламентов, определяющих реквизиты документа, разрешенные форматы хранения и так далее.

Одним из ключевых моментов для развития отрасли стандартизации является вопрос интероперабельности и «зоопарк» используемых компаниями ECM-решений. Эксперты надеются, что уменьшить масштаб этих проблем и облегчить процессы интеграции содержимого между разнородными системами управления корпоративным контентом удастся за счет появления нового открытого стандарта CMIS (Content Management Interoperability Services), анонсированного в начале 2010 года.

Интеграция КИС и СЭД стоит в приоритете

По данным издания Intelligent Enterprise, больше половины ИТ-специалистов считает, что ECM-системы могли бы играть большую роль в бизнес-процессах компании, если бы они интегрировались с приложениями от сторонних производителей.

Приложения, интеграция ECM-систем с которыми, является ожидаемой для компаний*

*Допускался выбор нескольких вариантов

Источник: InformationWeek, 2010

Согласно проведенному опросу 276 сотрудников ИТ-департаментов компаний, 59% респондентов уверены, что ECM-решения в случае, если бы они могли интегрироваться с сторонними информационными системами, играли бы более важную роль на производстве (эксперты сложили ответы 32% тех сотрудников, кто ответил положительно, упомянув о таких приложениях, позволяющих работать с контентом за пределами ECM, и 27% опрошенных, кто согласился, что для них актуально выгружать в ECM-систему больше контента для последующего применения к ним политик управления записями, приведения их с нормами законов и так далее).

СЭД и ECM свяжут одним стандартом

Разработка CMIS началась в сентябре 2008 года и поддерживалась несколькими крупными игроками рынка ECM/CMS – Oracle, EMC, Adobe, Microsoft, Open Text, Nuxeo, IBM и SAP (позднее к ним примкнул известный Open Source разработчик ECM Alfresco). Обсуждение предфинальной версии происходило в декабре 2009 года. В конце апреля 2010 года CMIS v. 1.0 набрал необходимый минимум в 15% голосов и теперь является официальным стандартом OASIS (Organization for the Advancement of Structured Information Standards).

Анонсы по включению поддержки CMIS в ECM-решения

Вендор Продукт Срок включения
EMC Documentum Первое полугодие 2010
IBM Content Manager Вторая половина 2010
IBM FileNet P8 Вторая половина 2010
Microsoft SharePoint 2010 Первое полугодие 2010
Open Text Enterprise Library Services (ELS-Beta) CMIS коннектор уже создан
Open Text Open Text ECM 10 Середина 2010
Oracle Oracle Universal Content Management Нет точных данных

Источник: InformationWeek, 2010

Аналитики предполагают, что применение этого открытого стандарта позволит обеспечить интероперабельность веб-сервисов с существующими ECM-продуктами. Вполне возможно, что за счет CMIS заказчикам удастся использовать больше способов применения ECM в бизнесе и, как следствие, они будут готовы увеличить инвестиции в такие решения. Некоторые западные эксперты сравнивают влияние CMIS на ECM-рынок с тем, что когда-то для развития сектора баз данных сделал язык SQL, и призывали не называть его «не всего лишь очередным стандартом», аргументируя это тем, что ведущие игроки отрасли не только принимали непосредственное участие в его разработке, но и неоднократно заявляли о том, что всерьез готовы учитывать его при создании своих продуктов.

Конечной целью CMIS является значительное снижение ограничений, существующих в мультивендорных и мультирепозиторных средах управления содержанием. Сегодня, чтобы обеспечить взаимодействие различных ECM-систем в своей организации, клиенты вынуждены тратить время и значительные средства на создание и поддержку собственного кода и одноразовых интеграций. Независимые поставщики ПО (ISV) также получат преимущества от спецификации, которая позволит им создавать специализированные приложения, способные работать поверх разнообразных систем управления содержанием.

Заказчики занесут CMIS в список требований

В течение 2010-2011 годов CMIS получит практическое применение во всех ведущих мировых документоориентированных платформах. Таким образом, появятся прецеденты взаимодействия разнородных систем и будут наработаны сценарии взаимодействия, которые можно будет адаптировать и к российским реалиям. «В России абсолютное большинство решений построено с использованием ЕСМ-платформ — лидеров рынка. Наличие готовых технологических решений обмена сервисами между СЭД может оказаться решающим фактором для организации межкорпоративного взаимодействия, что должно повысить интерес к СЭД», — предполагает Вадим Ипатов, заместитель генерального директора компании «Интертраст» по развитию бизнеса.

Положительно оценивает перспективы CMIS и Наталья Храмцовская, ведущий эксперт по управлению документацией компании ЭОС. «Реализация вендорами, разрабатывающими CMIS, этого стандарта в своих продуктах поможет преодолеть ряд технических проблем интероперабельности систем», — полагает она.

В свою очередь, Виктор Сущев, директор по консалтингу DocsVision, считает, что стандарт, безусловно, важен для России, но на данный момент его использование не перевернет отечественный сегмент СЭД. По его мнению, ведущие мировые вендоры договариваются под давлением потребителей, сделавших огромные инвестиции в свои ЕСМ-системы, а России до этого еще далеко. «Тем не менее, мы всегда сможем воспользоваться достигнутым результатом», — заверяет он. Павел Плотников, руководитель департамента продвижения решений и продуктов корпорации «Электронный Архив», напротив, уверен, что стандарт призван решить реальные проблемы, мешающие развитию отрасли, и поэтому более чем востребован.

Сергей Киселев, директор департамента разработки программного обеспечения группы компаний «Инталев», считает, что судьба стандарта в российских условиях будет зависеть от множества факторов, касающихся как непосредственно самого стандарта CMIS, так и внешних (например, общего экономического климата). При этом эксперт возлагает большие надежды на состав разработчиков стандарта, заверяя, что такие серьезные игроки ECM-рынка способны преодолеть трудности взаимопонимания и решить стоящие перед стандартом задачи.

Несколько скептически к появлению данного стандарта относится Ефим Старостин, директор департамента экспертной и технической поддержки продаж Optima. Он считает, что пока стандарт будет востребован формально (как, например, ODMA (Open Document Management API) , но в реальности сейчас применяться будет крайне редко.

Помимо решения проблемы интероперабельности, Александр Бейдер, директор по развитию направления ECM компании Terralink, видит еще один, важный, по его мнению, стимул для внедрения CMIS. По его мнению, одной из ключевых задач для российского предприятия в настоящее время можно считать унификацию ERP-ландшафта – компании переходят от разрозненных систем к централизованным установкам SAP ERP, отказываются от локальных систем вне зависимости от бренда, и именно здесь большое значение приобретает CMIS.

Среди косвенных последствий появления CMIS – усиление позиций западных поставщиков СЭД и появление новых, неизвестных вендоров на российском рынке СЭД.

Часть 1. Введение в cmislib

API-интерфейс на стороне клиента, соответствующий спецификации CMIS (Content Management Interoperability Services)

Серия контента:

Этот контент является частью # из серии # статей: Библиотека API-интерфейса для Python, соответствующая спецификации CMIS

Этот контент является частью серии: Библиотека API-интерфейса для Python, соответствующая спецификации CMIS

Следите за выходом новых статей этой серии.

Представляем cmislib: API-интерфейс для языка Python, соответствующий спецификации CMIS

Похоже, для спецификации Content Management Interoperability Services (CMIS) наступает напряженное время. Организация OASIS занимается подготовкой материалов для выпуска 1.0 данной спецификации, поставщики репозитариев упорно трудятся над завершением своих реализаций на стороне сервера, а разработчики из сообщества по управлению контентом выпускают стандартизованные клиентские компоненты и API-интерфейсы, призванные облегчить исследование и работу с репозитариями насыщенного контента за счет применения стандартных способов.

Часто используемые сокращения
  • ACL: Access control list (Список управления доступом)
  • API: Application program interface (Интерфейс прикладного программирования, API-интерфейс)
  • HTTP: Hypertext transfer protocol (Протокол передачи гипертекстовых файлов)
  • OASIS: Organization for the Advancement of Structured Information Standards (Организация по продвижению стандартов для структурированной информации)
  • REST: Representational State Transfer (Архитектурный подход, основанный на передаче состояния представления)

  • SDK: Software development kit (Инструментарий для разработки программного обеспечения)
  • SQL: Structured Query Language (Язык структурированных запросов)
  • URL: Uniform Resource Locator (Унифицированный указатель информационного ресурса, URL-адрес)
  • WSDL: Web Services Description Language (Язык описания Web-сервисов)
  • XML: Extensible Markup Language (Расширяемый язык разметки)

Если вам когда-либо приходилось создавать контентно-ориентированные приложения, то вы знаете, что обычно первая трудность состоит в выяснении того, как следует «говорить» с обеспечивающим репозитарием контента. Сначала ваша команда проходит ускоренный курс обучения по SDK-инструментарию этого репозитария. Затем вы проектируете вышеупомянутое приложение, в том числе интеграцию между уровнем представления (Presentation tier) и уровнем контентных сервисов (Content services tier). И, наконец, вы исполняете свой план, после чего отмечаете достигнутый успех большим банкетом с напитками и закусками. Однако, помимо увеличения окружности вашей талии, отрицательный момент такого подхода состоит в том, что этот процесс повторяется для каждой новой комбинации фронтального и серверного компонентов, поскольку каждый репозитарий имеет свой уникальный API-интерфейс. И если, как это часто бывает, вашему приложению нужно разговаривать с несколькими репозитариями, то вы должны будете изучить несколько интерфейсов и написать соответствующий программный код.

Мастер Йода рекомендует:  Сравнение Angular и React и их ключевые особенности

К счастью, подобная проблема уже решалась ранее. Аналогичная ситуация имела место до стандартизации SQL. Реляционные базы данных, созданные IBM® и другими компаниями, начали появляться еще в начале 1970-х годов, однако первое официальные работы по стандартизации языка запросов SQL начались только в 1986 г. Когда это, наконец, произошло, особенно после выпуска крупной ревизии в 1992 г., разработчики получили возможность для создания фронтальных приложений – с достаточной степенью уверенности в том, что эти приложения смогут работать с несколькими реляционными серверными компонентами. Спецификация CMIS потенциально способна сделать для контентно-ориентированных приложений то же самое, что язык SQL сделал для приложений реляционных баз данных. CMIS предоставляет стандартный способ для взаимодействия с серверным компонентом, не зависящий от реализации обеспечивающего репозитария или от выбора языка программирования для фронтального компонента. Только на этот раз вместо строк и столбцов мы говорим о неструктурированном и полуструктурированном контенте – обычно это файлы той или иной разновидности – который, как правило, размещается в иерархической структуре папок.

Эта статья описывает библиотеку стороны клиента под названием cmislib, которая предназначена для работы со CMIS-репозитариями из среды Python. Эта библиотека, которая в настоящее время сопровождается в рамках проекта Apache Chemistry, призвана упростить разработчикам на языке Python написание контентно-ориентированных приложений, способных работать с любым серверным компонентом, соответствующим спецификации CMIS. Для многих разработчиков этот API-интерфейс окажется удобным способом практического знакомства с возможностями CMIS.

Другие статьи данной серии

Теперь я расскажу, почему этот API был создан, что он делает для нас и как он был разработан (намекаю – на случай, если вы захотите переписать его на своем любимом языке), после чего мы рассмотрим несколько кратких примеров работы с библиотекой cmislib. В следующей статье серии последовательно описывается применение этой библиотеки для решения реальных задач.

Побудительные мотивы для создания описываемого API-интерфейса

В силу множества причин создание клиентского API-интерфейса для CMIS на языке Python представлялось разумной идеей. Некоторые из этих причин относятся к категории «стратегических» и «идеалистических». Другие причины являются более «тактическими» и «эгоистическими». Начнем с причин первой категории.

Поставщики продуктов, соответствующих CMIS, обязаны предлагать как связывание на основе Web-сервисов, так и RESTful-связывание на основе протокола AtomPub (Atom Publishing Protocol). Каждое из этих связываний имеет определенные преимущества перед другим, однако одно из различий между ними состоит в том, как осуществляется обнаружение и вызов CMIS-сервисов на различных серверах. Связывание через Web-сервисы предусматривает наличие WSDL-файла, который может использоваться для автоматической генерации клиентского кода. Если вы желаете использовать связывание на основе Web-сервисов, то с небольшими дополнительными усилиями (помимо создания WSDL-файла для своего CMIS-сервера) вы сможете сгенерировать свой API-интерфейс для стороны клиента.

С другой стороны, RESTful-связывание на основе протокола AtomPub не имеет стандартного способа для описания своих сервисов. Поскольку это «RESTful-связывание», то доступ ко всем его сервисам осуществляется посредством URL-адреса, однако спецификация CMIS оставляет каждому поставщику определенные URL-адреса. Таким образом, если вы хотите написать код, который будет работать со всеми «CMIS-совместимыми» поставщиками с использованием RESTful-связывания на основе AtomPub, то на стороне клиента вам придется выполнить несколько больший объем работы. Вместо повторения этой работы во всех проектах целесообразно сделать это в рамках проекта с открытым исходным кодом, результаты которого будут доступны всем желающим.

Следующая причина состоит в принятии рассматриваемой нами спецификации разработчиками приложений и поставщиками репозитариев контента. Разработчики могут просматривать соответствующие Web-семинары, сообщения в блогах, трафик Twitter и т.п., однако до тех пор, пока они не попробуют это своими руками и не осознают ценность на собственном опыте, CMIS остается для них не более чем очередным модным словечком. Если бы программное обеспечение по-прежнему поставлялось в коробках, то можно было бы вообразить ярко раскрашенные лозунги типа: «Теперь – на основе CMIS!». Язык Python – чистый, продуктивный, простой в установке – выглядит как прекрасный выбор для тех разработчиков, которые действительно хотят разобраться в том, что спецификация CMIS способна реально сделать для них и для их приложений. API-интерфейс cmislib ограждает разработчиков от деталей реализации и обеспечивает им интуитивно понятный, объектно-ориентированный и совместимый способ работы. Хотелось бы надеяться, что разработчики возьмут его на вооружение, как и многое другое, что попадает в поле их зрения, и начнут использовать CMIS в качестве стандартного способа для взаимодействия заказных контентно-ориентированных приложений с репозитариями насыщенного контента – вне зависимости от языка, на котором построен соответствующий клиент – на языке Python или на каком-либо другом языке.

Если спецификация CMIS будет принята хотя бы одним или двумя поставщиками, то конечная целая цель уже будет достигнута. Таким образом, всем тем, кто выигрывает от использования этого стандарта, определенно имеет смысл сделать все возможное, чтобы стимулировать принятие со стороны поставщика. В состав дистрибутива cmislib включены т.н. модульные тесты (unit test), предназначенные для использования в качестве наилучшей типовой методики разработки. Этот набор тестов существенно помогает гарантировать сохранение всех функциональных возможностей в процессе разработки API, а также является также удобным способом для воспроизводимой валидации такой характеристики, как «способность к взаимодействию». В любом случае, эти модульные тесты функционируют как набор тестов для поставщиков – и это очень хорошо! Каждый из таких поставщиков, как IBM, Alfresco™, OpenText и Nuxeo, использовал cmislib для выявления проблем в своих реализациях. Они не ограничивались только библиотекой cmislib – для валидации своей работы эти поставщики использовали все разновидности построенных сообществом CMIS-инструментов и CMIS-клиентов, что является весьма позитивным явлением.

«Все за одного и один за всех» – это сильная мотивация, однако она редко приводит к появлению хотя бы одной строки написанного кода. Образно говоря, каждый проект с открытым исходным кодом начинается с того, что у разработчика возникает непреодолимое желание почесать некое «зудящее место». В рассматриваем случае зуд начался с интранет-проекта, который компания Optaros™ выполнила для своего клиента. Этот проект должен был обеспечить интеграцию между Django® (инфраструктура на базе Python для разработки Web-приложений) и Alfresco (платформа с открытым исходным кодом для управления контентом). На момент реализации этого проекта спецификация CMIS еще не вышла за рамки идеи в организации OASIS, поэтому указанная интеграция использует на стороне сервера Web-скрипты Alfresco (инфраструктура для развертывания собственного RESTful API-интерфейса к платформе Alfresco) для передачи XML по HTTP между основанным на Django уровнем представления и Alfresco-репозитарием. Все это работает прекрасно, но является «Alfresco-специфическим». Казалось разумным провести рефакторинг этой интеграции Django с целью использования CMIS. Тем не менее, чтобы избежать привязки к Django, мы решили сначала развернуть библиотеку cmislib в качестве API-интерфейса нижнего уровня для Python. Преимущество этого подхода состоит в том, что благодаря использованию библиотеки cmislib он существенно облегчает интеграцию с CMIS-совместимыми репозитариями не только Django, но и других Python-проектов, таких как Zope® и Plone®, а так же заказных Python-приложений.

Последняя «эгоистическая» причина – это производительность труда разработчика. Большинство предприятий не могут позволить себе такой роскоши, как работа с единственным репозитарием. Кроме того, во многих случаях ИТ-решение неспособно предугадать, с каким именно репозитарием ему придется иметь дело, или, по меньшей мере, нуждается в возможностях для переключения на соответствующий репозитарий при наступлении нужного момента. Вполне очевидно, что стандарт CMIS помогает преодолеть эти проблемы, однако чтобы работа стала действительно продуктивной, необходимы соответствующие библиотеки на стороне клиента. В настоящее время осуществляются и другие проекты по созданию клиентских библиотек для CMIS, основанных на Java™ и PHP. Однако язык Python также очень распространен на уровне представления, поэтому столь важна клиентская библиотека для CMIS, основанная на Python.

Что делает API-интерфейс cmislib

Назначение интерфейса cmislib состоит в том, чтобы абстрагировать детали обеспечивающей реализации CMIS. Для того чтобы построить решения «поверх» CMIS-совместимых репозитариев, разработчикам нет необходимости изучать, как работает CMIS. Напротив, библиотека cmislib предоставляет простую в понимании модель объекта, которая знакома любому специалисту, который работает с репозитарием контента или прочитал спецификацию CMIS. Вместо «коллекций», «элементов» и «потоков» разработчики работают с такими естественными концепциями управления контентом, как репозитарии, папки, документы и ACL-списки.

Как указывалось выше, при коммуникациях со CMIS-совместимыми серверами cmislib использует связывание RESTful AtomPub. Одна из важных задач при разработке состояла в том, чтобы гарантировать отсутствие у библиотеки cmislib каких-либо знаний о специфике поставщиков серверных репозитариев, к которым она обращается – эта библиотека относится к CMIS-поставщику как к «черному ящику». Когда вы используете интерфейс cmislib для подключения к CMIS-поставщику, вы предоставляете ему точку входа CMIS-поставщика или URL-адрес сервиса и некую учетную информацию. Библиотека cmislib выясняет порядок дальнейшего взаимодействия с соответствующим сервером посредством исследования его ответов.

В качестве примера предположим, что вы хотите получить список документов, которые в настоящее время извлечены из репозитария. Спецификация CMIS сообщает вам следующее:

  • Коллекция извлеченных документов существует.
  • При вызове сервиса getCheckedOutDocs обязателен аргумент repositoryId .
  • Можно передать нескольких дополнительных аргументов, которые, по большей части, имеют отношение к разбиению на страницы набора результатов.
  • Ответ от сервиса будет представлять собой поток Atom.

Однако спецификация не сообщает вам точного URL-адреса для получения вышеупомянутой коллекции. Это оставлено на усмотрение поставщика. Библиотека cmislib выясняет, каков этот URL-адрес и как преобразовать отклик в объекты языка Python, с которыми вы сможете работать «Python-образным» способом. В листинге 1 показано, как это взаимодействие выглядит из оболочки Python:

Листинг 1. Перечень извлеченных из репозитария документов

Аналогично, предположим, что вы хотите извлечь документ из репозитария. Согласно спецификации, для изъятия вы должны отправить методом POST запись Atom в коллекцию извлеченных элементов ( checkout ), после чего репозитарий возвратит элемент Atom, представляющий собой частную рабочую копию (PWC — Private Working Copy) объекта, который вы извлекли. Если вы используете cmislib, то вам нет необходимости заботиться об определении коллекции, о построении и отправке XML-элемента Atom или об обработке XML-ответа. Вместо этого вы ограничиваетесь применением метода checkout к нужному объекту, а библиотека cmislib возвращает вам объект типа «Документ» в виде PWC-копии. Это взаимодействие показано в листинге 2

Листинг 2. Извлечение документа

Подход к разработке и тестированию

Было очень важно, чтобы библиотека cmislib была написана максимально близко к спецификации. Поэтому первый шаг состоял в расстановке заглушек для нужных классов и методов в среде Eclipse, открытой рядом со спецификацией CMIS. Я добавил перекрестные ссылки на эту спецификацию в построчных комментариях, что позволило мне быстро находить нужное место в спецификации позднее, когда я возвращался для реализации нужного метода.

Я с самого начала настроил контроль над процессом построения, документацией и исходным кодом. Было важно сделать это на ранней стадии, чтобы дополнительные разработчики могли присоединиться к проекту и быстро приступить к работе.

Эволюция кода происходила итеративным образом. Каждая итерация начиналось с написания модульных тестов на новые функциональные возможности, продолжалось написанием реального кода методов и заканчивалась после успешного прохождения вышеупомянутых тестов. Я начал с таких «основ», как запрос репозитария о его способностях и извлечение объектов/свойств объектов для валидации общего подхода. После этого я перешел к полному написанию операций, проверок, отношений и ACL-списков.

Первоначально тестирование столкнулось с определенными трудностями, поскольку не существовало никакой эталонной реализации (на тот момент связывание AtomPub в эталонной реализации Apache Chemistry функционировало лишь в режиме «только для чтения») и поскольку поставщики все еще работали над своими реализациями. Компания Alfresco, первопроходец в области CMIS, имела самую зрелую реализацию, поэтому я начал именно с нее. Как только большинство модульных тестов с реализацией Alfresco прошло успешно, я начал тестировать публично доступные CMIS-реализации других поставщиков. Корпорация IBM проявила любезность и безвозмездно предоставила свою реализацию. Добавление второй реализации прояснило многие неясные моменты, но при этом оказалось большим испытанием для cmislib и всех вовлеченных поставщиков. И на стороне клиента, и на стороне сервера мы выявили проблемы, которые, вполне возможно, не были бы обнаружены так быстро без подобного тестирования на способность к взаимодействию.

При разработке CMIS-инструментов или таких API-интерфейсов, как cmislib, крайне необходимо осуществлять тестирование с максимально возможным количеством разных серверов. Спецификация является весьма новой, а реализации поставщиков все еще находятся в стадии «дозревания», даже у тех из них, которые заявили о полном соответствии проекту спецификации. Наиболее типичные выявленные проблемы можно разделить на следующие три категории:

  • Недостаточная полнота реализации. Спецификация CMIS все еще является весьма новой. Обычной практикой является выявление недостающих сервисов (складывается впечатление, что на данный момент хуже всего поддерживаются ACL-списки, отношения, политики и журналы изменений), обязательных возможностей, которые пока не поддерживаются (напр., не предоставленные обязательные коллекции и связи) и жестко закодированные значения.
  • Различающиеся интерпретации спецификации. Спецификация CMIS представляет собой хорошо написанный и легкий для чтения документ, однако некоторые моменты по-прежнему остаются открытыми для интерпретации. Например, до выхода шестой версии проекта содержимое коллекции checkedout не было определено. Возможно, предполагалось, что она должна содержать PWC-копии извлеченных объектов? Или непосредственно сами объекты? Разные поставщики интерпретировали это по-разному и осуществили реализацию согласно своим интерпретациям. За прошедшее с тех пор время эта конкретная проблема была устранена (если вам интересно, то ответ – PWC-копии), однако можно понять, насколько трудным могло оказаться написание клиента, действительно способного к взаимодействию.
  • Плохие допущения. Иногда расширение спецификации стороны определенного поставщика является вполне очевидным, а иногда это далеко не так. Если вы пишете программный код своего API для одного сервера, а затем рассматриваете его в качестве эталонной реализации, то вы сделали допущение о том, что другие реализации будут действовать аналогичным образом. На данный момент проблема состоит в том, что пока не существует эталонной CMIS-реализации со связыванием на основе AtomPub, которая была бы функционально полна и соответствовала бы спецификации на 100%.

Несколько примеров

В следующей статье данной серии демонстрируется применение библиотеки cmislib в реальных условиях с использованием скрипта на языке Python, который вы сможете использовать для массовой загрузки цифровых активов и метаданных в CMIS-репозитарий. Следующие базовые примеры, взятые из документации на cmislib, демонстрируют выполнение типовых операций с API-интерфейсом из диалоговой среды Python. К числу этих операций относится получение информации о репозитарии, работа с папками и документами, отыскание объектов посредством CMIS-запроса, а также с помощью пути, идентификатора объекта или отношения.

Получение объекта Repository

Объекты CmisClient и Repository – это обычные начальные точки для практически любых действий со CMIS-репозитарием. Получение экземпляра осуществляется достаточно просто – вам достаточно знать URL-адрес сервиса и учетные данные для входа в репозитарий. Выполните следующие действия:

  1. Из командной строки запустите оболочку Python, для чего введите с клавиатуры слово python, а затем нажмите на клавишу Enter.
  2. Импортируйте объект CmisClient:
  3. Укажите объекту CmisClient на URL-адрес сервиса в репозитарии:
  4. Каждый репозитарий имеет свой идентификатор ( >
  5. Теперь вы можете получить свойства репозитария. Следующая конструкция вида for-loop выкладывает всю информацию, которую cmislib знает о репозитарии. (Я обрезал листинг для краткости).


Работа с объектами типа Folder (Папка) и Document (Документ)

После того, как вы будете располагать объектом Repository (Репозитарии), вы сможете приступить к работе с такими объектами в этом репозитарии, как Folder (Папка) и Document (Документ).

  1. Создайте новую папку в корневом каталоге. Если вы до настоящего момента следовали всем рекомендациям буквально, то сейчас дайте своей папке какое-либо уникальное имя – если вы осуществляете тестирование с публичным репозитарием.
  2. Теперь вы можете создать какой-либо контент:
  3. При желании вы можете вывести на печать свойства только что созданного документа (как показано на следующем фрагменте листинга):

Извлечение объектов

Для извлечения какого-либо объекта можно использовать несколько различных способов:

  • Можно исполнить CMIS-запрос.
  • Можно попросить репозитарий предоставить вам объект, соответствующий определенному пути, или объект с определенным идентификатором.
  • Можно осуществить прохождение по репозитарию с использованием потомков папки.
  • Можно получить исходный и целевой объекты, связанные между собой каким-либо отношением.

Ниже приведено несколько примеров, демонстрирующих эти возможности в действии:

  1. Нахождение документа, созданного в предыдущем параграфе, с помощью полнотекстового поиска.
  2. В качестве альтернативного варианта вы также можете получать объекты по их путям:
  3. Кроме того, можно извлечь объект с использованием его идентификатора:
  4. У объектов типа Folder имеются методы getChildren () и getDescendants (), которые возвращают набор результатов (в постраничном виде):
  5. У объектов типа Folder и Document имеется метод getRelationships(), который возвращает набор объектов типа Relationship (Отношение). Объект типа Relationship позволяет вам получить исходный и целевой объекты, связанные с соответствующими концами этого отношения.

Из следующей статьи в данной серии вы узнаете, как работать с другими аспектами API-интерфейса, включая возможность извлекать определения типа объекта.

Заключение

Другие статьи данной серии

Из статьи вы получили общее представление о библиотеке cmislib, познакомились с историей ее появления, узнали о том, что она делает, а также просмотрели несколько базовых примеров. Хотелось бы надеяться, что теперь вы готовы перейти к дальнейшему освоению спецификации CMIS. Если вы интересуетесь языком Python, то вам следует поближе познакомиться с библиотекой cmislib. Соответствующая ссылка приведена в разделе Ресурсы. Если нет, то исследуйте ссылки на другие клиентские инструменты и библиотеки, приведенные в списке источников. И последнее. Вы нужны сообществу по спецификации CMIS. Вы можете оказать содействие разными способами:

  • В случае отсутствия библиотеки клиента, написанной на предпочтительном для вас языке, создайте такую библиотеку в виде проекта с открытым исходным кодом.
  • Помогите вашему поставщику репозитария протестировать его реализацию CMIS.
  • Напишите для своего любимого портала интеграционные компоненты или презентационную инфраструктуру, упрощающую работу со CMIS-совместимыми репозитариями.
  • Внесите свой вклад в существующие CMIS-проекты с открытым исходным кодом, таких как cmislib и Apache Chemistry.
  • Примите участие в совершенствовании спецификации CMIS в сотрудничестве с Техническим комитетом по CMIS в организации OASIS .

Ресурсы для скачивания

Похожие темы

  • Оригинал статьи: «A CMIS API library for Python, Part 1: Introducing cmislib» (EN).
  • Библиотека API-интерфейса для Python, соответствующая спецификации CMIS. Часть 2. Построение ECM-инструментов для решения реальных задач с помощью языка Python и библиотеки cmislib. Создание примера приложения . (Jay A. Brown, developerWorks, март 2010 г.). В заключительной части этой серии спецификация CMIS и язык Python совместно используются для построения ECM-инструмента с помощью библиотеки cmislib. Просмотрите текст исходного года и узнайте, как использовать этот инструмент в командной строке.
  • Начальная страница по cmislib на ресурсе Google Code (EN). Получите более подробную информацию по cmislib.
  • Начало работы со спецификацией CMIS (EN). Хотите увидеть, как работает обеспечивающее RESTful-связывание на основе Atompub? Ознакомьтесь с учебным пособием на блоге Дж. Поттса.
  • Разработка дополнения к браузеру Mozilla Firefox для поддержки спецификации Content Management Interoperability Services (EN): (Gregory Melahn, Shun Zhang, Yan Chen, Hui Jian He и Ziao Wang, developerWorks, декабрь 2009 г.). Ознакомьтесь с обзором по CMIS и с примером CMIS-дополнения для браузера.
  • API-интерфейсы и клиентские инструменты CMIS: Посетите Wiki-ресурс по Lotus Quickr, на котором размещены результаты компиляции репозитариев и приложений, использующих стандарт CMIS от организации OASIS.
  • Технический комитет по CMIS (EN) в организации OASIS. Изучите возможность применения Web-сервисов и интерфейсов уровня Web 2.0 для поддержки совместного использование информации репозитариями управления контентом от разных поставщиков.
  • Python и Django (EN). Узнайте подробнее о Python, чтобы ускорить свою работу за счет более эффективной интеграции систем. Добавьте Django, высокоуровневую Web-инфраструктуру Python, которая поможет вам быстрее строить высокопроизводительные и элегантные Web-приложения.
  • Предварительный показ технологий IBM FileNet и IBM Content Manager для спецификации CMIS от организации OASIS (EN). Загрузите и исследуйте CMIS-связывание REST/Atom для репозитариев IBM FileNet® и IBM Content Manager.
  • Сертификация IBM по XML (EN). Узнайте, как получить сертификат IBM-Certified Developer in XML (сертифицированный корпорацией IBM разработчик по XML и связанным технологиям).
  • Ознакомительные версии продуктов IBM. Загрузите ознакомительные версии программных продуктов IBM или воспользуйтесь их онлайновыми пробными версиями на ресурсе IBM SOA Sandbox (EN) и приобретите опыт работы с инструментами разработки приложений и продуктами связующего уровня семейств DB2®, Lotus®, Rational®, Tivoli® и WebSphere®.
  • Подкасты ресурса developerWorks (EN): слушайте интервью и дискуссии для разработчиков ПО.

Комментарии

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

О CMIS из первых уст

Директор по технологиям подразделения EMC Content Management and Archiving, о новом стандарте доступа к контенту предприятия

На прошедшей в Праге конференции Momentum 08 стандарт CMIS (Content Management Interoperability Services), определяющий принципы доступа к контенту предприятий, представлял Размик Абноус, директор по технологиям подразделения EMC Content Management and Archiving. Абноус входил в первую команду проектировщиков, создавшую платформу Documentum.

Мастер Йода рекомендует:  Маляры, носки и переменные — подборка задач для программистов

На прошедшей в Праге конференции Momentum 08 стандарт CMIS (Content Management Interoperability Services), определяющий принципы доступа к контенту предприятий, представлял Размик Абноус, директор по технологиям подразделения EMC Content Management and Archiving (см. также «ECM в стиле Web 2.0»). Абноус входил в первую команду проектировщиков, создавшую платформу Documentum. С 1991 года он является архитектором сервера Documentum Server, участвовал в разработке Documentum 4i eBusiness, под его руководством создавали Documentum 5 и все последующие версии. До прихода в Documentum он работал в Digital Equipment и Ashton-Tate. Сейчас Абноус руководит процессом разработки стандарта CMIS. Деятельность, связанная со стандартизацией, ему хорошо знакома: он член совета директоров Организации по совершенствованию стандартов структурированной информации (Organization for the Advancement of Structured Information Standards, OASIS).

— Чем вызван ваш интерес к вопросам стандартизации?

Можно привести примеры того, как принятие отраслевых стандартов ускоряло прогресс, а отсутствие – тормозило. На мой взгляд, в ее нынешнем виде работа по стандартизации далека от совершенства. Количество стандартов явно избыточно, они нередко пересекаются, но в то же время ряд областей, в том числе близкая мне область управления контентом предприятия (Enterprise Content Management, ECM), лишены нужных стандартов. Процесс принятия стандартов замедлен из-за отсутствия должного образования специалистов и осведомленности.

— Ваше мнение о предназначении стандарта CMIS?


CMIS призван сыграть роль, аналогичную той, которая с 1986 года принадлежит языку структурированных запросов SQL. Но в отличие от своего предшественника он ориентирован не на простые данные, а на управление контентом, и в этой области призван обеспечить приложениям примерно такую же возможность для универсального доступа к информации, как SQL в паре с реляционными СУБД. Естественно, что за двадцать с лишним лет многое изменилось, и в основе новых подходов лежат Web-сервисы. Но при создании CMIS мы не стремились решить все проблемы, возникающие при доступе к контенту предприятия, мы не пытались распространить один стандарт на всю функциональность ECM. Создатели стандарта свели свои усилия к обеспечению единообразного доступа из разных сред, будь то Java, средства от Microsoft или какие-то иные языки.

— Сейчас наблюдается, если так можно сказать, безответственность в использовании слов «информация», «контент». Можно ли понять вас так, что, стремясь ввести стандарт на доступ к контенту, вы стандартизировали само это понятие?

Да, мы формализовали представление о контенте до уровня бит и байт, что дает возможность оперировать им, выполнять операции поиска и выделения полезной информации, отслеживать появление новых версий, то есть осуществлять так называемый «контроль версий». Мы ставили своей задачей формализовать понятие контента, чтобы оно, с одной стороны, было пригодно для использования в приложениях Web 2.0, а с другой — удовлетворяло бы требованиям систем архивирования, а также обеспечивало возможность ведения составных документов.

— Под контентом вы понимаете следующий уровень представления информации по сравнению с тем, что называют структурированными и неструктурированными данными? Действительно ли, в целом ряде случаев следует использовать не затасканное и неопределенное понятие «информация», а строгое и определенное «контент»?

Именно так. Контент есть ни что иное, как объединение данных с метаданными. Такой подход позволяет совершенно по-иному подойти к решению задач управления информационной безопасности. Мы можем точнее определить, что, собственно, является предметом защиты, можно создать контентнозависимую систему обеспечения безопасности. То же самое можно сказать и о системе архивации.

В конечном итоге решается важнейшая задача обеспечения очевидности потребительских качеств информационных технологий. Их насущность становится понятной лицам, принимающим решения, что в конечном итоге поможет в переходе от подталкивания руководства к приобретению ИТ к естественной для потребителей системы выбора того, что нужно им для повышения экономической эффективности. Пользователи смогут получать не отдельные точечные решения, а комплексные системы, решающие их насущные бизнес-проблемы.

— Мне довелось наблюдать за эволюцией конференций Momentum с тех времен, как Documentum была самостоятельной компанией. Для стороннего наблюдателя изменения заметные: если раньше это было собрание специалистов по тому, что в России называют «документооборотом», с их спецификой, то сегодня атмосфера неотличима от того, что можно наблюдать на большинстве компьютерных конференций. А как вы видите происходящие трансформации?

Изменилось и продуктовое предложение, и корпоративный стиль, и, если хотите, характер. Основным наследством от Documentum была и остается технология работы с документами Electronic Document Management System (EDMS), но мы стали выходить за ее узкие рамки лет пять назад. Хотя движение по направлению к Web началось раньше. Уже в названии выпущенной в 2000 году версии Documentum 4i появилась отражающая это обстоятельство буква. И все же мы все пришли из мира реляционных систем, поэтому для нас естественнее было все то, что происходит в части основных информационных ресурсов предприятия, но постепенно и мы сместились по направлению к рабочим местам, к лучшему пониманию клиентских интересов, к тому, что называют Web-контентом. А происходящие сейчас на клиентской стороне изменения, связанные с повсеместным принятием Web 2.0 — эти изменения в корне меняют все — и нас в том числе.

— В чем вы видите общность и отличие Web 2.0 вообще от Web 2.0 в корпоративной среде?

Общим является отношение к потреблению информации, мир изменился, главное сегодня — мгновенное получение информации и использование ее в электронной форме.Мы действительно переходим к безбумажным технологиям, к существованию в разного рода сообществах и проч. А раз мы живем по-новому, то и работать следует иначе, я бы сказал, что Web 2.0 в корпоративной среде есть отражение изменившихся внешних условий. А различия заключаются в накладываемых ограничениях, не каждому сотруднику доступны все сообщества, есть ограничения на доступ к источникам информации, — источники открываются, но в той мере, в какой это разумно с точки зрения безопасности и эффективности деятельности предприятия.

— В чем вы видите главные перспективы Web 2.0 на предприятии?

Чтобы ответить на этот вопрос, приведу в пример Amazon. Они преуспели в наращивании бизнеса за счет новых технологий, благодаря ним получив возможность знать своего потребителя и предлагать индивидуально ему книги, соответствующие его запросам и представлениям. Я называю это «потребительским контекстом». То же самое должно быть и в корпоративной среде, новые технологии позволяют лучше понимать и использовать контекст, в котором работает предприятие. Каждый работник окружен каким-то контекстом, и от того, насколько эффективно организован этот контекст, зависит работа, но главное — потенциальный синергетический эффект. На предприятии имеется огромное количество неиспользуемой или плохо используемой информации, управление контентом на должном уровне может обратить ее в дело.

— Но это дело не ИТ-подразделений, кто всем этим будет заниматься?

Да, разумеется, не ИТ. Новые подходы позволят передать инициативу менеджерам, это их дело — управлять информационными ресурсами, а дело ИТ — перевести это управление на уровень работы с данными. Если такая система сложится, то нас ожидает интересное будущее.

Поделитесь материалом с коллегами и друзьями

Какие языки программирования займут лидирующие позиции в будущем — выясняем, что перспективно изучать сейчас

Подписчик Tproger интересуется:

Как вы думаете, какие языки программирования заменят ныне существующие или займут лидирующие положения через 15–25 лет? Как вообще может измениться сфера IT за это время? Стоит ли при обучении программированию выбирать какие-то новинки, чтобы в будущем быть на топовой позиции, или лучше придерживаться «классики»?

Мы передали вопрос нашим экспертам.

В выпуске участвует много спикеров IT-конференции «Стачка». Выражаем благодарность организаторам конференции и лично Анастасии Паниной за помощь со сбором ответов. Читайте также её рассказ о том, как правильно организовать IT-конференцию международного уровня.

Павел Емельянов , главный архитектор Virtuozzo

Не могу сказать за всю индустрию IT, всё-таки в разных областях применяются очень разные языковые наборы. В той области, где в основном работаю я, а это ядро и около него, Си (включая ++) держится очень крепко и в ближайшие 5 лет точно никуда не денется. Одновременно с этим появляется большое количество проектов на Go, сам язык достаточно интересен, для проектов на нём есть очень много готовых запчастей, так что у него, мне кажется, прекрасные шансы сильно потеснить Си (включая ++). Конечно, у Go есть применения и гораздо дальше от ядра, но о тенденциях в тех областях я не берусь судить.

А вот через 20 лет, как мне кажется, должен произойти качественный скачок.

Уже сейчас есть много проектов, направленных на создание совершенно другого способа написания программ. Например, недавно была новость о создании ИИ, способного творить новые программы из кусков старых, эдакий цифровой профессор-Франкенштейн. Другой пример — это специальные игры, проходя которые, люди (не обязательно программисты) решают определённые задачи, неявно «помогая» при этом системе генерировать код какой-то другой программы. Как только подобные системы разовьются достаточно сильно, программистам понадобятся языки для их программирования, и эти языки уже будут не просто новыми, а построенными на совершенно иных принципах, нежели современные.

Игорь Цупко , технический директор Notamedia

Я уверен, что никуда не денутся монстры: C++, C#, Java. Первое место в разных рейтингах может меняться, подчиняясь моде и политике крупных компаний, но основы останутся.

Иван Никитин , директор «Иван Никитин и партнеры»

Когда я учился в институте, нам преподаватели говорили: «Язык программирования ничего не значит». Опытному программисту нужно около 20–40 часов для освоения нового языка на уровне нормального кодирования. Поэтому говорить о важности языков программирования не приходится. Будем писать на том, что есть.

Василий Федосеев , директор «Хобби Центра»

Честно говоря, сложно делать такие предположения. Ведь до сих пор себя вполне неплохо чувствует тот же C++, которому уже, страшно сказать, более 30 лет! Совершенно точно можно сказать то, что развиваться будут языки, так или иначе связанные с веб-технологиями.

Степан Чельцов , генеральный директор агентства «Первый интернет-проект»

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

Сказать с определённой точностью, что произойдёт ближайшие 5–10 лет на рынке, который меняется очень быстро — невозможно. Посмотрите, всего лишь 10 лет назад появились айфоны, и благодаря им появились отдельные новые языки, на которых началась мобильная разработка. Сейчас появляется виртуальная реальность, под неё тоже готовятся какие-то технологии, которые будут работать с совершенно другим объемом данных, визуализировать эти данные и позволять с ними интерактивно взаимодействовать.

Соответственно, все, что нам предстоит — это учиться, подстраиваться, постигать новое и никогда не останавливаться на том, что мы уже изучили, постоянно погружаясь в специализацию, погружаясь в детали, погружаясь в способности нашего продукта или языка или фреймворка, и создавать нужный результат.

Я всем искренне желаю научиться только одному — уметь постоянно учиться, узнавать новое и критически мыслить, оценивая новые знания. Этот навык поможет вам в самых разных задачах, даже если вы не знаете, как к ним подступиться.

Microsoft обрисовала перспективы SQL Server

Появление новой версии сервера баз данных обещает изменить положение дел на рынке программных средств бизнес-анализа

Рубрика Технологии | 744 прочтения

Корпорация Microsoft изложила планы дальнейшей работы над СУБД SQL Server, а также lдополнительными компонентами, которые в конечном итоге должны изменить положение дел в области бизнес-анализа и хранилищ данных.

Очередная версия сервера баз данных, разрабатываемого под кодовым наименованием Kilimanjaro, должна появиться в первой половине 2010 года. Упор здесь будет сделан на самообслуживание и расширение возможностей бизнес-анализа. Предварительный вариант Microsoft обещает представить в течение ближайшего года на условиях Community Technology Preview (CTP).

Функции самообслуживания объединены в рамках набора технологий под общим кодовым наименованием Gemini. Эти технологии позволяют создавать приложения бизнес-анализа, которые смогут получать данные сразу из нескольких источников, обобщать эту информацию и обеспечивать построение отчетов и диаграмм, а также обмен результатами через систему SharePoint.

Для организации обмена результатами бизнес-анализа корпорация Microsoft планирует интегрировать в SQL Server ряд базовых функций унифицированных коммуникаций Office Communications Server.


Большая часть компонентов Gemini тесно связана с Excel, благодаря чему пользователи смогут обращаться к аналитическим средствам самообслуживания из программы, работающей на их настольном компьютере.

Приобретения корпорации в секторе систем бизнес-анализа и ее твердое намерение расширять поддержку функций бизнес-анализа в популярном продукте SQL Server за последние полгода наделали много шуму.

Признанные «тяжеловесы» бизнес-анализа Business Objects/SAP, Cognos/IBM и Hyperion/Oracle вынуждены теперь считаться с Microsoft.

Правда, в отчете, подготовленном аналитиками Gartner, говорится, что Microsoft «все еще отстает от производителей, специализирующихся на системах бизнес-анализа, в части, управления метаданными, формирования отчетов, построения приборных панелей и реализации других специальных функций».

Со своей стороны в Microsoft намерены планомерно устранять эти недостатки.

Ближайшая цель заключается в том, чтобы расширять возможности инструментальных средств бизнес-анализа, делая их более доступными пользователям, особенно тем из них, кто регулярно обращается к Excel и SharePoint.

С помощью Gemini разработчики рассчитывают предоставить пользователям необходимые средства бизнес-анализа, не принося при этом в жертву управление ИТ.

«Важным моментом здесь является то, что управление Gemini будет организовано в условиях самообслуживания, — отметил директор Microsoft по управлению продуктом SQL Server Фаусто Ибарра. — Управляемость означает, что ИТ-служба получит возможность контролировать интересующие ее процессы; на сегодняшний момент в том, как конечные пользователи применяют механизмы Excel, отсутствует и контроль за ними со стороны ИТ-служб, и контроль данных самими пользователями».

С помощью Gemini сотрудники ИТ-службы смогут видеть, кто обращается к данным, управлять средствами обеспечения информационной безопасности и определять доступные пользователям источники данных.

К этим источникам относятся данные ERP, приложения для мэйнфреймов и разнообразные программные системы, разработанные независимыми производителями.

Еще одной ключевой особенностью Gemini является выполнение функций бизнес-анализа непосредственно в оперативной памяти компьютера. В этом случае большие объемы данных будут анализироваться в памяти с целью повышения производительности.

Кроме того, в Microsoft разрабатывают высокомасштабируемую технологию аппаратных хранилищ данных; данный проект носит кодовое наименование Madison. В рамках Madison компоненты SQL Server будут интегрированы с технологиями, доставшимися Microsoft вместе с покупкой в этом году компании DataAllegro.

Инженеры DataAllegro занимались проектированием крупных аппаратных хранилищ данных, и в Microsoft рассчитывают, что Madison сможет управлять сотнями терабайт данных. Во время конференции представители корпорации показали демонстрационную базу данных, хранящую триллион записей.

Для повышения качества доступной информации планируется использовать технологию компании Zoomix, вошедшей в состав Microsoft в июле. Пока сообщения ограничиваются тем, что данная технология найдет применение в «будущих версиях» SQL Server.

Ожидается, что версия CTP Madison будет выпущена в течение ближайших двенадцати месяцев, а в первой половине 2010 года получит воплощение в виде конкретных решений. В роли поставщиков оборудования будут выступать компании Dell, HP, Unisys, Bull и EMC.

Будущие перспективы программирования? [закрыт]

Дело в том, что находясь на 2 курсе Информационных технологий наступает такая пора, когда надо выбирать дальнейшее направление в мире программирования. А именно между Web-Dev и прикладным программированием, к тому же выбор ЯП как основново инструмента.

В институте ”проходим” C++, (хотя у меня язык не поворачивается назвать изучаем, скорее просто просматриваем логические и операторы вывода, старый синтаксис и т. д) и так целый семестр, складывается впечатление, что лектор отстает от жизни лет на 10 как минимум, и ничего нам больше не светит кроме нудной писанины математических функций в тетрадке. Тут же состоялось мое первое знакомство с прикладным программированием, оставило довольно позитивное впечатление.

На 3 курсе Java, но уже страшно представить что будет с таким отношением к предмету со стороны лекторов. Но это не главное, мой университет считается «лучшим» по Самообразованию) и на него я не расчитываю, только диплом.)

К тому же, я полтора года занимаюсь Веб-программированием и знаю (HTML, CSS, PHP(средне), MySQL), и до этого времени все шло замечательно, думал учиться на веб-программиста, пока я не задумался о будущем, а переспективно ли это, ведь мне придется выбрать одно направление и несколько инструментов для реализации, которые будут сопровождать меня всю жизнь.

И пошло поехало, стал взвешивать шансы, сравнивать графики ЯП за последние 7 лет, искать те или иные преимущества веб и прикладного программирования, лихорадочно бродить по гуглу выискивая задатки перспектив.

Условно разделив ЯП на категории для достижения цели получил довольно интересную картину:

Веб-Программирование:

  • HTML/CSS/XML
  • PHP + MySQL
  • JavaScript
  • Python + Django
  • Ruby + RoR

Прикладное программирование:

Поиски документации по ЯП завели меня еще дальше, теперь выбор будущего стал более неопределенным. С одной строны Java – всегда вакантные места и кроссплатформенность, к тому же несколько лет он занимает первые места в рейтинге и даже не намерен уступать.

C# — за последнее время этот язык поддерживаемый Microsoft вырос на глазах, и продолжает расти, появляються перспективы полностью заменить C++. Язык будущего, но есть один большой минус, он зависим от платформ, а точнее от Windows. C++ — постепенно умирающий язык. ИМХО. Но его нельзя списывать со счетов.

С другой стороны это Web-программирование которое немного ближе ко мне.

PHP – это первый мой ЯП который я считал довольно хорошим и перспективным, пока не познакомился с Python, который очень впечатлил меня своей краткостью, гибкостью и конкурентоспособностью. Конечно популярностью PHP мог бы позавидовать любой язык. В данный момент популярность начинает спадать, но вакансий как и в случае с Java не становиться меньше, а даже увеличивается.

Python – все началось наверно с него, он перевернул мое представление о программировании, впечатляющий, лаконичный, легкий, строго типизированый, имеет очень много достоинств. В связке в Django может обвести вокруг пальца любого конкурента, но есть существенный минус, это мало вакансий в моей стране.

Впечетленным всем этим уже несколько неделей страдаю фигней, а точнее определяю свое будущее и переспективы. Если я уйду в Web-разработку(а именно в Python, PHP, Ruby, Js) не прогадаю ли я? Или, возможно сразу переквалифицироваться в Java или C#, я конечно понимаю, все зависит от человека?

Интересно ваше мнение.

P. S Сорри за столь сумбурный монолог и за грамматические ошибки если такие имеются.

Закрыт по причине того, что необходимо переформулировать вопрос так, чтобы можно было дать объективно верный ответ участниками Kyubey, fori1ton, VenZell, atwice, BOPOH 10 апр ’15 в 11:38 .

Вопрос порождает бесконечные прения и дискуссии, основанные не на знаниях, а на мнениях. Для получения ответа перефразируйте ваш вопрос так, чтобы на него можно было дать однозначно правильный ответ, либо удалите вопрос вовсе. Если вопрос можно переформулировать согласно правилам, изложенным в справке, отредактируйте его.

Заблокирован участником Nofate ♦ 29 май ’15 в 14:41 .

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

Подробнее о заблокированных сообщениях здесь.

17 ответов 17

Молодой человек, не там ищете. Надо заниматься не тем, что вам сейчас кажется перспективным, а тем, к чему у вас лежит сердце или что у вас лучше получается.

Простой пример: уже наштамповали в стране миллионы никому ненужных юристов и экономистов и все потому, что лет 10 назад их реально не хватало и все идиёты поперлись туда — ну как же востребованная профессия!


То что сейчас (ровно как и 10 лет назад) Java востребована к сожалению ничего не означает. К моменту когда вы станете довольно борзо писать — вполне может случиться что технология сдохнет (окончательно она конечно не сдохнет ибо она уже сейчас является становой хребтиной) — ну в общем вы поняли. Аналогично может случиться с любой технологией dot Net, PHP. Сейчас все очень текуче и зыбко — быстро меняется.

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

Вопрос некорректен. Переквалификация в Java или C# не означает отказ от веба.

Python . В связке в Django может обвести вокруг пальца любого конкурента,

Нет, он не может. Человек может, а сам по себе питон ничего не может.

  • HTML/CSS/XML -PHP + MySQL
  • JavaScript
  • Python + Django
  • Ruby + RoR
Мастер Йода рекомендует:  Ускорение блога на WordPress Nginx, MariaDB, Varnish

Опять неверно. Никто не мешает использовать Python и Ruby для прикладных целей. И даже JavaScript. XML тут тоже не в тему.. он имеет отношение ко всему. Языки C++/C#/Java вообще универсальны. Пожалуй, на C++ делать что-то долго, но дела это не меняет. И, конечно, знание любого пункта из списка не отменяет необходимость знания HTML/CSS/XML и даже JavaScript.

В институте ”проходим” C++,(хотя у меня язык не поворачивается назвать изучаем,скорее просто просматриваем логические и операторы вывода,старый синтаксис и т.д) и так целый семестр,складывается впечатление,что лектор отстает от жизни лет на 10 как минимум

Ну это вы совсем зря. Изучение C++ учит дисциплине. Кроме того, для изучения алгоритмов новомодные языки плохо подходят. Именно поэтому для обучения преподавать надо начинать с C++ или Pascal. Выучить новомодные фишки вы всегда успеете, а вот научиться правильно думать необходимо. И не важно, устарел лектор на 10 лет или нет.

Ценятся программисты, а не кодеры. То есть, конечно, кодеры тоже ценятся (иначе на что бы я жил, хех), но. второсортнее.

Разделение ложно. И веб и десктоп отличаются только одним — тем, как описывается внешний вид и поведенческая логика фронтэнда. В верстке веб-страниц или раскладке виджетов программирования не больше, чем в пайке радиодеталей — инженерно-радиотехнических работ. Да, нужен опыт (без него все рискует быть кривым, громоздким, ограниченным, сложноподдерживаемым, неудачным), но и там и там работа, по большей части, чисто механическая.

Разумеется, в области фронтэндов есть и интересные и нетривиальные задачи по визуализации или обработке сигналов, но они не особо часты, а в большинстве случаев уже решены.

Но самое интересное и нетривиальное, пожалуй, всегда находится «под капотом». А там нет никакой особой разницы каким внешним образом поступают данные и как потом будут визуализироваться результаты. К слову, у немалой кучи «десктопных» приложений под капотом браузер, отрисовывающий HTML+CSS. В обратную сторону реже, но, например, тот же GTK3 имеет HTML5-бэкенд.

Ну и нет особой разницы в языке, на котором пишется код. Главное, чтобы он был адекватен задаче, а дальнейшее — это уже вопросы экономики и политики, а не программирования. Из упомянутых и Python и C# и Java — языки достаточно общего назначения, так что неверно говорить что «вот этот — для веб, а этот — десктопный.» Тем более, что большая часть программирования зависит от семантики, а не синтаксиса языка, а перечисленные языки имеют очень много семантически сходных (хотя и не идеально аналогичных) конструкций. А синтаксис учится быстро.

Поэтому лучше, я бы сказал, первично учиться, эээ, computer science. Это, если не посвящать жизнь клепанию сайтов-визиток, todo-приложений под айфон и прочих утилит-менеджеров автозапуска, пригодится всегда, в любой области. Изучать стоит все попадающиеся под руку языки — эти знания лишними не бывают. Впрочем, уделяя приоритет более интересным и, среди интересных — более рыночно-практичным. И, конечно же, любые прикладные навыки-технологии (верстка, фреймворки), на вкус и спрос: знания — сила, но платят, как правило, не за знания, а за практические результаты. Так что если у Вас лежит душа к Python+Django — вот, оно. Рынок этого дела есть (со всеми нишами от индусов-за-еду до грамотных специалистов), за него волноваться не стоит.

Язык SQL в перспективе будет заменен на технологию CMIS

Перспективы развития SQL

Язык SQL проникает во все новые области обработки данных, постоянно приобретая дополнительные возможности. В главах 20-22 рассматриваются три относительно новые технологии — хранимые процедуры, хранилища данных и распределенные базы данных. В главе 23 описывается роль SQL в объектно-ориентированных технологиях и в объектно-реляционных базах данных нового поколения. Наконец, в главе 24 обсуждаются основные тенденции в продолжающейся эволюции языка SQL и перспективы его развития на ближайшие годы.

в архитектуре современных систем обработки данных неуклонно возрастает роль серверных СУБД. Дореляционные СУБД отвечали главным образом за доступ к данным и их хранение, предоставляя приложениям возможность перемещаться по базе данных как им угодно, а также сортировать, отбирать и обрабатывать информацию. Однако с появлением реляционных СУБД и SQL ситуация коренным образом изменилась Операции поиска и сортировки стали командами языка SQL, выполняемыми исключительно самой СУБД, и ею же производится вычисление итоговых данных. Теперь явная навигация по базе данных больще не нокна. Последующие расширения SQL, такие как первичные и внещние ключи, ограничения на значения, продолжают эту тенденцию, вытесняя функции проверки данных и обеспечения целостности базы данных, которые раньше были неотъемлемой частью клиентских приложений. А конечная цель этой тенденции проста: чем больше ответственности берет на себя серверная СУБД, тем более эффективной и надежной становится система в целом благодаря централизованному управлению базой данных и снижению вероятности разрушения данных из-за ошибок в клиентских приложениях

Общую тенденцию к расширению функций СУБД продолжают еще две важные возможности, которыми обладают практически все современные реляционные СУБД масштаба предприятия: поддержка хранимых процедур и триггеров Хранимые процедуры позволяют переносить часть прикладных функций, связанных с обработкой данных, в саму базу данных. Например, хранимая процедура может управлять приемом заказа или переводом денег с одного банковского счета на другой Триггеры служат для автоматического выполнен хранимых процедур при возникновении в базе данных определенных условий. Например, триггер может автоматически переводить деньги со сберегательного счета на чековый, когда остаток последнего исчерпывается Вот об этих возможностях мы и поговорим в настоящей главе, посмотрим, как они реализованы в некоторых популярных СУБД и каковы разработанные для них стандарты С появлением хранимых процедур и триггеров SQL превратился в настоящий язык программирования, и, рассказывая о них, мы будет предполагать, что основные концепции профаммирования вам знакомы.

Концепции хранимых процедур

в своей исходной форме SQL не был полноценным языком профаммирования. Он задумывался и создавался как язык, предназначенный для выполнения операций над базами данных — создания их сфуктуры, ввода и обновления данных — и особенно для выполнения запросов, SQL может использоваться как интерактивный командный язык: пользователь по очереди вводит инсфукции SQL с клавиатуры, а СУБД их выполняет. В этом случае последовательность операций над базой данных определяется ее пользователем. Инсфукции SQL могут всфаиваться в профаммы, написанные на других языках профаммирования, например на С или COBOL, и тогда последовательность операций над базой данных определяется приложением

С появлением хранимых процедур язык SQL обогатился рядом дополнительных базовых возможностей, обеспечиваемых практически всеми языками профаммирования, что позволило писать на расширенном SQL настоящие профаммы и процедуры. Конкретные детали зависят от реализации языка, но в целом эти возможности можгю описать так:

Условное выполнение. Консфукция if. . .then. . .else позволяет SQL-проиедУР проверить условие и в зависимости от результата выполнить различные действия-

suhorukov.com

Профессиям, связанным с базами данных, в IT-отрасли отведено свое особое место. Спрос на таких специалистов существует уже давно, однако сегодня потребности бизнеса (как мелкого, так и крупного) в работе с данными неуклонно возрастают. Данные превратились в отдельный актив, поддерживать и работать с которым необходимо.

Специалисты Кадрового агентства Алексея Сухорукова каждый год проводят исследования рынка труда в IT-секторе. Их результаты показывают как возрастающий средний уровень заработных плат специалистов по базам данных, так и увеличивающийся спрос на них. Меняются и требования работодателей, и возможные перспективы развития карьеры

Если брать более глобальные мировые исследования, то они также подтверждают наметившуюся тенденцию.

Например, Бюро статистики труда США прогнозирует 11%-й рост количества рабочих мест, связанных с базами данных, в период с 2014 по 2024 год. Это выше среднего показателя по всем профессиям. Рост в этой области будет зависеть от возросших потребностей компаний во всех секторах экономики. Еще больший рост рабочих мест прогнозируется в направлении баз данных, связанных с облачными вычислениями — 17% за аналогичный 10-летний период. Это обусловлено тем, что облачные технологии будут все более активно применяться малым и средним бизнесом, которому понадобятся свои IT-отделы или специалисты на аутсорсе.

Уровень средней заработной платы из года в год также растет. По данным Министерства труда США среднегодовой доход администраторов баз данных на начало 2020 года составляет 81 710$. Самые высокооплачиваемые специалисты заработали более 127 000$ (более 10% от всего количества).

Грег Кемниц, Staff Database Engineer в Fitbit:

“Для управлением данными, в конечном итоге, требуются более глубокие навыки, чем это обычно бывает у многих, допустим, веб-разработчиков. Они владеют меньшим количеством инструментов, но они владеют ими гораздо глубже.

Знание синтаксиса SQL — это только начало. Нужно знать, как моделировать данные, когда беспокоиться о нормализации, как управлять миллиардами таблиц, которые нужно искать в интерактивном режиме.

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

В рейтинге лучших IT-профессий специальность “Администратор базы данных” стоит на 5 месте, при этом у нее практически самый низкий показатель безработицы — 1,1%. Для сравнения у веб-разработчиков этот показатель составляет почти 4%.

Кортни Бун, специалист со степенью бакалавра в области разработки программного обеспечения и баз данных:

“Базы данных невероятно важны для любой компании. Когда компания понимает это, они обычно ищут кого-то, кто является экспертом в области управления базами данных и обработки. Экспертов по базам данных намного меньше, чем разработчиков, и меньше, чем вакантных рабочих мест для них. Людей с таким набором знаний и навыков не так много, это делает их более ценными в глазах работодателя. Следовательно, им проще найти работу”.

На сегодняшний день можно выделить несколько основных профессий, связанных с работой с базами данных: администратор базы данных, разработчик базы данных, архитектор базы данных, аналитик данных, специалист по бизнес-аналитике (BI). Часто их функционал пересекается, поэтому данное деление принято считать условным.

Скажем о сложностях. Профессиональное развитие в этом направлении может зависеть от размеров бизнеса, в котором работает специалист. Естественно, что в крупных компаниях больше возможностей, более масштабные проекты и более сложные задачи. Иногда для дальнейшего продвижения придется либо менять работодателя, либо расширять собственные навыки и функции.

Так же карьера в специальностях, связанных с базами данных, часто зависит и от уровня владения конкретными платформами: Oracle, Microsoft SQL Server, IBM DB2 и другие. Здесь определенное значение имеет получение сертификатов, которые подтверждают профессионализм сотрудника. В банковском секторе чаще всего используют Oracle и там сильно востребованы специалисты именно по этой СУБД. Также Oracle распространен в розничной торговле, у страховых и телекоммуникационных компаний, в сфере ЖКХ. По накопленной статистики, данная система занимает около 30% рынка корпоративных систем управления базами данных.

В городах, которые являются технологическими центрами, почти всегда открыты вакансии как для администраторов баз данных, так и для разработчиков. При этом специалисты по определенной СУБД всегда могут переквалифицироваться на другую в случае необходимости.

Бен Брамм , основатель DatabaseStar.com:

«На разработчиков баз данных спрос будет всегда. Если это касается Oracle, то тем более. Для развитии карьеры может помочь знание языка, который хорошо работает с Oracle. Например, Java.

Вы также можете изучить концепции хранилищ данных и бизнес-аналитики. Системы и компании генерируют все больше и больше данных, и в этом есть смысл. Выполнение процесса ETL и загрузка хранилища данных — это навык, который востребован, и это другой тип разработки, нежели традиционная разработка баз данных. Наконец, изучение некоторых других технологий баз данных, таких как SQL Server , будет очень полезным, так как вы уже знаете основы. Большая часть знаний передается, и есть много компаний, которые используют SQL Server вместо Oracle».

Таким образом, одна из наиболее очевидных карьерных перспектив в работе с базами данных — это повышение уровня владения конкретными платформами. Чаще всего это происходит именно через обучение и получение официальных сертификатов.

При этом стоит отдельно отметить и универсальность языка SQL. С одной стороны, очень редко встречаются вакансии, где он указан в качестве единственного и основного требования. С другой — он способен стать одним из ключевых “усилителей” для разработчиков самого разного профиля. Одно время ему предрекали смерть ввиду появления технологий NoSQL, однако эти прогнозы оказались ложными.

Джон Майкл Никерсон, инженер данных, разработчик хранилища данных:

«Изучайте Python и SQL, и тогда вы сможете выбрать любой путь и сделать прибыльную карьеру, несмотря ни на что. Они оба относительно простые, относительно универсальные языки и хорошо дополняют друг друга.

Кроме того, SQL никогда не умрет. Он останется востребованным, вероятно, на протяжении всей вашей карьеры. Определенное время назад были разговоры, что SQL должен быть заменен различными решениями NoSQL, но это очень далеко от истины. Подавляющее большинство популярных функций NoSQL были интегрированы и реализованы в базе данных SQL (JSONB в PostgreSQL, коннектор NoSQL для MySQL 8 и функции JSON для всех популярных баз данных SQL). После этого уже большинство популярных решений NoSQL или Big Data задним числом реализовали интерфейс, подобный SQL: Hive SQL для Hadoop, KSQL для Kafka, Spark SQL для Apache Spark, U-SQL для Azure и многие другие.

Существует целый мир прибыльных карьерных путей с SQL в качестве основного языка. При этом индустрия данных расширяется. Роли и наборы инструментов быстро развиваются. Например, Python. Это растущий язык программирования номер один, лучший язык в индустрии данных (кроме SQL), и он настолько гибок и широко используется, что вы можете легко сменить свою карьеру с разработчика базы данных на веб-разработчика и продолжать использовать свои знания Python».

Есть и еще более заманчивые направления для дальнейшего роста. Главное из них — BI (Business Intelligence) . BI-архитектор, BI Developer — это одни из самых высокооплачиваемых IT-профессий. У них достаточно высокий входной барьер (потому что здесь как раз и нужен глубокий опыт работы с базами данных и бизнес-аналитикой), но и не менее высокие перспективы. В этих специальностях надо владеть технологиями хранения данных, технологиями для трансформации и загрузки данных, а также технологиями визуализации данных и создания отчетности.

Если посмотреть на открытые вакансии в России, то заработная плата таких специалистов стартует с отметки в 120 000 рублей и часто превышает границу в 200 000 рублей. Верхних пределов не существует — они зависят от опыта кандидата и размеров бизнеса компании-работодателя. Из этого направления можно так же расти дальше в сторону Big Data и предиктивной аналитики (predictive analytics) . О востребованности и высоких зарплатах в этих сферах сейчас не говорит разве что ленивый.

«BI — лучший шаг развития карьеры для специалистов баз данных с точки зрения количества доступных рабочих мест и растущей тенденции к анализу данных. Если вы захотите стать архитектором данных, то здесь потребуются навыки работы с большими данными и облачными технологиями. BI или бизнес-аналитика широко используются практически в любой отрасли. Новые технические позиции, которые интенсивно работают с данными (специалист по обработке данных, по машинному обучению) требуют немало навыков анализа данных».

В Кадровое агентство Алексея Сухорукова почти каждый месяц поступают новые запросы от работодателей, которым необходимо закрыть вакансию специалиста баз данных.

Например, в финтех-компанию, работающую с крупными российскими банками и ведущими торговыми сетями, требуется разработчик БД/Oracle. При этом необязательно быть специалистом именно по Oracle — в компании развита система наставничества и она готова во всем способствовать переходу на эту СУБД. Зарплата — до 130 000 рублей (плюс релокационный пакет в случае необходимости). Работодатель подчеркивает весьма заманчивые перспективы для профессионального роста внутри компании.

Постоянно встречаются вакансии и для специалистов с не самым большим опытом. Так, один из лидеров на рынке онлайн-кредитования физических лиц ищет в свою команду разработчика БД с зарплатой от 40 000 рублей. Другой пример — немецкая компания, создающая маркетинговую платформу. Ее клиентами являются Audi, Volvo, HP, Huawei, Bayer, Commerzbank. В офис отдела разработки, который находится в Новосибирске, требуется разработчик БД (уровень заработной платы определяется индивидуально, старт — от 35 000 рублей).

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

Программист MS SQL

В должностные обязанности программиста MS SQL входит:
— создание и оптимизация запросов SQL/T-SQL (хранимых процедур, триггеров, функций, представлений);
— создание и оптимизация отчетов;
— анализ требований заказчика и разработка/доработка соответствующих объектов баз данных;
— участие в разработке архитектуры данных и структур баз данных;
— разработка объектов базы;
— администрирование баз данных;
— анализ производительности баз данных‚ оптимизация и ускорение обработки запросов;
— разработка и поддержание в актуальном состоянии документации по своему направлению деятельности.

Заработная плата и требования работодателей
Средняя заработная плата программиста MS SQL в Москве составляет в Санкт-Петербурге — в Волгограде — в Воронеже — в Екатеринбурге — в Казани — в Красноярске — в Нижнем Новгороде — в Новосибирске — в Омске — в Ростове-на-Дону — в Самаре — в Уфе — в Челябинске —

От начинающих программистов MS SQL требуют наличия технического высшего образования (возможно, неполного), понимания реляционной модели данных, знания классических алгоритмов и структур данных, уверенных знаний одного из процедурных языков (PL/SQL,T-SQL, SQL PL), опыта написания скриптов и хранимых процедур на языке запросов, а также знания английского языка на уровне чтения технической документации. Зарплатные предложения для специалистов без опыта работы на данной позиции в Москве начинаются , в Санкт-Петербурге —

От специалистов, имеющих опыт работы программистом MS SQL от года, работодатели ждут знания архитектуры MS SQL и способов оптимизации производительности, понимания принципов работы баз данных (уровней изоляции‚ блокировки данных‚ плана выполнения запроса и пр.), знания средств обеспечения стабильности функционирования БД (технологии репликации, кластеризации, резервного копирования и восстановления) и целостности данных, а также умения разбираться в чужом коде. Дополнительными преимуществами будут знание XML, XSLT и методик организации процесса разработки в команде (Scrum, Kanban, Waterfall). Зарплатные предложения для соискателей, соответствующих указанным требованиям, составляют в Москве, в городе на Неве.

Специалисты, имеющие уверенный опыт разработки архитектуры базы данных, оптимизации сложных запросов и работы с высоконагруженными базами данных, могут претендовать на более высокие зарплаты. От кандидатов требуют знания дополнительных инструментов работы — SQL Management Studio, SQL Server Profiler, SQL Reporting Services, SQL Server Integration Services, SQL Server Analysis Services. В некоторых случаях может понадобиться знание одного или нескольких языков программирования (С++, C#, Python, PHP и др.) и навыки работы с другими базами данных (Oracle, MS Dynamics и т.д.). Минимальный опыт работы с MS SQL — 3 года. Зарплатные предложения в этом диапазоне в Москве достигают , в Северной столице —

Наиболее привлекательные предложения работодатели готовы сделать специалистам, имеющим опыт разработки, внедрения и сопровождения систем, обрабатывающих значительные объемы данных, а также имеющим опыт разработки определенных типов программного обеспечения (в зависимости от специфики компании это может быть банковское ПО, серверные приложения и т.д.). В этом диапазоне пригодится знание английского языка на свободном или разговорном уровне. В зависимости от компании и масштабов задач работодатели, имеющие такие требования к кандидатам, предлагают в Москве в Санкт-Петербурге —

Регион Диапазон I Диапазон II Диапазон III Диапазон IV Медиана
(без опыта работы программистом MS SQL) (с опытом работы года) (с опытом работы лет) (с опытом работы лет) (средняя заработная плата)
Москва 90 000
Санкт-Петербург 75 000
Волгоград 48 000
Воронеж 50 000
Екатеринбург 61 000
Казань 50 000
Красноярск 56 000
Нижний Новгород 53 000
Новосибирск 59 000
Омск 48 000
Пермь 54 000
Ростов-на-Дону 30 000 — 36 000 36 000 — 44 000 44 000 — 60 000 60 000 — 110 000 54 000
Самара 30 000 — 36 000 36 000 — 43 000 43 000 — 60 000 60 000 — 110 000 54 000
Уфа 28 000 — 33 000 33 000 — 40 000 40 000 — 55 000 55 000 — 100 000 50 000
Челябинск 30 000 — 35 000 35 000 — 42 000 42 000 — 62 000 62 000 — 105 000 53 000

81% кандидатов на позицию программиста MS SQL — мужчины. 93% соискателей имеют высшее образование. 10% претендентов владеют английским языком на свободном или разговорном уровне.

Добавить комментарий