Application-Level Caching with Transactional Consistency by Dan R

Total Page:16

File Type:pdf, Size:1020Kb

Application-Level Caching with Transactional Consistency by Dan R Application-Level Caching with Transactional Consistency by Dan R. K. Ports M.Eng., Massachusetts Institute of Technology (2007) S.B., S.B., Massachusetts Institute of Technology (2005) Submitted to the Department of Electrical Engineering and Computer Science in partial fulllment of the requirements for the degree of Doctor of Philosophy in Computer Science at the MASSACHUSETTSINSTITUTEOFTECHNOLOGY June 2012 © Massachusetts Institute of Technology 2012. All rights reserved. Author...................................................... Department of Electrical Engineering and Computer Science May 23, 2012 Certied by . Barbara H. Liskov Institute Professor esis Supervisor Accepted by . Leslie A. Kolodziejski Chair, Department Committee on Graduate eses 2 Application-Level Caching with Transactional Consistency by Dan R. K. Ports Submitted to the Department of Electrical Engineering and Computer Science on May 23, 2012, in partial fulllment of the requirements for the degree of Doctor of Philosophy in Computer Science abstract Distributed in-memory application data caches like memcached are a popular solution for scaling database-driven web sites. ese systems increase performance signicantly by reducing load on both the database and application servers. Unfortunately, such caches present two challenges for application developers. First, they cannot ensure that the application sees a consistent view of the data within a transaction, violating the isolation properties of the underlying database. Second, they leave the application responsible for locating data in the cache and keeping it up to date, a frequent source of application complexity and programming errors. is thesis addresses both of these problems in a new cache called TxCache. TxCache is a transactional cache: it ensures that any data seen within a transaction, whether from the cache or the database, reects a slightly stale but consistent snap- shot of the database. TxCache also o ers a simple programming model. Application developers simply designate certain functions as cacheable, and the system automati- cally caches their results and invalidates the cached data as the underlying database changes. Our experiments found that TxCache can substantially increase the performance of a web application: on the RUBiS benchmark, it increases throughput by up to 5.2 relative to a system without caching. More importantly, on this application, TxCache× achieves performance comparable (within 5%) to that of a non-transactional cache, showing that consistency does not have to come at the price of performance. esis Supervisor: Barbara H. Liskov Title: Institute Professor 3 4 acknowledgments is thesis, like the OSDI paper on which it is based, is the result of a collaboration with Austin Clements, Irene Zhang, Sam Madden, and Barbara Liskov. e work described here would not have been possible without their contributions. Austin and Irene implemented major parts of TxCache; I remain amazed by the speed with which they translated my random ideas into a functional system. More than once, Sam’s keen acumen for databases provided the solution to a problem that appeared intractable. My work – and especially this thesis – was substantially improved by working with my advisor, Barbara Liskov. Barbara’s principled approach to research and emphasis on the value of providing the right abstractions were a strong inuence on my research; I hope that inuence shows clearly in this thesis. Barbara’s suggestions also improved the clarity of this work. I also thank the other members of my thesis committee, Sam Madden and Frans Kaashoek for their helpful feedback (especially at short notice!). It has been a pleasure to work with the other members of the Programming Methodology Group: Winnie Cheng, James Cowling, Dorothy Curtis, Evan Jones, Daniel Myers, David Schultz, Liuba Shrira, and Ben Vandiver. In particular, James Cowling and David Schultz provided essential support during the writing of this thesis – both through their positive feedback and encouragement, and by being willing to discuss even the most esoteric details of transaction processing and database implementation. Before I joined PMG, I nished a master’s thesis working with David Karger on peer-to-peer systems. His enthusiasm and insight encouraged me to continue in systems research. As part of that project, I worked closely with Frans Kaashoek, Robert Morris, and various members of the PDOS group. Frans and Robert taught me many valuable lessons about how to do research and how to write a paper. I spent a few summers as an intern at VMware, where I beneted greatly from working with Carl Waldspurger, Mike Chen, Tal Garnkel, E. Lewis, Pratap Subrah- manyam, and others. I also beneted from recent work with Kevin Grittner on the implementation of 5 Serializable Snapshot Isolation in PostgreSQL. at work inuenced the invalidation mechanism in Chapter 7 and the discussion in Appendix B, but more importantly, Kevin provided valuable insight into the real-world benets of serializable isolation. I thank my family for their support. My parents, omas Ports and Catherine Covey, were a constant source of encouragement. Most of all, I thank my wife, Irene Zhang. It isn’t an exaggeration to say that this work wouldn’t have been possible without her. She has supported me in many ways: from having helpful discussions about this work, to reviewing drafts of my writing, to providing encouragement when I needed it most. 6 previously published material is thesis signicantly extends and revises work previously published in the following paper: Dan R. K. Ports, Austin T. Clements, Irene Zhang, Samuel Madden, and Barbara Liskov. Transactional Consistency and Automatic Manage- ment in an Application Data Cache. In Proceedings of the 9th USENIX Symposium on Operating Systems Design and Implementation (OSDI ’10), Vancouver, BC, Canada, October 2010. Parts of Appendix B are adapted from the following forthcoming publication: Dan R. K. Ports and Kevin Grittner. Serializable Snapshot Isolation in PostgreSQL. In Proceedings of the 38th International Conference on Very Large Data Bases (VLDB ’12), Istanbul, Turkey, August 2012. To appear. funding is research was supported by the National Science Foundation under ITR grants CNS-0428107 and CNS-0834239, and by a National Defense Science and Engi- neering Graduate (NDSEG) Fellowship sponsored by the Oce of Naval Research. 7 8 CONTENTS 1 Introduction 17 1.1 e Case for Application-Level Caching................. 18 1.2 Existing Caches Are Dicult to Use................... 19 1.3 Contributions................................. 23 1.4 Outline..................................... 24 2 Architecture and Model 27 2.1 System Architecture.............................. 27 2.2 Assumptions.................................. 30 3 Cacheable Functions: A Simple Programming Model 31 3.1 e Cacheable Function Model...................... 32 3.1.1 Restrictions on Cacheable Functions.............. 32 3.1.2 Making Functions Cacheable................... 33 3.1.3 Automatic Cache Management................. 34 3.2 Discussion................................... 35 3.2.1 Naming................................ 36 3.2.2 Invalidations............................. 37 3.2.3 Limitations.............................. 38 3.3 Implementing the Programming Model................. 39 3.3.1 Cache Servers............................ 39 3.3.2 TxCache Library.......................... 41 9 4 Consistency Model 45 4.1 Transactional Consistency.......................... 46 4.2 Relaxing Freshness.............................. 47 4.2.1 Dealing with Staleness: Avoiding Anomalies......... 48 4.3 Read/Write Transactions........................... 50 4.4 Transactional Cache API........................... 51 5 Consistency Protocol 53 5.1 Validity Intervals................................ 53 5.1.1 Properties............................... 55 5.2 A Versioned Cache.............................. 56 5.3 Storage Requirements............................ 58 5.3.1 Pinned Snapshots.......................... 60 5.4 Maintaining Consistency with Validity Intervals............ 61 5.4.1 Basic Operation........................... 61 5.4.2 Lazy Timestamp Selection.................... 62 5.4.3 Handling Nested Calls....................... 67 6 Storage Layer Support 69 6.1 A Transactional Block Store......................... 70 6.1.1 Implementation........................... 71 6.2 Supporting Relational Databases...................... 75 6.2.1 Exposing Multiversion Concurrency.............. 76 6.2.2 Tracking Query Validity...................... 79 6.2.3 Managing Pinned Snapshots................... 85 7 Automatic Invalidations 89 7.1 Unbounded Intervals and Invalidation Streams............. 90 7.1.1 Invalidation Streams........................ 91 7.1.2 Discussion: Explicit Invalidations................ 93 7.2 Invalidation Tags............................... 94 7.2.1 Tag Hierarchy............................ 95 7.3 Invalidation Locks............................... 97 10 7.3.1 Storing Invalidation Locks.................... 100 8 Evaluation 103 8.1 Implementation Notes............................ 103 8.2 Porting the RUBiS Benchmark....................... 106 8.3 Experimental Setup.............................. 108 8.4 Cache Sizes and Performance........................ 109 8.4.1 Cache Contents and Hit Rate.................. 111 8.5 e Benet of Staleness........................... 113 8.6 e Cost of Consistency........................... 115 8.6.1 Cache Miss Analysis........................ 116 8.6.2
Recommended publications
  • A Program Optimization for Automatic Database Result Caching
    rtifact A Program Optimization for Comp le * A t * te n * te A is W s E * e n l l C o L D C o P * * c u e m s Automatic Database Result Caching O E u e e P n R t v e o d t * y * s E a a l d u e a t Ziv Scully Adam Chlipala Carnegie Mellon University, Pittsburgh, PA, USA Massachusetts Institute of Technology CSAIL, [email protected] Cambridge, MA, USA [email protected] Abstract formance bottleneck, even with the maturity of today’s database Most popular Web applications rely on persistent databases based systems. Several pathologies are common. Database queries may on languages like SQL for declarative specification of data mod- incur significant latency by themselves, on top of the cost of interpro- els and the operations that read and modify them. As applications cess communication and network round trips, exacerbated by high scale up in user base, they often face challenges responding quickly load. Applications may also perform complicated postprocessing of enough to the high volume of requests. A common aid is caching of query results. database results in the application’s memory space, taking advantage One principled mitigation is caching of query results. Today’s of program-specific knowledge of which caching schemes are sound most-used Web applications often include handwritten code to main- and useful, embodied in handwritten modifications that make the tain data structures that cache computations on query results, keyed off of the inputs to those queries. Many frameworks are used widely program less maintainable.
    [Show full text]
  • An Efficient Concurrency Control Technique for Mobile Database Environment by Md
    View metadata, citation and similar papers at core.ac.uk brought to you by CORE provided by Global Journal of Computer Science and Technology (GJCST) Global Journal of Computer Science and Technology Software & Data Engineering Volume 13 Issue 2 Version 1.0 Year 2013 Type: Double Blind Peer Reviewed International Research Journal Publisher: Global Journals Inc. (USA) Online ISSN: 0975-4172 & Print ISSN: 0975-4350 An Efficient Concurrency Control Technique for Mobile Database Environment By Md. Anisur Rahman Dhaka University of Engineering & Technology Gazipur, Bangladesh Abstract - Day by day, wireless networking technology and mobile computing devices are becoming more popular for their mobility as well as great functionality. Now it is an extremely growing demand to process mobile transactions in mobile databases that allow mobile users to access and operate data anytime and anywhere, irrespective of their physical positions. Information is shared among multiple clients and can be modified by each client independently. However, for the assurance of timely access and correct results in concurrent mobile transactions, concurrency control techniques (CCT) happen to be very difficult. Due to the properties of Mobile databases e.g. inadequate bandwidth, small processing capability, unreliable communication, mobility etc. existing mobile database CCTs cannot employ effectively. With the client-server model, applying common classic pessimistic techniques of concurrency control (like 2PL) in mobile database leads to long duration Blocking and increasing waiting time of transactions. Because of high rate of aborting transactions, optimistic techniques aren`t appropriate in mobile database as well. This paper discusses the issues that need to be addressed when designing a CCT technique for Mobile databases, analyses the existing scheme of CCT and justify their performance limitations.
    [Show full text]
  • Managing Cache Consistency to Scale Dynamic Web Systems
    Managing Cache Consistency to Scale Dynamic Web Systems by Chris Wasik A thesis presented to the University of Waterloo in fulfilment of the thesis requirement for the degree of Master of Applied Science in Electrical and Computer Engineering Waterloo, Ontario, Canada, 2007 c Chris Wasik 2007 AUTHORS DECLARATION FOR ELECTRONIC SUBMISSION OF A THESIS I hereby declare that I am the sole author of this thesis. This is a true copy of the thesis, including any required final revisions, as accepted by my examiners. I understand that my thesis may be made electronically available to the public. ii Abstract Data caching is a technique that can be used by web servers to speed up the response time of client requests. Dynamic websites are becoming more popular, but they pose a problem - it is difficult to cache dynamic content, as each user may receive a different version of a webpage. Caching fragments of content in a distributed way solves this problem, but poses a maintainability challenge: cached fragments may depend on other cached fragments, or on underlying information in a database. When the underlying information is updated, care must be taken to ensure cached information is also invalidated. If new code is added that updates the database, the cache can very easily become inconsistent with the underlying data. The deploy-time dependency analysis method solves this maintainability problem by analyzing web application source code at deploy-time, and statically writing cache dependency information into the deployed application. This allows for the significant performance gains distributed object caching can allow, without any of the maintainability problems that such caching creates.
    [Show full text]
  • Effective Technique for Optimizing Timestamp Ordering in Read- Write/Write-Write Operations
    International Research Journal of Engineering and Technology (IRJET) e-ISSN: 2395-0056 Volume: 06 Issue: 09 | Sep 2019 www.irjet.net p-ISSN: 2395-0072 Effective Technique for Optimizing Timestamp Ordering in Read- Write/Write-Write Operations Obi, Uchenna M1, Nwokorie, Euphemia C2, Enwerem, Udochukwu C3, Iwuchukwu, Vitalis C4 1Lecturer, Department of Computer Science, Federal University of Technology, Owerri, Nigeria 2Senior Lecturer, Department of Computer Science, Federal University of Technology, Owerri, Nigeria 3Lecturer, Department of Computer Science, Federal University of Technology, Owerri, Nigeria 4Lecturer, Department of Computer Science, Federal University of Technology, Owerri, Nigeria ---------------------------------------------------------------------***---------------------------------------------------------------------- Abstract - In recent times, the use of big data has been the measures, these are: read-write (RW) synchronization and trending technology, most enterprises tend to adopt large write-write (WW) synchronization. databases, but the inherent problem is how to ensure serializability in concurrent transactions that may want to Concurrency control techniques are employed for managing access the data in the database so as to maintain its data concurrent access of transactions on a particular data item integrity and not to compromise it. The aim of this research is by ensuring serializable executions or to avoid interference to develop an efficient Timestamp Ordering algorithm and among transactions and thereby helps in avoiding errors and model in conflicting operations in read-write/write-write data maintain consistency of the database. Various concurrency synchronization. In read-write synchronization, one of the control techniques have been developed by different operations to perform is read while the other is write researchers and these techniques are distinct and unique in operation.
    [Show full text]
  • On Ordering Transaction Commit
    On Ordering Transaction Commit Mohamed M. Saad Roberto Palmieri Binoy Ravindran Virginia Tech msaad, robertop, binoy @vt.edu { } Complete Commit Execute Abstract Ordering In this poster paper, we briefly introduce an effective solution to Time address the problem of committing transactions enforcing a pre- α defined order. To do that, we overview the design of two algorithms γ that deploy a cooperative transaction execution that circumvents the δ transaction isolation constraint in favor of propagating written val- β ues among conflicting transactions. A preliminary implementation shows that even in the presence of data conflicts, the proposed al- gorithms outperform other competitors, significantly. Categories and Subject Descriptors D.1.3 [Software]: Concur- rent Programming; H.2.4 [Systems]: Transaction processing (a) BS 4 Thr. (b) BS 8 Thr. (c) FH Commit (d) FH Complete Keywords Transactional Memory, Commitment Ordering Figure 1: ACO using Blocking/Stall (BS) and Freeze/Hold (FH) 1. Introduction semantics (of the parallel code) that is equivalent to the original Transactional Memory (TM) [5] is an easy abstraction to program (sequential) code. Regarding the latter, SMR-based transactional concurrent applications. Its integration into main-stream compilers systems order transactions (totally or partially) before their execu- and programming languages such as GCC and C++ gives TM, tion to guarantee that a state always evolves on several computing respectively, accessibility and concreteness. nodes, consistently. To do that, usually a consensus protocol is em- In this poster paper we provide the design of two TM implemen- ployed (e.g., Paxos [6]), which establishes a common order among tations that commit transactions enforcing an order defined prior to transactions.
    [Show full text]
  • A Concurrency Control Method Based on Commitment Ordering in Mobile Databases
    International Journal of Database Management Systems ( IJDMS ) Vol.3, No.4, November 2011 A CONCURRENCY CONTROL METHOD BASED ON COMMITMENT ORDERING IN MOBILE DATABASES 1 2 Ali Karami and Ahmad Baraani-Dastjerdi 1Department of Computer Engineering, University of Isfahan, Isfahan, Iran [email protected] 2 Department of Computer Engineering, University of Isfahan, Isfahan, Iran [email protected] ABSTRACT Disconnection of mobile clients from server, in an unclear time and for an unknown duration, due to mobility of mobile clients, is the most important challenges for concurrency control in mobile database with client-server model. Applying pessimistic common classic methods of concurrency control (like 2pl) in mobile database leads to long duration blocking and increasing waiting time of transactions. Because of high rate of aborting transactions, optimistic methods aren`t appropriate in mobile database. In this article, OPCOT concurrency control algorithm is introduced based on optimistic concurrency control method. Reducing communications between mobile client and server, decreasing blocking rate and deadlock of transactions, and increasing concurrency degree are the most important motivation of using optimistic method as the basis method of OPCOT algorithm. To reduce abortion rate of transactions, in execution time of transactions` operators a timestamp is assigned to them. In other to checking commitment ordering property of scheduler, the assigned timestamp is used in server on time of commitment. In this article, serializability of OPCOT algorithm scheduler has been proved by using serializability graph. Results of evaluating simulation show that OPCOT algorithm decreases abortion rate and waiting time of transactions in compare to 2pl and optimistic algorithms.
    [Show full text]
  • A Trigger-Based Middleware Cache for Orms
    A Trigger-Based Middleware Cache for ORMs Priya Guptay, Nickolai Zeldovich, and Samuel Madden MIT CSAIL, yGoogle Abstract. Caching is an important technique in scaling storage for high-traffic web applications. Usually, building caching mechanisms involves significant effort from the application developer to maintain and invalidate data in the cache. In this work we present CacheGenie, a caching middleware which makes it easy for web application developers to use caching mechanisms in their applications. CacheGenie provides high-level caching abstractions for common query patterns in web applications based on Object-Relational Mapping (ORM) frameworks. Using these abstractions, the developer does not have to worry about managing the cache (e.g., insertion and deletion) or maintaining consistency (e.g., invalidation or updates) when writing application code. We design and implement CacheGenie in the popular Django web application framework, with PostgreSQL as the database backend and memcached as the caching layer. To automatically invalidate or update cached data, we use trig- gers inside the database. CacheGenie requires no modifications to PostgreSQL or memcached. To evaluate our prototype, we port several Pinax web applications to use our caching abstractions. Our results show that it takes little effort for applica- tion developers to use CacheGenie, and that CacheGenie improves throughput by 2–2.5× for read-mostly workloads in Pinax. 1 Introduction Developers of popular web applications often struggle with scaling their application to handle many users, even if the application has access to many server machines. For stateless servers (such as HTTP front-ends or application servers), it is easy to spread the overall load across many machines.
    [Show full text]
  • Inferring a Serialization Order for Distributed Transactions∗
    Inferring a Serialization Order for Distributed Transactions∗ Khuzaima Daudjee and Kenneth Salem School of Computer Science University of Waterloo Waterloo, Canada fkdaudjee, [email protected] Abstract Consider a distributed database system in which each site’s local concurrency control is rigorous and transactions Data partitioning is often used to scale-up a database are synchronized using a two-phase (2PC) commit proto- system. In a centralized database system, the serialization col. Our choice of 2PC stems from it being the most widely order of commited update transactions can be inferred from used protocol for coordinating transactions in distributed the database log. To achieve this in a shared-nothing dis- database systems [1]. Although serializability is guaranteed tributed database, the serialization order of update trans- at the cluster by the sites’ local concurrency controls and actions must be inferred from multiple database logs. We the 2PC protocol, the issue is how to determine the re- describe a technique to generate a single stream of updates sulting serialization order. The contribution of this paper from logs of multiple database systems. This single stream is a technique that determines a serialization order for dis- represents a valid serialization order of update transactions tributed update transactions that have executed in a parti- at the sites over which the database is partitioned. tioned database over multiple sites. Our technique merges log entries of each site into a single stream that represents a valid serialization order for update transactions. 1. Introduction 1.1. System Model In a centralized database system that guarantees com- 1 mitment ordering , the serialization order of transactions The database is partitioned over one or more sites.
    [Show full text]
  • Transaction Properties(ACID Properties)
    UNIT-5 Transaction properties(ACID properties) In computer science, ACID (Atomicity, Consistency, Isolation, Durability) is a set of properties that guarantee that database transactions are processed reliably. In the context ofdatabases, a single logical operation on the data is called a transaction. For example, a transfer of funds from one bank account to another, even involving multiple changes such as debiting one account and crediting another, is a single transaction. Jim Gray defined these properties of a reliable transaction system in the late 1970s and developed technologies to achieve them automatically. In 1983, Andreas Reuter and Theo Härder coined the acronym ACID to describe them. The characteristics of these four properties as defined by Reuter and Härder: Atomicity Atomicity requires that each transaction be "all or nothing": if one part of the transaction fails, the entire transaction fails, and the database state is left unchanged. An atomic system must guarantee atomicity in each and every situation, including power failures, errors, and crashes. To the outside world, a committed transaction appears (by its effects on the database) to be indivisible ("atomic"), and an aborted transaction does not happen. Consistency The consistency property ensures that any transaction will bring the database from one valid state to another. Any data written to the database must be valid according to all defined rules, including constraints, cascades, triggers, and any combination thereof. This does not guarantee correctness of the transaction in all ways the application programmer might have wanted (that is the responsibility of application-level code) but merely that any programming errors cannot result in the violation of any defined rules.
    [Show full text]
  • Distributed Computing Problems from Wikipedia, the Free Encyclopedia Contents
    Distributed computing problems From Wikipedia, the free encyclopedia Contents 1 Atomic broadcast 1 1.1 References .............................................. 1 2 Atomic commit 2 2.1 Usage ................................................. 2 2.2 Database systems ........................................... 2 2.3 Revision control ............................................ 3 2.4 Atomic commit convention ...................................... 3 2.5 See also ................................................ 4 2.6 References ............................................... 4 3 Automatic vectorization 5 3.1 Background .............................................. 5 3.2 Guarantees ............................................... 6 3.2.1 Data dependencies ...................................... 6 3.2.2 Data precision ......................................... 6 3.3 Theory ................................................. 6 3.3.1 Building the dependency graph ................................ 6 3.3.2 Clustering ........................................... 6 3.3.3 Detecting idioms ....................................... 7 3.4 General framework .......................................... 7 3.5 Run-time vs. compile-time ...................................... 7 3.6 Techniques .............................................. 8 3.6.1 Loop-level automatic vectorization .............................. 8 3.6.2 Basic block level automatic vectorization ........................... 8 3.6.3 In the presence of control flow ................................ 9 3.6.4 Reducing
    [Show full text]
  • Tuning Websphere Application Server Cluster with Caching Ii Tuning Websphere Application Server Cluster with Caching Contents
    Tuning WebSphere Application Server Cluster with Caching ii Tuning WebSphere Application Server Cluster with Caching Contents Tuning WebSphere Application Server Data replication service .........20 Cluster with Caching .........1 Setting up and configuring caching in the test Introduction to tuning the WebSphere Application environment ..............22 Server cluster with caching .........1 Caching proxy server setup ........23 Summary for the WebSphere Application Server Dynamic caching with Trade and WebSphere . 23 cluster with caching tests ..........1 Enabling WebSphere Application Server Benefits of using z/VM..........2 DynaCache .............25 Hardware equipment and software environment . 3 CPU utilization charts explained ......26 Host hardware.............3 Test case scenarios and results ........27 Network setup.............4 Test case scenarios ...........27 Storage server setup ...........4 Baseline definition parameters and results . 29 Client hardware ............4 Vary caching mode ...........31 Software (host and client) .........4 Vary garbage collection policy .......36 Overview of the Caching Proxy Component ....5 Vary caching policy...........37 WebSphere Edge Components Caching Proxy . 5 Vary proxy system in the DMZ .......42 WebSphere Proxy Server .........6 Scaling the size of the DynaCache ......45 Configuration and test environment ......6 Scaling the update part of the Trade workload. 47 z/VM guest configuration .........6 Enabling DynaCache disk offload ......50 Test environment ............7 Comparison between
    [Show full text]
  • Database Management Systems Ebooks for All Edition (
    Database Management Systems eBooks For All Edition (www.ebooks-for-all.com) PDF generated using the open source mwlib toolkit. See http://code.pediapress.com/ for more information. PDF generated at: Sun, 20 Oct 2013 01:48:50 UTC Contents Articles Database 1 Database model 16 Database normalization 23 Database storage structures 31 Distributed database 33 Federated database system 36 Referential integrity 40 Relational algebra 41 Relational calculus 53 Relational database 53 Relational database management system 57 Relational model 59 Object-relational database 69 Transaction processing 72 Concepts 76 ACID 76 Create, read, update and delete 79 Null (SQL) 80 Candidate key 96 Foreign key 98 Unique key 102 Superkey 105 Surrogate key 107 Armstrong's axioms 111 Objects 113 Relation (database) 113 Table (database) 115 Column (database) 116 Row (database) 117 View (SQL) 118 Database transaction 120 Transaction log 123 Database trigger 124 Database index 130 Stored procedure 135 Cursor (databases) 138 Partition (database) 143 Components 145 Concurrency control 145 Data dictionary 152 Java Database Connectivity 154 XQuery API for Java 157 ODBC 163 Query language 169 Query optimization 170 Query plan 173 Functions 175 Database administration and automation 175 Replication (computing) 177 Database Products 183 Comparison of object database management systems 183 Comparison of object-relational database management systems 185 List of relational database management systems 187 Comparison of relational database management systems 190 Document-oriented database 213 Graph database 217 NoSQL 226 NewSQL 232 References Article Sources and Contributors 234 Image Sources, Licenses and Contributors 240 Article Licenses License 241 Database 1 Database A database is an organized collection of data.
    [Show full text]