Записки программиста, обо всем и ни о чем. Но, наверное, больше профессионального.

2008-01-17

Объектно-реляционное отражение или Вьетнам компьютерной науки

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

.Иногда объекты строятся вокруг реляционной/табличной модели, в них добавляются операции доступа к реляционной базе данных, и это называется «активными записями» (Active Record, [Fowler, стр. 160]).

Действительно, этот базовый подход – подчинить одну модель терминам и подходу другой модели – является традиционным решением проблемы несоответствия моделей. По сути дела, проблема решается путем игнорирования ее половины. К сожалению, авторы большинства подобных разработок, подобно администрации Кеннеди, не хотят доводить эту идею до логического конца с полным предпочтением одного подхода перед другим. Например, хотя большинство групп разработки программного обеспечения было бы счастливо принять «исключительно объектный» подход, это привело бы к использованию объектно-ориентированной системы управления базами данных (ООСУБД), что часто не одобряется высшим руководством корпоративных групп управления данными. Обратный подход – «исключительно реляционный» – почти бессмысленно рассматривать при наличии той технологии, которая используется разработчиками во время написания этой статьи.

Невозможность «разрешить объектам использовать все свои возможности», как сказал бы генерал Уэстморленд, заставляет использовать некоторый гибридный подход к организации ОР-отображения, предпочтительно, как можно более автоматизированный, чтобы разработчики могли концентрироваться на модели своей предметной области, а не на деталях ОР-отображения. И вот здесь, к сожалению, начинается потенциальная трясина. .



citforum.ru

Я для себя давно выбрал - я БД использую как хранилище данных. Продвинутое, "активное", но - хранилище. По сути, как файлы - открыл, прочел, записал. Всё.

Но тож я, сторонник простых решений.

Комментариев нет:

Отправить комментарий

Архив блога

Ярлыки

linux (241) python (191) citation (186) web-develop (170) gov.ru (159) video (124) бытовуха (115) sysadm (100) GIS (97) Zope(Plone) (88) бурчалки (84) Book (83) programming (82) грабли (77) Fun (76) development (73) windsurfing (72) Microsoft (64) hiload (62) internet provider (57) opensource (57) security (57) опыт (55) movie (52) Wisdom (51) ML (47) driving (45) hardware (45) language (45) money (42) JS (41) curse (40) bigdata (39) DBMS (38) ArcGIS (34) history (31) PDA (30) howto (30) holyday (29) Google (27) Oracle (27) tourism (27) virtbox (27) health (26) vacation (24) AI (23) Autodesk (23) SQL (23) humor (23) Java (22) knowledge (22) translate (20) CSS (19) cheatsheet (19) hack (19) Apache (16) Manager (15) web-browser (15) Никонов (15) Klaipeda (14) functional programming (14) happiness (14) music (14) todo (14) PHP (13) course (13) scala (13) weapon (13) HTTP. Apache (12) SSH (12) frameworks (12) hero (12) im (12) settings (12) HTML (11) SciTE (11) USA (11) crypto (11) game (11) map (11) HTTPD (9) ODF (9) Photo (9) купи/продай (9) benchmark (8) documentation (8) 3D (7) CS (7) DNS (7) NoSQL (7) cloud (7) django (7) gun (7) matroska (7) telephony (7) Microsoft Office (6) VCS (6) bluetooth (6) pidgin (6) proxy (6) Donald Knuth (5) ETL (5) NVIDIA (5) Palanga (5) REST (5) bash (5) flash (5) keyboard (5) price (5) samba (5) CGI (4) LISP (4) RoR (4) cache (4) car (4) display (4) holywar (4) nginx (4) pistol (4) spark (4) xml (4) Лебедев (4) IDE (3) IE8 (3) J2EE (3) NTFS (3) RDP (3) holiday (3) mount (3) Гоблин (3) кухня (3) урюк (3) AMQP (2) ERP (2) IE7 (2) NAS (2) Naudoc (2) PDF (2) address (2) air (2) british (2) coffee (2) fitness (2) font (2) ftp (2) fuckup (2) messaging (2) notify (2) sharepoint (2) ssl/tls (2) stardict (2) tests (2) tunnel (2) udev (2) APT (1) CRUD (1) Canyonlands (1) Cyprus (1) DVDShrink (1) Jabber (1) K9Copy (1) Matlab (1) Portugal (1) VBA (1) WD My Book (1) autoit (1) bike (1) cannabis (1) chat (1) concurrent (1) dbf (1) ext4 (1) idioten (1) join (1) krusader (1) license (1) life (1) migration (1) mindmap (1) navitel (1) pneumatic weapon (1) quiz (1) regexp (1) robot (1) science (1) serialization (1) spatial (1) tie (1) vim (1) Науру (1) крысы (1) налоги (1) пианино (1)