我实际上被困在三层结构中。我在网上冲浪,发现了两个术语“数据库抽象层”和“数据访问层”。
两者之间有什么区别?
最佳答案
我的理解是数据访问层实际上并不抽象数据库,而是使数据库操作和查询构建更容易。
例如,数据访问层通常具有与 SQL 语法非常相似的 API,但仍需要了解数据库结构才能编写:
$Users->select('name,email,datejoined')->where('rank > 0')->limit(10);
数据抽象层通常是完全成熟的 ORM(对象关系映射器),理论上可以防止需要了解任何底层数据库结构或具有任何 SQL 知识。语法可能是这样的:
Factory::find('Users', 10)->filter('rank > 0');
并且所有对象都可能被所有字段完全填充,如果您以这种方式设置,则可能与任何父对象或子对象连接。
然而,这种抽象是有代价的。我个人认为 ORM 之类的学说或推进是不必要且低效的。在大多数情况下,一个简单的数据访问层就可以了,对于需要特别注意的任何事情,都可以使用手动 SQL,而不必因为某些语法糖而破坏应用程序的性能。这个领域是一个非常激烈的辩论,所以我不会再深入了。
如果您指的是数据 底座 抽象层,那么它将是类似于 PDO 的东西,这样您的代码就可以用于更多的数据库供应商。我相信 PDO 可以与 MySQL、PostgreSQL 和 mysqli 等一起使用。
关于data-access-layer - 数据库抽象层和数据访问层有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2838661/