We consider the problem of maintaining a large matching and a small vertex cover in a dynamically changing graph. Each update to the graph is either an edge deletion or an edge insertion. We give the first randomized data structure that simultaneously achieves a constant approximation factor and handles a sequence of K updates in K · polylog(n) time, where n is the number of vertices in the graph. Previous data structures require a polynomial amount of computation per update. Categories and Subject Descriptors E.1 [Data Structures]: Graphs and Networks; F.2.2 [Analysis of Algorithms and Problem Complexity]: Nonnumerical Algorithms and Problems; G.2.2 [Graph Theory]: Graph Algorithms General Terms Algorithms Keywords dynamic algorithms, data structures, maximum matching, vertex cover