В нашем текущем проекте нам нужен высокоуровневый DBI для разных баз данных. Он должен обеспечивать следующие функции:
- в кеше памяти — DBI должен иметь возможность кэшировать все операции чтения и обновлять кеш при записи вызовов (приложение, в котором мы кодируем, является многопоточным и постоянно нуждается в быстром доступе к текущим данным). ). Кэш памяти будет основан на
boost::multi_index
- автоматическое построение sql. Мы не хотим анализировать оператор sql для поиска в кеше памяти.
Поскольку нам нужно предоставить функции для: определения макета таблицы, выбора, вставки, обновления, объединения и т. д., интерфейс станет очень сложным.
Нам нужен хороший способ вызова функции интерфейса.
Вокруг много стилей, но мы не смогли найти ни одного полезного для нашего использования.
Вот несколько примеров:
СОКИ
sql << "select name, salary from persons where id = " << id, into(name), into(salary);
Нам не нужны некоторые операторы SQL, поэтому нам придется определить what
и from
по-другому.
pqxx
Conn.prepare("select_salary",
"select name, salary from persons where id = $1")
((string)"integer",prepare::treat_direct);
Интенсивное использование перегруженного operator()
просто уродливо, но это может сработать и для нас.
Есть предложения по разработке интерфейса?