Fórumok
Üdv,
egy C++ alkalmazásban van szükségem többféle adatbázisrendszer támogatására.
Megírtam egy postgresql modult, libpqxx alapokon, ami kiválóan működik.
Majd megírtam egy oracle modult is, az occi interfészt használva. Ez a modul is működik, viszont jelentősen lassabb az adatok letöltése. Így néz ki kb egy SELECT lekérdezés futtatása és az eredmény feldolgozása az occi-vel:
Statement *stmt = conn->createStatement("SELECT .......");
ResultSet *res = stmt->executeQuery();
while (res->next())
{
std::string s = res->getString(1); // első oszlop lekérdezése
int i = res->getInt(2); // második oszlop lekérdezése
// ...
}
stmt->closeResultSet(res);
conn->terminateStatement(stmt);
Ez a kód ugyanazokat az adatokat (lényegében azonos táblaszerkezet postgres és oracle alatt, és ugyanaz a SELECT query) kb 10x annyi idő alatt dolgozza fel. (3perc vs. 30perc)
Összehasonlításképp, itt az említett (gyorsabb) libpqxx-es kód:
pqxx::work w(conn, "transaction_desc");
pqxx::result res = w.exec("SELECT .............");
for (
result::const_iterator it = res.begin();
it != res.end();
++it
)
{
std::string s; int i;
it[0].to(s);
it[1].to(i);
// ...
}
Köszönettel,
kl223
- 984 megtekintés