1. A method of storing multi-dimensional data, or multi-dimensional data points, in a multi-dimensional database and retrieving subsets of said multi-dimensional data according to the specification of a query comprising: providing a computer memory which is able to store said multi-dimensional data at a series of addresses in said memory, providing a means of transforming by calculation of multi-dimensional points including said multi-dimensional data into one-dimensional values by mapping said multi-dimensional data to one-dimensional distance values along an approximation of a Hilbert space-filling curve that passes through all multi-dimensional points corresponding to possible data values in the domain of said multi-dimensional database, providing a means of partitioning said multi-dimensional data into an ordered sequence of approximately equal sized subsets of said multi-dimensional data so that each said subset of said multi-dimensional data comprises multi-dimensional data that maps to lower said one-dimensional distance values than all succeeding said subsets of said multi-dimensional data, providing a means of identifying each said subset of said multi-dimensional data together with the location in said computer memory in which each said subset of multi-dimensional data is stored, providing a means of indexing locations in said computer memory of said subsets of said multi-dimensional data, providing a means of specifying a query as a multi-dimensional rectangular region within said domain of said database, providing a means of identifying for retrieval and searching which said subsets of said multi-dimensional data intersect with any said query, whereby said database and its index adapt efficiently to insertion and deletion of said multi-dimensional data, and whereby subsets of multi-dimensional data that intersect with a query region can be identified efficiently for searching and retrieval of multi-dimensional data that lies within the query region.