Система управления реляционной базой данных против объектной базы данных - PullRequest
3 голосов
/ 23 апреля 2009

Я научный сотрудник в университете. Мы переосмысливаем тему «Архитектура программного обеспечения», надеясь «модернизировать» и решить некоторые проблемы преподавания и совместного обучения, которые мы обнаружили в прошлых семестрах.

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

Для настойчивости мы привели студентов к HSqlDb.

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

В реальном производстве я бы выбрал технологию ORM, например Hibernate, но предмет уже слишком сложен, чтобы преподавать еще одну технологию (и Hibernate - огромный, чтобы изучать его для студентов)

Итак, мои вопросы к SO-сообществу:

  • Должны ли мы рассмотреть вопрос о предоставлении студентам объектно-ориентированной базы данных (если они все еще существуют)? Это экономит время на ORM и сантехнике
  • Должны ли мы придерживаться RDBMS и сказать студентам, чтобы они запускали свои собственные ORM?
  • Должны ли мы указывать студентам на легкий, простой ORM?

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

Я в глубине души разработчик C #, но студенты знакомы с Java только тогда, когда изучают этот предмет.

Ответы [ 5 ]

5 голосов
/ 23 апреля 2009

Я должен искренне не согласиться с использованием ORM в образовательной среде. Вы должны уметь ходить, прежде чем бегать, а использование ORM исключает очень важный шаг в процессе обучения, касающийся использования реляционной базы данных в приложении. Вы должны придерживаться ОЧЕНЬ облегченной структуры доступа к данным - той, которая требует от студентов писать собственный SQL и (в лучшем случае) не позволяет привязывать эту область кода к пользовательскому интерфейсу или (по крайней мере) не требует это.

По общему признанию, я не знаком с миром Java, поскольку он связан с фактическим развитием предприятия, но я понимаю (несколько неохотно), что это среда в образовательной системе. Хотя я считаю, что студенты должны быть знакомы с .NET, это аргумент в другой раз;) В любом случае, я вполне уверен, что существует какая-то платформа, которая удовлетворяет этому.

Я бы хотел поспорить, что есть что-то, что обеспечивает некоторую функциональность генерации кода. На моей старой работе мы использовали библиотеки баз данных .NET только для (относительно) низкоуровневого чтения данных из базы данных. Мы не использовали какие-либо репозитории или технологии отслеживания изменений, но вместо этого развернули свои собственные. Команды SQL были написаны вручную, но фреймворк по-прежнему обеспечивал безопасность типов и полную поддержку дизайнера. Я хочу сказать, что оба варианта возможны. Я хотел бы предложить найти что-то похожее на это в Java, требуя от студентов ручного кодирования одного или двух из этих адаптеров, чтобы получить представление о том, что с ними происходит, а затем попросить генератор кода выполнить другую "грубую работу" на основе своего SQL заявления.

Не используйте генерацию SQL. Вы ДОЛЖНЫ иметь возможность написать SQL, прежде чем позволить компьютеру сделать это за вас. Во-вторых, когда вы используете ORM для выполнения чего-то, что вы не знаете, как делать в SQL, это второе, что вы потеряли контроль над моделью базы данных, и им нужно это понять.

3 голосов
/ 23 апреля 2009

Как человек, который принял OO от всей души, и RDBMS неохотно ... Я бы посоветовал, даже умоляю, отделам информатики держать теорию и практику реляционных баз данных на переднем плане. Если это можно сделать, даже если вы используете ORM для классов OO, тогда сделайте это. Но я бы предпочел, чтобы студенты, выходящие из колледжа, понимали, что ОО-реляционное отображение сложно , а почему сложно, и это не означает, что реляционная модель нарушена .



Не очень сломан, во всяком случае.

1 голос
/ 20 июля 2009

Взгляните на DataObjects.Net - разделяет преимущества инфраструктуры OR / M, а также объектной базы данных (если используются встроенные поставщики хранилищ), позволяя прозрачно мигрировать между поддерживаемыми хранилищами.

Он достаточно продвинут с точки зрения архитектуры и расширений: посмотрите, например, этот пост о методах оптимизации запросов.

1 голос
/ 23 апреля 2009

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

Что касается предоставления ORM, такого как Hibernate, я не совсем согласен с тем, что учащимся нужно что-то грандиозное. Одна из лучших особенностей Hibernate заключается в том, что уровень сложности довольно хорошо коррелирует с тем, насколько глубоко вы в него углубляетесь. Он имеет очень низкий входной барьер (менее одного дня IMO), чтобы начать работу с основами, и часто основы - это все, что вам нужно, особенно для чего-то вроде прототипа, что, как вы сказали, является целью этой деятельности. Конечно, это не требует обучения в такой степени, что это будет придерживаться студентов за рамками курса. Основное использование Hibernate может быть одноразовым навыком.

Подводя итог, я рекомендую придерживаться СУБД и предоставлять ORM, такой как Hibernate.

0 голосов
/ 23 апреля 2009

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

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

Я не очень знаком с инструментами, доступными для Java для реализации ORM, но я смог найти его в C # (используя LINQ to MySQL) всего за несколько дней (после неудачной попытки выучить PHP для несколько недель). Если реализация проектов в C # возможна, то при использовании LINQ можно отметить, что он дает учащимся представление о том, как могут выглядеть запросы в SQL, не выходя из зоны комфорта ООП (при условии, что они, по крайней мере, немного удобны для .СЕТЬ). Это позволяет учить понятиям программирования баз данных, не тратя слишком много времени на обсуждение реализации этого. Затем, когда они освоили эти концепции, вы можете откатиться назад и показать им, как выполнить аналогичную реализацию вне ООП (с использованием SQL, PHP, JSP и т. Д.)

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

Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...