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

2009-10-10

Прослойка

Заманчивая идея обернуть БД в интерфейс, удобный именно вам. Сколько проектов, столько велосипедов.

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

Объектная модель

Объектная модель должна позволять выбрать множество A по известным параметрам B: A(B). Вот несколько практических примеров:

* список пользователей, у которых возраст > 20: user(user.age>20);
* список подарков у пользователей с возрастом более 20: gifts(user.age>20).

В чем особенность этой модели? Разработчику необязательно знать, как связаны объекты «Пользователь» и «Подарок». Ему достаточно описать требуемую бизнес-логику в каком-то виде (API, предоставляемый системой), а сервер сам построит необходимые связи и выдаст нужный результат.
...
Для реализации такой модели создается так называемый объектный сервер. Это самостоятельно приложение, которое имеет некоторые интерфейсы для взаимодействия с другими приложениями. Объектный сервер знает о своих компонентах и сам определяет, какую именно у него запросили информацию. Клиентское же приложение, в котором разработчик описывает свои запросы к базе, не знает структуру базы, но имеет механизмы, которые позволяют запрашивать требуемую информацию у объектного сервера.
...


habrahabr.ru/blogs/webdev/71279


Сцылки дня:
Письма президенту

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

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

Архив блога

Ярлыки

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)