Documentation ¶
Overview ¶
Package palm implements parallel architecture-friendly latch-free modifications (PALM). Details can be found here:
http://cs.unc.edu/~sewall/palm.pdf
The primary purpose of the tree is to efficiently batch operations in such a way that locks are not required. This is most beneficial for in-memory indices. Otherwise, the operations have typical B-tree time complexities.
You primarily see the benefits of multithreading in availability and bulk operations.
Benchmarks:
BenchmarkReadAndWrites-8 3000 483140 ns/op BenchmarkSimultaneousReadsAndWrites-8 300 4418123 ns/op BenchmarkBulkAdd-8 300 5569750 ns/op BenchmarkAdd-8 500000 2478 ns/op BenchmarkBulkAddToExisting-8 100 20552674 ns/op BenchmarkGet-8 2000000 629 ns/op BenchmarkBulkGet-8 5000 223249 ns/op BenchmarkDelete-8 500000 2421 ns/op BenchmarkBulkDelete-8 500 2790461 ns/op BenchmarkFindQuery-8 1000000 1166 ns/op BenchmarkExecuteQuery-8 10000 1290732 ns/op
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type BTree ¶
type BTree interface { // Insert will insert the provided keys into the tree. Insert(...common.Comparator) // Delete will remove the provided keys from the tree. If no // matching key is found, this is a no-op. Delete(...common.Comparator) // Get will return a key matching the associated provided // key if it exists. Get(...common.Comparator) common.Comparators // Len returns the number of items in the tree. Len() uint64 // Query will return a list of Comparators that fall within the // provided start and stop Comparators. Start is inclusive while // stop is exclusive, ie [start, stop). Query(start, stop common.Comparator) common.Comparators // Dispose will clean up any resources used by this tree. This // must be called to prevent a memory leak. Dispose() }
BTree is the interface returned from this package's constructor.