| <!-- |
| Licensed to the Apache Software Foundation (ASF) under one or more |
| contributor license agreements. See the NOTICE file distributed with |
| this work for additional information regarding copyright ownership. |
| The ASF licenses this file to You under the Apache License, Version 2.0 |
| (the "License"); you may not use this file except in compliance with |
| the License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| --> |
| <html> |
| <head> |
| <title>Accumulo Isolation</title> |
| <link rel='stylesheet' type='text/css' href='documentation.css' media='screen'/> |
| </head> |
| <body> |
| |
| <h1>Apache Accumulo Documentation : Isolation</h1> |
| |
| <h3>Scanning</h3> |
| |
| <p>Accumulo supports the ability to present an isolated view of rows when scanning. There are three possible ways that a row could change in accumulo : |
| <ul> |
| <li>a mutation applied to a table |
| <li>iterators executed as part of a minor or major compaction |
| <li>bulk import of new files |
| </ul> |
| Isolation guarantees that either all or none of the changes made by these |
| operations on a row are seen. Use the <code>IsolatedScanner</code> to obtain an |
| isolated view of an accumulo table. When using the regular scanner it is |
| possible to see a non isolated view of a row. For example if a mutation |
| modifies three columns, it is possible that you will only see two of those |
| modifications. With the isolated scanner either all three of the changes are |
| seen or none. For an example of this try running the |
| <code>InterferenceTest</code> example. |
| |
| <p>At this time there is no client side isolation support for the |
| <code>BatchScanner</code>. You may consider using the |
| <code>WholeRowIterator</code> with the <code>BatchScanner</code> to achieve |
| isolation though. This drawback of doing this is that entire rows are read into |
| memory on the server side. If a row is too big, it may crash a tablet server. |
| The <code>IsolatedScanner</code> buffers rows on the client side so a large row will not crash a tablet server. |
| |
| <h3>Iterators</h3> |
| <p>See the user manual's chapter on iterator design for more information on considerations when Isolation is enabled. |