Интеграция языков программирования с базами данных: в чем состоит проблема?

Автор работы: Пользователь скрыл имя, 23 Сентября 2011 в 22:30, статья

Описание

Проблема «потери соответствия» (impedance mismatch) между языками программирования и системами баз данных обсуждается в сообществе баз данных на протяжении всей моей профессиональной жизни. Попытки решения этой проблемы породили направления языков программирования баз данных, объектно-ориентированных и, отчасти, объектно-реляционных баз данных.

Работа состоит из  1 файл

Интеграция языков программирования с базами данных.doc

— 201.50 Кб (Скачать документ)

8. Параллелизм

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

В базе данных параллелизм представляется как конкурентный (competitive): несколько транзакций конкурирует за доступ к разделяемым ресурсам. Индивидуальные операции могут перекрываться, если набор транзакций является сериализуемым. Менеджер транзакций может аварийно прекратить выполнение любой транзакции и откатить ее. В базах данных обеспечиваются гарантии общего поведения системы, а в языках программирования обычно такие гарантии отсутствуют.

Параллелизм вызывает существенные проблемы для чистых разновидностей ортогональной персистентности [11]. Вместо того чтобы настаивать на полной ортогонализации языков программирования, исследования следует сосредотачивать на обеспечении семантически осмысленного поведения транзакций/восстановления [19].

На пользу транзакциям  идет и оптимизация поиска: если некоторая операция затрагивает  много объектов, но обновляет только один из них, то затронутые объекты оставляют большой «след», который может мешать другим транзакциям. Оптимизация поиска сокращает число объектов, затрагиваемых транзакцией. Долго работающие транзакции с большей вероятностью блокируют другие транзакции или подвергаются аварийному завершению.

9. Оценка

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

Рис. 6. Сводка качественной оценки решений проблемы потери соответствия

PJama и OPJ являются  вариантами Java с чисто ортогональной  персистентностью [30]. В этих системах не поддерживаются истинные параллельные транзакции в смысле баз данных, но имеется понятие фиксации в «контрольных точках» глобально согласованного состояния области хранения [11]. Хотя целевая установка чисто ортогональной персистентности препятствует использованию явных запросов, остается открытым вопрос, может ли компилятор Java использовать пересылку критериев или навигационное упреждающее чтение в качестве части своей стратегии компиляции. В эти системы можно было бы включить и поддержку истинной модели ACID-транзакций, хотя это и уменьшило бы уровень ортогональности персистентных данных.

Exodus [13] и Ontos [40] – это объектно-ориентированные базы данных с собственным менеджером хранения. Для оптимизации поиска программисты могут использовать явные индексы. В Exodus ключ индекса является статически типизированным, но объекты данных, загружаемые с использованием индекса статически не типизируются. EJB 1.0 – это средство объектно-реляционного отображения, имеющее сходство с интерфейсом между объектами и базами данных. В EJB 1.0 не поддерживаются явные запросы, но допускаются методы-искатели (finder methods), представляющие собой разновидность явного индекса.

ObjectStore и O2 –  это объектно-ориентированные базы  данных с собственным менеджером  хранения [40]. В них поддерживается пересылка критериев на основе использования критериальных объектов. Но для них отсутствует статическая проверка, и поля именуются строками. JDO 1.0 и EJB 2.0 являются средствами объектно-реляционного отображения для Java. Они обеспечивают высокий уровень ортогональной персистентности [29]. Поддерживается пересылка критериев. Частично поддерживается оптимизация навигации: ее можно задать в качестве глобального свойства связи, но не для отдельных запросов.

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

ODBC и JDBC –  это стандартные интерфейсы уровня  вызова. Они обеспечивают полный  набор функциональных возможностей, но не поддерживают статическую типизацию. При использовании этих интерфейсов оптимизация многоуровневой итерации является затруднительной. SQLJ [8] – это разновидность встраиваемого SQL для Java. Обеспечивается высокий уровень статической типизации, но не поддерживаются динамические или модульные запросы.

