code: public static JdbcExpert getExpert(String productName, String version) {
          String dbName = String.format("%s::NUTZ_JDBC::%s", productName, version).toLowerCase();
  
          JdbcExpert re = conf.matchExpert(dbName);
  
          if (null == re) {
          	log.warnf("unknow database type '%s %s', fallback to MySql 5", productName, version);
          	re = conf.matchExpert("mysql 5");
          }
  
          return re;
      }
docs: 根据数据库的产品名称，获取其专属的 Expert
  <p>
  映射的规则存放在 JSON 文件 "nutz_jdbc_experts.js" 中，你可以通过建立这个文件修改 Nutz 的默认映射规则
  <p>
  比如下面的文件，将支持两种数据库
  
  <pre>
  {
  experts : {
  "postgresql.*" : "org.nutz.dao.impl.jdbc.psql.PostgresqlExpert",
  "mysql.*" :  "org.nutz.dao.impl.jdbc.mysql.MysqlExpert"
  },
  config : {
  "temp-home" : "~/.nutz/tmp/dao/",
  "temp-max" : 2000
  }
  }
  </pre>
  
  本函数传入的两个参数将会被:
  
  <pre>
  String.format(&quot;%s::NUTZ_JDBC::%s&quot;, productName, version);
  </pre>
  
  并被你声明的正则表达式(expert 段下的键值)依次匹配，如果匹配上了，就会用相应的类当作驱动封装类
  
  @param productName
  数据库产品名称
  @param version
  数据库版本号
  
  @return 该数据库的特殊驱动封装类
  
  @see java.sql.Connection#getMetaData()
  @see java.sql.DatabaseMetaData#getDatabaseProductName()