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<String> getFields(Address address, String tableName);
|
|
/**
|
* 根据输入的数据库连接地址,返回里面存放的表数量
|
* @param address
|
* @return
|
*/
|
public abstract int getTableSize(Address address);
|
|
/**
|
* 判断给定的主机上已经使用的数据库数量,这个结果是计算元数据存在中的;<br>
|
* 如果是用户通过系统之外的途径添加的,则不会计算在内。
|
* @param address
|
* @return
|
*/
|
int getDatabaseSize(Address address);
|
|
/**
|
* 从数据库元数据信息中查询给定表名(集合)的数据量
|
* @param storeId
|
* @param metaDbId
|
* @param tableNameList
|
* @return
|
*/
|
Map<String, TableInfo> getTableRows(String storeId, long metaDbId, List<String> tableNameList);
|
|
/**
|
* 判断给定的地址对应的数据库在元数据中是否存在
|
* @param address
|
* @return
|
*/
|
boolean isExistDatabase(String storeId, Address address);
|
|
/**
|
* 检查在元数据中是否存在对应存储中的表名。</p>
|
* 注意:在同一个storeId中,无论是否分库,表名都要唯一
|
* @param storeId
|
* @param tableName
|
* @return
|
*/
|
boolean isExistTable(String storeId, Address address, String tableName);
|
}
|