Safe/Native Queries (S/NQ) [17] и Linq [18] – это два новых проекта. Подобно JDO и Hibernate, Safe Queries строится поверх средства объектно-реляционного отображения, но в нем обеспечивается статическая типизация запросов, которые представляются как стандартные классы Java. Linq – это расширение Linq, позволяющее определять статически типизированные запросы над реляционными и другими источниками данных. В отличие от встраиваемого SQL в этих подходах поддерживаются динамические запросы. В Linq поддерживается разновидность многоуровневой итерации; поскольку для возврата всех данных в нем используется единственное соединение, значения из объемлющих итераций повторяются для каждого элемента, возвращаемого из вложенной итерации. В Linq также допускается некоторая разновидность упреждающего чтения, хотя возвращаемыми объектами являются записи, а не экземпляры отображаемых классов. Заметим, что наша оценка Linq носит предварительный характер.

10. Заключение

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

Литература

  1. Scott Ambler. Mapping objects to relational databases. 1998.
  2. Apple Computer Inc. AppleScript Language Guide. Addison-Wesley, 1993.
  3. M. P. Atkinson and R. Morrison. Orthogonally persistent object systems. VLDB Journal, 4(3):319{401, 1995.
  4. Malcolm Atkinson, David Dewitt, David Maier, Francois Bancilhon, Klaus Dittrich, and Stanley Zdonik. The object-oriented database system manifesto.
  5. Malcolm P. Atkinson. Persistence and java - a balancing act. In Proceedings of the International Symposium on Objects and Databases, pages 1-31, London, UK, 2001. Springer-Verlag.
  6. Malcolm P. Atkinson and O. Peter Buneman. Types and persistence in database programming languages. ACM Comput. Surv., 19(2):105-170, 1987.
  7. Malcolm P. Atkinson, Laurent Daynes, Mick J. Jordan, Tony Printezis, and Susan Spence. An orthogonally persistent Java. SIGMOD Record, 25(4):68-75, 1996.
  8. Julie Basu. An overview of SQLJ: Embedded SQL in Java. Oracle Open World, 1998.
  9. Philip A. Bernstein, Shankar Pal, and David Shutt. Context-based prefetch for implementing objects on relations. In The VLDB Journal, pages 327-338, 1999.
  10. Gavin Bierman, Erik Meijer, and Wolfram Schulte. The essence of data access in cw. In European Conference on Object-Oriented Programming, 2005.
  11. Stephen Blackburn and John N. Zigman. Concurrency – the fly in the ointment? In POS/PJW, pages 250-258, 1998.
  12. Toby Bloom and Stanley B. Zdonik. Issues in the design of object-oriented database programming languages. In Proc. of ACM Conf. on Object-Oriented Programming,

    Systems, Languages and Applications, pages 441-451. ACM Press, 1987.

  1. M. J. Carey, D. J. DeWitt, G. Graefe, D. M. Haight, J. E. Richardson, D. T. Schuh, E. J. Shekita, and S. Vandenberg. The EXODUS extensible DBMS project: An overview. In D. Maier and S. Zdonik, editor,Readings on Object-Oriented Database Sys. Morgan Kaufmann, San Mateo, CA, 1990.
  2. Michael J. Carey and David J. DeWitt. Of objects and databases: A decade of turmoil. In Proceedings of the 22th International Conference on Very Large Data Bases, pages 3-14. Morgan Kaufmann Publishers Inc., 1996.
  3. Michael J. Carey, David J. DeWitt, Chander Kant, and Jeffrey F. Naughton. A status report on the OO7 OODBMS benchmarking effort. In Proc. of ACM Conf. on Object-Oriented Programming, Systems, Languages and Applications, pages 414-426. ACM Press, 1994.
  4. R. G. G. Cattell, Douglas K. Barry, Mark Berler, Jeff Eastman, David Jordan, Craig Russell, Olaf Schadow, Torsten Stanienda, and Fernando Velez, editors. The Object Data Standard ODMG 3.0. Morgan Kaufmann, January 2000.
  5. William R. Cook and Siddhartha Rai. Safe query objects: statically typed objects as remotely executable queries. In ICSE '05: Proceedings of the 27th international conference on Software engineering, pages 97-106, New York, NY, USA, 2005. ACM Press.
  6. Microsoft Corporation. The LINQ project.
  7. Laurent Daynes. Extensible transaction management in PJava. In Proceedings of the First International Workshop on Persistence and Java (PJW2), 1996.
  8. Jacques-Antoine Dub, Rick Sapir, and Peter Purich. Oracle Application Server TopLink application developers guide, 10g (9.0.4). Oracle Corporation, 2003.
  9. Michael J. Franklin, Björn Thór Jónsson, and Donald Kossmann. Performance tradeoffs for client-server query processing. In Proceedings of the 1996 ACM SIGMOD International Conference on Management of Data, pages 149-160. ACM Press, 1996.
  10. A. Gawecki and F. Matthes. Integrating query and program optimization using persistent CPS representations.In Malcom P. Atkinson and Ray Welland, editors, Fully Integrated Data Environments, ESPRIT Basic Research Series, pages 496-501. Springer Verlag, 2000.
  11. C. Gould, Z. Su, and P. Devanbu. Static checking of dynamically generated queries in database applications. InProceedings, 26th International Conference on Sofware Engineering (ICSE). IEEE Press, 2004.
  12. Graham Hamilton and Rick Cattell. JDBCTM: A Java SQL API. Sun Microsystems, 1997.
  13. Wook-Shin Han, Yang-Sae Moon, and Kyu-Young Whang. PrefetchGuide: capturing navigational access patterns for prefetching in client/server object-oriented/object-relational dbmss. Information Sciences, 152(1):47-61, 2003.
  14. Hibernate reference documentation., May 2005.
  15. INCITS/ISO/IEC. Information technology - database languages - SQL – part 5: Host language bindings (SQL/Bindings). Technical Report 9075-5-1999, IN-CITS/ISO/IEC, 1999.
  16. ISO/IEC. Information technology - database languages - SQL - part 3: Call-level interface (SQL/CLI). Technical Report 9075-3:2003, ISO/IEC, 2003.
  17. Mick Jordan. Comparative study of persistence mechanisms for the java platform. Technical Report TR-2004-136, Sun Microsystems, September 2004.
  18. Mick Jordan and Malcolm P. Atkinson. Orthogonal persistence for the java platform - specifcation and rationale. Technical Report TR-2000-94, Sun Microsystems, September 2000.
  19. B. Liskov, A. Adya, M. Castro, S. Ghemawat, R. Gruber, U. Maheshwari, A. C. Myers, M. Day, and L. Shrira. Safe and efficient sharing of persistent objects in Thor. In Proceedings of the 1996 ACM SIGMOD international conference on Management of data, pages 318-329. ACM Press, 1996.
  20. David Maier. Representing database programs as objects. In Francois Bancilhon and Peter Buneman, editors,Advances in Database Programming Languages, Papers from DBPL-1, pages 377-386. ACM Press / Addison-Wesley, 1987.
  21. Alonso Marquez, Stephen Blackburn, Gavin Mercer, and John N. Zigman. Implementing orthogonally persistent Java. In Proceedings of the Workshop on Persistent Object Systems (POS), 2000.
  22. V. Matena and M. Hapner. Enterprise Java Beans Specification 1.0. Sun Microsystems, 1998.
  23. F. Matthes, G. Schroder, and J.W. Schmidt. Tycoon: A scalable and interoperable persistent system environment. In M.P. Atkinson, editor, Fully Integrated Data Environments. Springer-Verlag, 1995.
  24. Shariq Rizvi, Alberto Mendelzon, S. Sudarshan, and Prasan Roy. Extending query rewriting techniques for fine-grained access control. In SIGMOD '04: Proceedings of the 2004 ACM SIGMOD international conference on Management of data, pages 551-562. ACM Press, 2004.
  25. C. Russell. Java Data Objects (JDO) Specification JSR-12. Sun Microsystems, 2003.
  26. Joachim W. Schmidt and Florian Matthes. The DBPL project: advances in modular database programming.Inf. Syst., 19(2):121-140, 1994.
  27. J.W. Schmidt, F. Matthes, and P. Valduriez. Building persistent application systems in fully integrated data environments: Modularization, abstraction and interoperability. In Proceedings of Euro-Arch'93 Congress. Springer Verlag, October 1993.
  28. V. Soloviev. An overview of three commercial object-oriented database management systems: ONTOS, ObjectStore, and O2. SIGMOD Record (ACM Special Interest Group on Management of Data), 21(1):93-105, 1992.
  29. Je®rey D. Ullman, Hector Garcia-Molina, and Jennifer Widom. Database Systems: The Complete Book. Prentice Hall PTR, Upper Saddle River, NJ, USA, 2001.
  30. W.P. Zhang and Norbert Ritter. The real benefits of object-relational db-technology for object-oriented software development. In B. Read, editor, Proc. 18th British National Conference on Databases (BNCOD 2001), Advances in Databases, pages 89-104. Springer-Verlag, 7 2001.

Информация о работе Интеграция языков программирования с базами данных: в чем состоит проблема?