User:Hamom1968/AirConcurrentMap

From Wikipedia, the free encyclopedia

AirConcurrentMap

In Computer Programming, a language facility called a Collection or Container is a way to group Objects for various purposes. A Concurrent Collection allows multiple threads of execution to access and modify the set of contained objects at the same time. The Java collections framework is an example, and it provides a wide array of collection implementations and standards for the implementation of further collections. The framework provides convenient Maps and Sets and other structures for every Java program to use.

An extended Java_(programming_language) java.util.concurrent.ConcurrentNavigableMap implementation with high memory efficiency and performance, [[1]]AirConcurrentMap provides the standard Java ordered key/value access and Iterators, but also a new 'Visitor' interface for faster sequential access. AirConcurrentMap is designed for the 'Big-Data' 'in-memory' use case, and is most effective above about 1K Entries, but still has good scanning capabilities at all sizes.

  • Memory efficiency:

Memory efficiency becomes greater than the standard Java library concurrent maps [[2]] java.util.concurrent.ConcurrentSkipListMap, and [[3]] java.util.concurrent.ConcurrentHashMap, as well as the non-concurrent [[4]]java.util.TreeMap and [[5]]java.util.HashMap above 1K Entries.

  • Key/Value Access:

Above the approximate 1K Entry size, and especially as memory nears full, the performance of the key-based operations exceed the two standard java ordered NavigableMaps which are java.util.TreeMap and java.util.concurrent.ConcurrentSkipListMap, which are the Maps capable of ordered access.

All Java ordered Maps which implement [[6]]java.util.NavigableMap provide the standard Map interface methods for direct key/value access like put()/get()/ and remove(), but also other ordering-specific methods like higherKey()/lowerKey(), and floorKey()/ceilingKey() and more. Iterators scan in increasing or decreasing key order, where the key ordering is defined by the standard java.lang.Comparable.compareTo(Object) method provided by the key class. The Java 1.2 interface java.util.SortedMap has been extended by the java.util.NavigableMap interface in Java 1.6, and generally newer Maps implement the latter.

  • Scanning Performance:

Scanning is designed to be best at all but the smallest Entry size, where it exceeds that of all standard library Maps. There are the standard Iterators and a custom Visitor interface. The Visitor interface uses a different, simpler model than the Java 1.8 Streams model. For example: Lambda expressions are not used, and Stream filters, collections, maps, and reduce, are avoided, so the model is compatible with Java 1.6 or later. The Visitor interface uses a single callback that provides both key and value.

  • Status

The Visitor interface is in the commercial offering, and a ThreadedVisitor interface is in development, pre-beta.

  • Author

Roger L. Deran implemented AirConcurrentMap in 2015. Roger has been working in the software concurrency domain for several decades, especially concurrent key/value stores like the extended persistent key/value store InfinityDB, which shares the patent algorithm. Also, he works on concurrent Storage algorithms for large disk arrays.

  • Licensing

The algorithm is currently closed-source and proprietary, and is patent-pending. Licenses are custom.

References[edit]

[1]The Boiler Bay site, provides AirConcurrentMap and InfinityDB. [2]The official ORACLE version Java 6 Map documentation. [3]The official ORACLE version Java 7 Map documentation. [4]The official ORACLE version Java 8 Map documentation. [5]The Java 6 HashMap javadoc. [6]The Java 6 TreeMap javadoc. [7]The Java 6 ConcurrentHashMap javadoc. [8]The Java 6 ConcurrentSkipListMap javadoc. [9]The Java 6 ConcurrentMap javadoc. [10]The Java 6 NavigableMap javadoc. [11]The Java 6 ConcurrentNavigableMap javadoc. This interface combines ConcurrentMap and NavigableMap.