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.
Заключение
В полном решении
проблемы потери соответствия должны
обеспечиваться как понятная модель
программирования, так и высокая
производительность. Хотя проблемы отображения
данных между базами данных и языками
программирования в значительной степени
решены, имеются и нерешенные проблемы.
Интерфейс должен обеспечивать наилучшие
возможности и для баз данных, и для языков
программирования для оптимизации, статической
типизации и модульной разработки. Для
каждого из этих аспектов по отдельности
имеются решения. Но в решении проблемы
потери соответствия все эти цели должны
достигаться одновременно. В этой статье
предложены качественные критерии оценки
имеющихся решений и в соответствии с
этими критериями произведена оценка
ряда имеющихся решений.
Литература
- Scott
Ambler. Mapping
objects to relational databases.
1998.
- Apple
Computer Inc. AppleScript
Language Guide.
Addison-Wesley, 1993.
- M.
P. Atkinson and R. Morrison. Orthogonally
persistent object systems. VLDB
Journal, 4(3):319{401, 1995.
- Malcolm
Atkinson, David Dewitt, David Maier, Francois Bancilhon, Klaus Dittrich,
and Stanley Zdonik. The
object-oriented database system manifesto.
- 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.
- Malcolm
P. Atkinson and O. Peter Buneman. Types and persistence in database
programming languages. ACM Comput. Surv., 19(2):105-170, 1987.
- Malcolm
P. Atkinson, Laurent Daynes, Mick J. Jordan, Tony Printezis, and Susan
Spence. An
orthogonally persistent Java. SIGMOD
Record, 25(4):68-75, 1996.
- Julie
Basu. An
overview of SQLJ: Embedded SQL in Java. Oracle
Open World, 1998.
- Philip
A. Bernstein, Shankar Pal, and David Shutt. Context-based
prefetch for implementing objects on relations. In The
VLDB Journal, pages 327-338, 1999.
- Gavin
Bierman, Erik Meijer, and Wolfram Schulte. The
essence of data access in cw. In European Conference on Object-Oriented
Programming, 2005.
- Stephen
Blackburn and John N. Zigman. Concurrency
– the fly in the ointment? In POS/PJW,
pages 250-258, 1998.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- Microsoft
Corporation. The
LINQ project.
- Laurent
Daynes. Extensible
transaction management in PJava. In Proceedings
of the First International Workshop on Persistence and Java (PJW2),
1996.
- Jacques-Antoine
Dub, Rick Sapir, and Peter Purich. Oracle Application Server TopLink
application developers guide, 10g (9.0.4). Oracle Corporation, 2003.
- 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.
- 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.
- 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.
- Graham
Hamilton and Rick Cattell. JDBCTM: A Java SQL API. Sun Microsystems,
1997.
- 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.
- Hibernate
reference documentation.,
May 2005.
- 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.
- ISO/IEC.
Information technology - database languages - SQL - part 3: Call-level
interface (SQL/CLI). Technical Report 9075-3:2003, ISO/IEC, 2003.
- Mick
Jordan. Comparative
study of persistence mechanisms for the java platform. Technical Report TR-2004-136, Sun Microsystems,
September 2004.
- Mick
Jordan and Malcolm P. Atkinson. Orthogonal
persistence for the java platform - specifcation and rationale. Technical Report TR-2000-94, Sun Microsystems,
September 2000.
- 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.
- 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.
- 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.
- V.
Matena and M. Hapner. Enterprise Java Beans Specification 1.0. Sun Microsystems,
1998.
- 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.
- 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.
- C.
Russell. Java Data Objects (JDO) Specification JSR-12. Sun Microsystems,
2003.
- Joachim
W. Schmidt and Florian Matthes. The
DBPL project: advances in modular database programming.Inf. Syst., 19(2):121-140, 1994.
- 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.
- 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.
- Je®rey
D. Ullman, Hector Garcia-Molina, and Jennifer Widom. Database Systems:
The Complete Book. Prentice Hall PTR, Upper Saddle River, NJ, USA,
2001.
- 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.