是否可以使用一个抽象类来使用我的 mongoDB 类和 mysql 类。因为,在 mysql 中我们可以在一个函数中执行插入、更新和删除语句,但我们不能在 mongodb 中执行。
或者他们应该有单独的数据库抽象层
// I can pass INSERT,UPDATE and DELETE query to this function but for monbodb I cannot
mysql
public function doNonQuery($sql){
mysql_query($sql);
}
mongoDB
public function insert($tableName,$query){
$collection = new MongoCollection($db,$tableName);
$a = $query
$collection->insert($a);
}
public function update($tableName,$query){
$collection = new MongoCollection($db,$tableName);
$a = $query
$collection->update($a);
}
最佳答案
您没有在正确的抽象层次上思考。与其尝试抽象插入、更新和删除操作(这是您的代码示例所做的),不如考虑抽象您的域。这会让你想出一个界面,你可以在其中插入、更新和删除对象。例如:
interface IDatabaseCollection<T> where T : IDatabaseEntity
{
void Insert(T item);
void Update(T item);
void Delete(T item);
}
现在您可以实现 SQLDatabaseCollection 和 MongoDatabaseCollection,它们都实现了 IDatabaseCollection。
上面是一个基本的例子,当然还有很多其他的方法可以实现。但这是您在处理抽象时需要开始思考的方向。
简而言之,您的抽象级别太低,您需要提升它以使其成为更高级别的抽象。
关于php - 包装 mongoDB 和 mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12454991/