Я работаю над проектом на основе Java, который имеет клиентскую программу, которая должна подключаться к базе данных MySQL на удаленном сервере. Это было реализовано следующим образом:Мы используем JDBC + XMLRPC + Tomcat + MySQL для выполнения потенциально больших запросов MySQL. Что лучше?
Используйте JDBC для записи SQL-запросов, которые затем выполняются как сервлет с использованием Apache Tomcat и становятся доступными через XML-RPC. Клиентский код использует XML-RPC для удаленного выполнения этих функций на основе JDBC. Это позволяет нам сохранить нашу базу данных MySQL непубличной, ограничивать использование предопределенных функций и позволяет Tomcat управлять транзакциями базы данных (о чем мне сказали лучше, чем позволить MySQL сделать это в одиночку, но я действительно не знаю, понять почему). Тем не менее, для этого подхода требуется много кодовых табличек, а Tomcat - огромный всплеск памяти на нашем сервере.
Я ищу лучший способ сделать это. Один из способов, который я рассматриваю, - сделать базу данных MySQL общедоступной, переписать код на основе JDBC в качестве хранимых процедур и ограничить общественное использование только этими процедурами. Проблема, которую я вижу в этом, заключается в том, что перевод всего кода JDBC на хранимые процедуры будет сложным и трудоемким. Я также не очень хорошо разбираюсь в разрешениях MySQL. Можно ли предоставить доступ к хранимой процедуре, которая выполняет команды select в таблице, но также запрещает произвольные операции выбора в этой же таблице?
Любые другие идеи приветствуются, а также мысли и предложения по решению хранимой процедуры.
Спасибо!
Спасибо за одобренный ответ. Недавно я использовал этот инструмент: http://www.eclipse.org/mat/, чтобы получить представление об использовании памяти. Он имеет ограничения, но, безусловно, будет отмечать любые большие структуры памяти. Удачи. – 2009-03-31 13:58:52