package com.walker.store; import com.walker.connector.Address; import com.walker.db.DatabaseException; import com.walker.db.TableInfo; import java.util.List; import java.util.Map; /** * 元数据引擎接口定义,提供数据中心存储的基本信息 * @author shikeying * @date 2015年12月17日 * */ public abstract interface MetaDataEngine { /** * 返回存储正在使用的库对象,在多库情况下,这个会不断变化。 * @param storeId * @return */ Address getUsingAddress(String storeId); // /** // * 根据存储ID获得对应已经存在的资源库信息,里面包含了连接的地址列表 // * @param storeId // * @return // */ // Repository getExistRepository(String storeId); /** * 创建新的库地址后,保存到系统元数据中 * @param storeId 存储ID * @param address 地址对象 */ void saveNewAddress(String storeId, Address address) throws DatabaseException; /** * 创建新的表,保存到元数据中 * @param storeId * @param addr 数据库地址 * @param destTableName 创建的表名 * @throws DatabaseException */ void saveNewTable(String storeId, Address addr, String destTableName) throws DatabaseException; /** * 返回给定数据库中,某个表里面包含的所有字段集合 * @param address * @param tableName * @return */ List getFields(Address address, String tableName); /** * 根据输入的数据库连接地址,返回里面存放的表数量 * @param address * @return */ public abstract int getTableSize(Address address); /** * 判断给定的主机上已经使用的数据库数量,这个结果是计算元数据存在中的;
* 如果是用户通过系统之外的途径添加的,则不会计算在内。 * @param address * @return */ int getDatabaseSize(Address address); /** * 从数据库元数据信息中查询给定表名(集合)的数据量 * @param storeId * @param metaDbId * @param tableNameList * @return */ Map getTableRows(String storeId, long metaDbId, List tableNameList); /** * 判断给定的地址对应的数据库在元数据中是否存在 * @param address * @return */ boolean isExistDatabase(String storeId, Address address); /** * 检查在元数据中是否存在对应存储中的表名。

* 注意:在同一个storeId中,无论是否分库,表名都要唯一 * @param storeId * @param tableName * @return */ boolean isExistTable(String storeId, Address address, String tableName); }