Web applications and data: achieving abstraction and scalability
https://doi.org/10.15514/ISPRAS-2012-23-10
Abstract
Nowadays it has become clear that no data store is all-purpose. SQL-based systems have been prevalent for several decades though this approach leads to serious issues in modern high scalability architectures. Thus, a number of different data stores have been designed to fulfill the needs of large-scale Web applications. Moreover, a single application often tends to use multiple data stores for different purposes and data. This paper covers common approaches to data persistence implementation and data store abstraction and also reveals basic considerations for design of a multi-store persistence layer for scalable Web applications. The paper consists of five sections. The first section (Introduction) discusses a problem of data management in the context of modern approaches to Web-applications design and development. The second section describes the most popular solutions of this problem based on traditional SQL-based DBMSs. Some limitations of these solutions are considered. The third section of the paper presents an overview of adventures and limitations of approached based on NoSQL DBMSs. A proposed novel approach of combine use SQL-based and NoSQL systems to develop and run Web-applications is a theme of the forth section. The final section concludes the paper.
References
1. M. Fowler, Patterns of Enterprise Application Architecture, Addison Wesley, 2002.
2. «Zend Framework», [В Интернете]. URL: http://framework.zend.com/.
3. «Hibernate - Relational Persistence for Java and .NET», http://hibernate.org/.
4. «Doctrine Project», http://www.doctrine-project.org/.
5. «The case against ORM Frameworks in High Scalability Architectures», 2008. http://highscalability.com/blog/2008/2/2/the-case-against-orm-frameworks-in-high-scalability-architec.html.
6. J. Miller, «Design Patterns for Data Persistence», 2009. http://msdn.microsoft.com/en-us/magazine/dd569757.aspx.
7. A. Wiggins, «SQL Databases Don't Scale», 2009. http://adam.heroku.com/past/2009/7/6/sql_databases_dont_scale/.
8. D. Obasanjo, «Building scalable databases: Denormalization, the NoSQL movement and Digg», 2009. http://www.25hoursaday.com/weblog/2009/09/10/BuildingScalableDatabasesDenormalizationTheNoSQLMovementAndDigg.aspx.
9. S. Francia, J. Hileman, «Augmenting RDBMS with MongoDB for eCommerce», 2011. http://www.nosqldatabases.com/main/2011/4/11/augmenting-rdbms-with-mongodb-for-ecommerce.html.
10. D. Florescu, D. Kossmann, «Rethinking Cost and Performance of Database Systems», ACM SIGMOD Record, т. 38, № 1, 2009.
11. E. Brewer, «Towards Robust Distributed Systems», в ACM Symposium on the Principles of Distributed Computing, Portland, Oregon, 2000.
12. S. Gilbert, N. Linch, «Brewer's Conjecture and the Feasibility of Consistent, Available, Partition-Tolerant Web Services», 2002.
13. D. Abadi, «Problems with CAP, and Yahoo’s little known NoSQL system», 2010. URL: http://dbmsmusings.blogspot.com/2010/04/problems-with-cap-and-yahoos-little.html.
14. W. Wogels, «Eventually Consistent,» ACM Queue, т. 6, № 6, 2008.
15. H. Wada, A. Fekete, L. Zhaoy, K. Lee, A. Liu, «Data Consistency Properties and the Tradeoffs in Commercial Cloud Storages: the Consumers’ Perspective» в Conference on Innovative Data Systems Research, 2011.
16. «MongoMapper», http://mongomapper.com/.
17. R. Cattell, «Scalable SQL and NoSQL Data Stores», 2011. http://www.cattell.net/datastores/Datastores.pdf.
18. A.V. Poskonin, «Novye napravlenija v razvitii SUBD: kompromiss kak osnova arhitektury» [New directions of DBMS technology evolution: a tradeoff as a basis of architecture] v Tezisy luchshih diplomnyh rabot fakul'teta VMK MGU 2011 goda, Moskva, 2011 (in Russian).
19. «MongoDB», http://www.mongodb.org/.
20. «Membase Server», http://www.couchbase.com/membase.
21. M. Stonebraker, U. Çetintemel, «“One Size Fits All”: An Idea Whose Time Has Come and Gone» в ICDE ’05: Proceedings of the 21st International Conference on Data Engineering, Washington, 2005.
22. M. Fowler, «Polyglot Persistence», 2011. http://martinfowler.com/bliki/PolyglotPersistence.html.
23. A. Snell-Pym, «One Database, Many Interfaces: A Look at SQL/NoSQL Integration Using GenieDB», Cloudbook Journal, т. 2, № 1, 2011.
24. «Tungsten Replicator», http://continuent.com/solutions/tungsten-replicator.
25. M. Fowler, «Command Query Responsibility Segregation», 2011. http://martinfowler.com/bliki/CQRS.html.
26. «NoRM - MongoDB Driver for .NET», https://github.com/atheken/NoRM.
27. «DataMapper - Ruby Object Relational Mapper», http://datamapper.org.
Review
For citations:
Poskonin A. Web applications and data: achieving abstraction and scalability. Proceedings of the Institute for System Programming of the RAS (Proceedings of ISP RAS). 2012;23. (In Russ.) https://doi.org/10.15514/ISPRAS-2012-23-10