Prepares the driver instance for performing storage operations by allocating resources, establishing network connections, etc. The driver may assume that this is only called once and only after {@link #initialize(K2Context)} has been called.
An open may fail if the address is illegal with respect to the driver implementation; e.g. it contains invalid characters that will not map to any file-system. An open may also fail if the provided address is legal but points to an unsuitable location; e.g. it contains existing files not recognizable by the driver or points to a location that is not readable/writable. Note that in the first case, resources need not be allocated, while in the second case, files might need to be opened to verify that the location is valid. Either way, if an open fails, the driver must ensure that any partially allocated resources are freed; {@link #close()} will not be called if {@code open()} throws an exception.The driver can assume that {@code open()} will not be called again if itfails.
This method may also return a modified address to present to the user, e.g. an address that has been normalized with driver-specific logic.
@param address Address of the storage location to open.
@return a transformed/normalized URI address, or {@code null} if thereare no changes.
@throws IllegalAddressException if the address is not recognized.
@throws StoreException if there is a problem allocating resources oraccessing the given (valid) address.