Bugfix: Fixed serveral race conditions in FixedSizeFutureStore
Bugfix: Fixed repainting in GUI
Version 0.9.2 - 20.10.2019
Improvement: Made Zookeeper ports configurable
Improvement: Fixed selection in GUI (elements can now be selected based on real geometries)
Improvement: Zookeeper port in GUI can now be determined
Improvement: UDF for spatial data is now preselected in GUI
Improvement: Prepartitioner is now integrated in CLI
Improvement: The Prepartitioner works now on samples instead of complete datasets
Improvement: Fixed handling of longitude latitude in GeoJSON bboxes
Improvement: Improve prepartitioning algorithm
Improvement: Introduced default SSH options
Improvement: Automatically set zookeeper host and clustername in CLI
Improvement: Fixed storage handling on cluster kill
Improvement: Create .bboxdb file as marker in every storage dir
Improvement: Print sample distribution after prepartitioning
Improvement: Access disk pages in prepatitioning sequential
Improvement: Made tree view jpanel scrollable by mouse clicks
Improvement: Improved error handling on CLI operations
Improvement: Improved logging on resource placement / allocation errors
Bugfix: Don’t retry futures on failed connections
Bugfix: Prevent race condition on future error handling on replicated operations
Bugfix: Handle systems with wrong configured IP address resolving (127.0.1.1)
Bugfix: Wait for Zookeeper splits to settle when a region is prepartitione
Bugfix: Check features of the source regions before they are merged
Bugfix: Throw better exception when replication factor exceeds the number of nodes
Bugfix: Fixed error code handling in CLI when operations are failing
Bugfix: Fixed NPE in SpacePartitionerCache
Bugfix: Prevent half created distribution groups (e.g., exception during create)
Bugfix: Prevent the creation of invalid named distribution groups
Bugfix: Prevent the creation of invalid named tables
Version 0.9.1 - 12.07.2019
New Feature: Added GUI for GeoJSON operations
Improvement: Returned tuples are now shown in CLI calls
Improvement: Added linestring geojson type
Improvement: Replaced OSMPoint by Point2D.Double
Improvement: Improved result buffer handling of network requests
Improvement: Bump up zookeeper from 3.4.14 to 3.5.5, guava from 27.1-jre to 28.0-jre
Improvement: The OSM maps on the GUI are now cached
Improvement: The OSM maps can now be zoomed with the mouse wheel
Improvement: Various GUI improvements (#157)
Improvement: Added filter operation for GeoJSON encoded tuples
Improvement: Assertions are also enabled in tools
Bugfix: Fixed GeoJSON longitude / latitude encoding
Bugfix: Improved polygon repair
Bugfix: Fixed QuadTreeSpace partitioner unit test testOverflowUnderflow (#149)
Bugfix: Fixed the calculation of the bounding box of joined tuples
Bugfix: Include full stacktraces on rejected exception
Bugfix: Fixed insertion of deleted tuple
Bugfix: Fixed two timing errors on the dynamic grid space partitioner test (#159)
Bugfix: Spatial joins are reported that are outside of the query range (#155)
Bugfix: Handle future retry correctly (#165)
Version 0.9.0 - 02.05.2019
New Feature: Added bounding box determination script
New Feature: Added GeoJSON to bounding box converter
New Feature: Added support for streaming only tuples (user defined filter functions)
New Feature: Support for server based filter
New Feature: Added GeoJSON geometry filter
New Feature: Added support for streaming join filters
New Feature: Added support for user defined filters in streaming queries
Improvement: Continuous queries can be executed on a different join table
Improvement: Allow WGS84 enlarge by meters in continuous queries
Improvement: Upgraded mockito-core from 2.23.4 to 2.27.0, lf4j-api from 1.7.25 to 1.7.26, slf4j-log4j12 from 1.7.25 to 1.7.26, cassandra-driver-core from 3.6.0 to 3.7.1, guava from 27.0.1-jre to 27.1-jre, zookeeper from 3.4.13 to 3.4.14
Improvement: The speed of the file line indexer
Improvement: Prevent coordinate duplicates in polygons
Improvement: Added importer for nari dynamic data
Improvement: Added importer for forex data
Bugfix: Don’t retry a future when the connection is closed
Bugfix: Fixed the bounding box query for full space covering tuples
Version 0.8.6 - 02.01.2019
New Feature: Add support for continues queries predicates (closes #60)
New Feature: Added the ExceptionHelper in commons
Improvement: Allow continuous queries over multiple nodes (closes #120)
Improvement: Continuous queries are now returning a joined tuple result (closes #122)
Improvement: Tuple insert with bounding box hyperrectangle transformation
Improvement: Added several delay modes to the retryer
Improvement: All exceptions are stored in the retryer
Improvement: Refactored tuple store aquire code
Improvement: Logging for failed tuple store aquire is more detailed
Bugfix: Memtable aquire on flush / shutdown (closes #126)
Bugfix: Next page request is canceled when a continuous query is canceled
Version 0.8.5 - 21.12.2018
New Feature: Added network proxy with a central coordinator
Improvement: Automatically repair defective GeoJSON geometries (automatically close polygons)
Improvement: Speed up r-tree index lookups
Improvement: Limit the number of tables in major compact tasks
Improvement: Switched guava from 27.0-jre to 27.0.1-jre, je from 18.3.1 to 18.3.12, simpleclient from 0.5.0 to 0.6.0
Improvement: Clean up test environment after some unit tests
Bugfix: Fixed the KD-Tree split experiment
Bugfix: Allow experiments with duplicate file and different formats
Bugfix: Fixed several bugs in the experiments
Bugfix: Fixed zoom factor in GUI (closes #119)
Bugfix: Fixed exception in tuple store read after cluster deletion in ZooKeeper
Bugfix: Fixed table read from non existing distribution group
Bugfix: Fixed instance read after cluster clear
Bugfix: Hyperrectangle from string now creates a correct FULL_SPACE hyperrectangle
Bugfix: Hyperrectangle from bytes now creates a correct FULL_SPACE hyperrectangle
Bugfix: Fixed “socket closed” exception on regular shutdown
Bugfix: Fixed “Unknown location for table” for get operations on empty tables
Version 0.8.4 - 24.10.2019
Improvement: Speed up hyperrectangle covering box calculation
Improvement: Switched mockito-core from 2.21.0 to 2.23.0, from 26.0-jre to 27.0-jre and osmosis-pbf from 0.46 to 0.47
Improvement: Added a lot of performance related improvements
Improvement: Full stacktraces can be included in insert operation errors
Improvement: Added failed lines counter to CLI import operation
Improvement: The GeoJSON importer skips lines with an invalid dimension
Improvement: Bloomfilter in memtables is replaced by a key index (closes #110)
Bugfix: Fixed data redistribution
Bugfix: Prevent exceptions during compactifications on shutdown
Bugfix: Handle null tuples during compact
Bugfix: Fixed JSON polygon encoding
Bugfix: Prevent the insertion of tuples with the wrong dimension for the distribution group
Version 0.8.3 - 28.09.2018
Improvement: Made reads on replicated data HA (only one replicate needs to be available)
Improvement: Refactored future retry to supplier
Improvement: sent read and write operations only to active instances
Improvement: Updated simpleclient from 0.4.0 to 0.5.0, zookeeper from 3.4.12 to 3.4.13, json from 20180130 to 20180813, Guava from 25.1-jre to 26.0-jre, mockito from 2.19.0 to 2.21.0, snakeyaml from 1.21 to 1.23
Improvement: Added usage counter to memory-mapped IO resources
Improvement: Simplified table deletion code
Bugfix: Filter distribution regions directly in the tree to prevent race conditions
Bugfix: Fixed wrong write operation redirect order on split in KD Tree space partitioner
Bugfix: Fixed wrong write operation redirect order on split in Quad-Tree space partitioner
Bugfix: Update instance data in MembershipConnectionService
Bugfix: Fixed NPE on resuming non existing queries
Bugfix: Fixed race condition in TupleListFutureStore waitForCompletion
Bugfix: Fixed local selftest
Bugfix: Local tables are also compacted
Bugfix: Fixed JVM crash when memory-mapped IO was unmapped
Bugfix: Fixed closed socket exceptions on connection termination
Version 0.8.2 - 05.09.2018
Improvement: Bounding boxes can be padded in dataset import
Improvement: Added ‘ulimit -a’ output in bboxdb.out server log
Improvement: Added multiple file support for fixed grid experiment
Improvement: Added external storage support for the KD-Tree split experiment
Improvement: Fixed bugs found by Coverity scan
Improvement: Added baseline experiment
Improvement: Added baseline importer
Improvement: Added a future statistics writer
Bugfix: Made children regions ready before parent region is set into split state
Improvement: Refactored the server side network package handling
Improvement: Refactored the client side network package handling
Improvement: Changed the server side connection error handling
Improvement: Data is automatically placed into the “data” subdirectory
Improvement: Default data location is now /tmp/bboxdb
Bugfix: Removed the unused ‘root directory’ from config file
Version 0.2.2 - 23.03.2017
New Feature: Added start option for remote debuging
New Feature: Added OSM viewer for K-D Trees
New Feature: Added sampling size experiment
Improvement: Moved scripts from misc/ to bin/ folder
Improvement: New file system layout (all tables of a distribution group are now located in one dir)
Improvement: In memory data is also redistributed after a region split
Improvement: The version for every distribution group is stored locally
Improvement: The local version and the remote version of the distribution group is checked. This prevents node joins with outdated data
Improvement: One part of the data is stored locally after region split
Bugfix: A synchronisation issue in the memtable flush thread is fixed
Bugfix: The connect dialog in the GUI is now big enough to show full IP-Addresses
Bugfix: Empty sstable dirs are removed after region split
Bugfix: Region mapping is removed after region split
Bugfix: Region mapping is not created for inactive regions
Version 0.2.1 - 31.01.2017
New Feature: Using Coverity scan and codecov.io to improve source code quality
New Feature: OSM Data is now stored as GeoJSON, instead of a java serialized byte stream
New Feature: Introduced the R-Tree spatial indexer
New Feature: Added index support to the query processor
New Feature: Introduced query plans
New Feature: Implemented timeout for futures
Improvement: Changed bounding box precision from float to double
Improvement: Reduced memory usage of the network stack by removing the response buffering
Improvement: Switched from MapDB 3.0.2 to 3.0.3, and from guava 20.0 to 21.0
Improvement: Fixed a lot of small bugs, found by ‘Coverity code’ scan
Improvement: Region splits are now based on the size of the region
Improvement: SSTables and SSTable-Index files are using now different magic bytes
Improvement: The timestamp query only reads tuple stores which contain tuples for this timestamp
Improvement: Added timeout to routing requests
Bugfix: Outdated jars are new removed on bboxdb_update
Bugfix: Removed implementation and specification of the unused TransferSSTable network package
Bugfix: Removed the non working BoxSearch spatial index
Bugfix: The weight based split strategy was analyzing all local regions of a distribution group
Version 0.2.0 - 11.01.2017
Improvement: New logo
Improvement: Shortened socket close exception
Improvement: Write statistical data about flushed memtables
Improvement: Added callbacks for distribution region changes
Improvement: Reduced GUI CPU usage
Improvement: The GUI now shows a waiting cursor, when the distribution group is loaded
Improvement: The component size of the main panel now consider only the shown components
Improvement: Introduced a status bar in the GUI main view
Improvement: Switched GUI to Nimbus look and feel
Improvement: The region id of a distribution group is now printed in the GUI
Bugfix: The wrong split interval was taken
Bugfix: Fixed a race condition on compact thread init
Bugfix: The max size of a memtable was treated as kilobytes, not bytes
Bugfix: Ensure that the data of the parent region is redistributed completely until child region is splitted
Bugfix: The same instance of the RegionSplitStrategy was used for all Tables, which leads to wrong data redistribution
Bugfix: Ensure that the RessourcePlacementStrategyFactory create new instances
Bugfix: Removed repeated log messages about adding local region mappings
Bugfix: All local tables (not only the tables of a certain region) have been redistributed
Bugfix: Removed warning when merging an empty bounding box
Bugfix: Fixed handling of empty tooltips in the GUI
Bugfix: Non-overlapping placement of distribution groups in the GUI
Bugfix: New distribution regions in zookeeper was set to READY instead of CREATING before system where added
Bugfix: Fixed calculation of the root node pos in the GUI
Version 0.2.0 (Beta-5) - 01.01.2017
Improvement: Introduced JVM parameter
Improvement: Enabled the JMX server
Improvement: Replaced ‘apache commons daemon’ BBoxDB process management with native Java solution
Improvement: Assertions are now enabled during unit tests and in server mode
Improvement: Introduced distribution group selection in GUI
Improvement: Added trace start to bboxdb
Improvement: Added the ability to reread distribution group list in GUI
Improvement: Unflushed memtables are now flushed on shutdown
Improvement: Improved exception handling during server start/stop
Improvement: SSTables can be deleted without init the sstable manager
Improvement: Log statistics about redistributed tuples
Bugfix: Allocate systems to new distribution regions, before then come ready
Bugfix: GUI is repainted when a distribution region is recreated
Bugfix: Size of the GUI tree component was not dynamically calculated
Bugfix: The acquire storages code releases all (not only the already acquired) storages on failure, this leads to wrong usage counting
Bugfix: Regions couldn’t be removed from the name prefix manager
Bugfix: No data is written to ACTIVE_FULL regions
Bugfix: For splits, only the part of the tuple is analyzed, that is covered by the region
Bugfix: State updates of the tree are applied after reading the child nodes. Otherwise, a region could be set to splitted before the child nodes are ready
Bugfix: Nodes in state ‘creating’ are not considered as real child nodes in isLeafNode() method
Version 0.2.0 (Beta-4) - 20.12.2016
New Feature: Renamed project from ‘scalephant’ to ‘BBoxDB’
New Feature: Introduced the new $BBOXDB_HOME environment variable
New Feature: Added cluster debug startup to manage_cluster.sh script
Improvement: Unified tuple store aquire code
Improvement: Introduced the local selftest
Improvement: Added CLI parameter to the SSTableExaminer
Improvement: The documentation is now pushed on ‘GitHub pages’
Improvement: Rewrote the KD-Tree zookeeper integration code
Improvement: Improved handling of deleted distribution groups
Improvement: Node configuration is now performed via files (not via environment variables)
Improvement: Ensure that only one node splits a distribution region at the same time (new state ACTIVE_FULL)
Improvement: Introduced server error messages
Bugfix: Init table splitter only in distributed mode
Bugfix: In a major compact, not all tables were processed
Bugfix: After distribution group delete / create the DistributionGroupCache can become inconsistent
Version 0.2.0 (Beta-3) - 09.12.2016
New Feature: Introduced paging (results > memory could be requested)
New Feature: Introduced type safe client API
New Feature: Added boundingbox with time query type
New Feature: Added the cancel query server call
Improvement: Simplified network protocol by removing the duplicate success and response packages
Improvement: Success and Error responses are now indicated by the isFailed() future method
Improvement: Success and Error messages are now provided by the getMessage() future method
Improvement: Introduced iterator for list results in client API
Improvement: Use the WeightBasedSplitStrategy as default
Improvement: Clean unused memtables to support the GC
Bugfix: Group membership watch was not re-established
Bugfix: Wrong node state was displayed in the GUI
Bugfix: Fixed handling of failed futures in the benchmark
Bugfix: Fixed calculation of ‘in-flight calls’ for a cluster
Bugfix: Fixed calculation of the routing header, don’t route packages to local instance
Bugfix: Ignore socket exception, when a server shutdown is performed
Bugfix: When a dead instance is detected, don’t sent a disconnect package. Close the network connection instead
Bugfix: Fixed division by zero in WeightBasedSplitStrategy
Bugfix: Thread names contain the full output of sstablename.toString
Bugfix: The checkpoint date is not written to zookeper, if no memtable was flushed
Bugfix: The tuple redistribution strategy was not able to handle local destinations
Bugfix: Fixed NPE during bounding box creation
Bugfix: Deleted tuples were read form SSTables without the original timestamp
Bugfix: Duplicate tuples (caused by queries on replicates) are filtered in the client code
Version 0.2.0 (Beta-2) - 28.11.2016
New Feature: Java 8 is now required to build the project
New Feature: Delete tuple operations now contain a timestamp to order them correctly
New Feature: Introduced a bloom filter for memtables and sstables
Improvement: Added missing copyright header to all source files
Improvement: OSM import is now executed on a disk backed set, so huge imports (> memory) can be performed
Improvement: Speed up ‘read by key’ operation, by scanning only the relevant SStables
Improvement: Switched to SLF4J LOG4J 12 Binding 1.7.21 and Zookeeper 3.4.9
Improvement: The server does not materialize the query results. This allows huge query results (> memory)
Bugfix: Logs now written into $installdir/logs
Bugfix: Outdated tuples could be returned from the unflushed memtables
Bugfix: Fixed ‘node exist exception’ during instance registration on fast service restarts
Bugfix: Remove outdated jars on upgrade from classpath
Bugfix: Not all relevant tuples are scanned by the ‘read by key’ operation
Bugfix: Set correct (millisecond based) timestamps for tuples on creation
Version 0.2.0 (Beta-1) - 17.11.2016
New feature: Added a selftest
Improvement: Implemented keep alive packages, to keep TCP connections open
Improvement: Added the possibility to log debug messages
Improvement: Write geometrical data to server in OSMInsertBenchmark
Improvement: Moved OSM importer code to own class
Bugfix: Removed duplicate logging entries
Bugfix: Removed deadlock on node down event
Bugfix: Skip compact operation when only one SSTable exists
Bugfix: Set failed state on future when server operation returns an error
Bugfix: Flush full memtables also on tuple delete operation
Bugfix: Fixed some slf4j logging issues
Bugfix: Result set was containing outdated tuples
Version 0.1.2 - 14.09.2016
Implemented the recovery service
Unified the structure of request and response packages
Introduced connection capabilities and connection handshaking
Implemented network compression
Improved network package decoding
Introduced the WeightBasedSplitStrategy
Version 0.1.1 - 26.08.2016
Introduced replication strategies
Handle pending futures in benchmarks correctly and limit the number of pending requests
Implemented roads in OSM Benchmark
Improved states for DistributionRegions
Implemented checkpoints
Store node states in zookeeper
Version 0.1.0 - 07.08.2016
Fixed some crashes in the network handler
Added first version of the OSM data import benchmark
Added routing header to network packages
First version with working ClusterClient
Changed client API (Introduced multi-result futures)
Implemented insert request routing
Changed the structure of the list tables response package
Spread existing data on region split
Version 0.0.9 - 14.07.2016
Added compactification statistics
Introduced a simple split strategy
Store the version number of the instances in zookeeper
Data is now stored in region tables
Added version number to distribution groups
Added state field to distribution groups
Implemented membership connection service
Version 0.0.8 - 22.06.2016
Store Distribution Region assignment in zookeeper
Improved exception handling and prevent half written sstables
Introduced the multi-server client “ScalephantCluster”
Made GUI settings (ZookeeperHost, Clustername) configurable
The GUI now uses data fetched from zookeeper instead of mockup data
The name prefix of the distribution regions is now stored in zookeeper
Introduced a simple resource allocation strategy
Version 0.0.7 - 05.06.2016
Improved bounding box implementation
Improved distribution group GUI handling
Added create and delete distribution group network packages
Replication factor is now configurable per distribution group
Added logic to store distribution groups in zookeeper
Added an in-memory structure for distribution groups (updated by zookeeper)
Added zookeeper to Travis CI environment
Added zookeeper integration tests
Version 0.0.6 - 13.05.2016
Added timestamp queries
Implemented the table transfer network package
Changed the requestid of the network protocol to int, to handle more parallel requests
Removed many buffers in the network implementation (less memory is needed)
Implemented distributed instance discovery via zookeeper
Added a basic GUI
The zookeeper database can be now deleted with the cluster management script
Version 0.0.5 - 24.03.2016
Added basic benchmarks
Added a logo
Improved compaction strategy
Introduced major compactions
Improved SSTable usage counting
Added SStable metadata
Added distributed membership management
Added a cluster management script
Integrated zookeeper
Version 0.0.4 - 03.03.2016
Added one client example
Added configuration file (scalephant.yaml)
Added support for multiple tuple result queries
Implemented BoundingBoxes
Implemented a naming scheme for tables
Added a start and stop script for Linux (using Apache jsvc)
Version 0.0.3 - 16.02.2016
Implemented a network client
First network protocol specification (see doc/network.md)
Implemented a server service
Integrated Travis CI
Version 0.0.2 - 26.01.2016
Implemented a SSTable/SSTableIndex examiner for debugging
Introduced a simple compactification strategy
Introduced SSTable indices
Implemented binary index search, to locate tuples
Implemented a tuple iterator to perform full table scans
Handle deleted tuples correctly
Implemented SSTable compactification
Added MultiThreadling support in the SSTableManager
Switched the reader from File IO to Memory Mapped IO