Я ищу несколько советов, так как в настоящее время я рисую пробел в названии для абстракции коллекции. Это может быть вопрос, не относящийся к теме, поэтому приносите извинения, если это будет рассмотрено.Как называть коллекцию карт ключей/значений B + Tree, которая также выступает в качестве контейнера для других коллекций
Я работаю над библиотекой, которая предоставляет хранилище B + Tree, и поддерживает несколько видов интерфейсов коллекции над этим деревом B +, такие как карты ключей/значений и отсортированные наборы.
Особый вид коллекции - это тот, который явно поддерживает вложенные дочерние коллекции в дополнение к регулярному хранению ключа/ценности карты. Это обеспечивает средства для поддержки пространства имен/табличного пространства/ключевого пространства.
Мое текущее рабочее название для этой коллекции абстракции - «MultiMap». Но это не кажется правильным и не соответствует действительности, например. мультиплеер STL. Но до сих пор я не мог придумать ничего лучшего.
Любые предложения для лучшего имени будут оценены.
Как дополнительная информация, обратитесь к определению интерфейса я рассматриваю в настоящее время ниже:
/** Represents a map that can be the container for nested collections.
* This allows having arbitrarily deep nesting for collections to support
* organization into (hierarchies of) separate name, key or table spaces.
* So instead of for example having a map that contains variable length
* keys such as "users/1", "users/2", etc. a nested collection "users"
* could be created that has fixed size integer keys (1, 2, ...). Note
* that storage for collections can be expensive. If not stored as a
* small embedded collection with only a few items, it will take up at
* least one physical storage page. Like in a regular map, all keys must
* be unique and items are stored in sorted key order. */
class IMultiMapCursor : public virtual IMapCursor {
public:
/** Positions the cursor at the first nested child collection, if any */
virtual bool SeekFirstNestedCollection() = 0;
/** Moves the cursor to the next nested child collection, if any */
virtual bool SeekNextNestedCollection() = 0;
/** Opens or creates a key/value map with the given @map_id under the
* map for this cursor, and returns a cursor to the nested map. */
virtual IMapCursor* OpenNestedMap(
const Slice& map_id,
const MapOptions& map_options = MapOptions::kOpenExisting) = 0;
/** Opens or creates a key/value map with the given @path_to_map,
* relative to the map for this cursor, and returns a cursor to the
* nested map. */
virtual IMapCursor* OpenNestedMap(
const CollectionPath& path_to_map,
const MapOptions& map_options = MapOptions::kOpenExisting) = 0;
/** Opens or creates a key/value multi-map with the given @map_id under
* the map for this cursor, and returns a cursor to the nested map. */
virtual IMultiMapCursor* OpenNestedMultiMap(
const Slice& map_id,
const MapOptions& map_options = MapOptions::kOpenExisting) = 0;
/** Opens or creates a key/value multi-map with the given @path_to_map,
* relative to the map for this cursor, and returns a cursor to the
* nested map. */
virtual IMultiMapCursor* OpenNestedMultiMap(
const CollectionPath& path_to_map,
const MapOptions& map_options = MapOptions::kOpenExisting) = 0;
/** Opens or creates a sorted set with the given @set_id under the map
* for this cursor, and returns a cursor to the nested set. */
virtual ISortedSetCursor* OpenNestedSortedSet(
const Slice& set_id,
const SetOptions& set_options = SetOptions::kOpenExisting) = 0;
/** Opens or creates a sorted set with the given @path_to_set,
* relative to the map for this cursor, and returns a cursor to the
* nested set. */
virtual ISortedSetCursor* OpenNestedSortedSet(
const CollectionPath& path_to_set,
const SetOptions& set_options = SetOptions::kOpenExisting) = 0;
/** Opens or creates a non-sorted set with the given @set_id under the
* map for this cursor, and returns a cursor to the nested set. */
virtual ISetCursor* OpenNestedSet(
const Slice& set_id,
const SetOptions& set_options = SetOptions::kOpenExisting) = 0;
/** Opens or creates a non-sorted set with the given @path_to_set, relative to the
* map for this cursor, and returns a cursor to the nested set. */
virtual ISetCursor* OpenNestedSet(
const CollectionPath& path_to_set,
const SetOptions& set_options = SetOptions::kOpenExisting) = 0;
/** Opens or creates a list with the given @list_id under this map, and
* returns a cursor to the nested list. */
virtual IListCursor* OpenNestedList(
const Slice& list_id,
const ListOptions& list_options = ListOptions::kOpenExisting) = 0;
/** Opens or creates a list with the given @path_to_list under this map,
* and returns a cursor to the nested list. */
virtual IListCursor* OpenNestedList(
const CollectionPath& path_to_list,
const ListOptions& list_options = ListOptions::kOpenExisting) = 0;
/** Renames the existing collection with id @current_id to @new_id.
* Requires (a) @new_id to be available. (b) the collection not to
* have an open cursor. */
virtual bool RenameNestedChildCollection(const Slice& current_id, const Slice& new_id) = 0;
};
CollectionMap? GenericMap? AnyMap? CollectionOrKeyValueMap? –