Я был бы второе @Zizzencs предположение, что Вы могли бы хотеть что-то, что это не полностью (R) центрально DB
Так или иначе, я полагаю, что использование плоскости nvarchar поля для хранения, который отмечает с некоторым надлежащим кэшированием/индексацией, могло бы привести к более быстрым результатам. Но это - просто я.
я реализовал системы меток с помощью 3 таблиц для представления отношений Many-Many прежде (Теги Объекта ItemTags), но я предполагаю, что Вы будете иметь дело с тегами в большом количестве мест, я могу сказать Вам, которые с 3 таблицами, имеющими необходимость управляться/запрашиваться одновременно все время, определенно сделают Ваш код более сложным.
Вы могли бы хотеть рассмотреть, стоит ли добавленная сложность того.
Думаю, это тоже может сработать: http://pocoproject.org/docs/Poco.SharedLibrary.html
Библиотека ACE содержит оболочки для загрузки динамических библиотек, работающих кросс-платформенных. Если вам нужен больший комфорт, чем обычная библиотека loadlibrary, посмотрите TAO The ACE ORB. Использование corba с TAO чрезвычайно производительно и, скорее всего, превосходит любую самостоятельно созданную инфраструктуру плагинов, особенно если вы используете их в вызовах процессов, поскольку TAO оптимизирует их.
Для использования кроссплатформенной оболочки динамической библиотеки используйте ACE_DLL . Он предоставляет базовую кроссплатформенную оболочку для loadlibrary (), о которой вы упомянули.
Между использованием ACE_DLL и использованием TAO находится структура конфигурации службы ACE, которая позволяет вам динамически загружать объекты. После загрузки вы можете получить указатель восходящего преобразования на загруженный объект, который вы реализовали, и можете вызвать любой метод для загруженного объекта.
Код для этого будет выглядеть следующим образом:
char const * const cpc_myClass = ACE_DYNAMIC_SERVICE_DIRECTIVE(
"myclass",
"dllname",
"_make_MyClass",
""
);
result = ACE_Service_Config::process_directive(cpc_myClass);
MyClass * p_obj = ACE_Dynamic_Service<MyClass>::instance ("myclass");
p_obj->callAnyMethodYouLike();
Здесь объясняется, что TAO знает два типа оптимизации размещения (thru_poa и прямая):
При использовании прямой стратегии вызовы методов для совместно размещенных объектов становятся прямыми вызовами серванта без проверки статуса POA.
Вы можете быть удивлены, насколько эффективной может быть TAO при правильном использовании. Я предлагаю создать простое доказательство концепции и провести измерения.