我有一个运行Spring MVC的应用程序.
我需要它来访问我的应用程序中的两个不同的数据库(一个是PostgreSQL,另一个是MySQL数据库).
如何仅使用注释或application.properties文件来配置它?
问候.
介绍
我的iOS项目附带一个Core Data持久存储,重量约为160MB,采用SQLite格式.那里有大量的分组信息,用户应该可以在其中标记收藏.为此,我需要(至少部分)数据库具有写入功能.但当然,应用程序包中的持久存储是按设计只读的.
如果您希望商店具有读写功能,则应将其复制到例如应用程序的文档文件夹中.我不想这样做,因为那时应用程序将是两倍大小,而该数据库的主要部分仍然是只读的.那将浪费资源.
NSPersistentStoreCoordinator的多个持久存储
这就是为什么我想到使用两个持久存储.第一个是捆绑中的大一个,第二个可能是文档文件夹中的一个小的,存储与大商店有关系的特殊"最喜欢"实体.
我知道在这方面有可能做到,但我找不到具体细节.如果您还有多个对象模型,是否应该只使用多个商店?一个对象模型可以在两个持久存储上"分布"吗?浏览核心数据编程文档时,我找不到任何关于如何设置它的真正参考.Marcus Zarra的书似乎也没有深入研究这个主题:
可以向NSPersistentStoreCoordinator添加多个NSPersistentStore,这在处理拆分为多个文件的数据时非常有用.但是,在我们的例子中,我们只有一个文件.(Marcus Zarra:"核心数据 - Apple在Mac OS X上保存数据的API"第71页)
问题
谁可以告诉我,我在想什么是可能的Core Data和多个持久存储?你能提供一些关于如何实现这一目标的提示吗?处理该主题的在线/离线资源也非常受欢迎.
我有2个数据库(MySql和HSQLDB).我配置了2个数据源和2个EntityManagerFactory bean.我还可以配置2个对应的JpaTransactionManager bean.
但我不知道如何指定应该使用哪些来管理具体服务类的事务.我想@Transactional为此目的使用注释,但实际上我只能指定一个txManagers:
<tx:annotation-driven transaction-manager="manager"/>
Run Code Online (Sandbox Code Playgroud)
这种情况的出路是什么?
我(在测试目的上)在sql server 2008 r2实例上有许多具有相同模式(基本上相同的表和列)的dbs.
我想要一个查询
SELECT COUNT(*) FROM CUSTOMERS
Run Code Online (Sandbox Code Playgroud)
在实例上的所有DB上.我希望得到2列:
1 - 数据库名称
2 - 的价值 COUNT(*)
例:
DBName // COUNT (*)
TestDB1 // 4
MyDB // 5
etc...
Run Code Online (Sandbox Code Playgroud)
注意:我假设该CUSTOMERS表存在于所有dbs中(除外master).
我在自己的数据库中有每个WordPress实例.对于更新,我需要查询所有活动插件,这些插件存储在表'wp_options'中并可通过
WHERE option_name='active_plugins'
Run Code Online (Sandbox Code Playgroud)
如何访问所有活动的插件设置(分布在多个数据库中)并将它们输出到一个SQL结果中?我知道database.tablename语法,但是如何使用上述Where语句继续?
单个数据库中的请求如下所示:
SELECT option_value
FROM `database`.`wp_options`
WHERE option_name="active_plugins"
Run Code Online (Sandbox Code Playgroud) 做某些事情是否有效
CREATE SYNONYM [dbo].[MyTable] FOR [AnotherDatabase].dbo.[MyTable]
然后修改Entity Framework的edmx文件以读取此对象,就像任何其他表一样?
我做了一个快速的样本测试,它似乎在选择和更新时工作正常,但我想知道是否有任何理由我不应该这样做
我通过创建指向第二个数据库的edmx文件,在那里构建实体,然后将定义复制/粘贴到第一个数据库的edmx文件中来获取表定义.
UPDATE
如果有人有兴趣,我写下了我在这里制作edmx文件跨越多个数据库所做的工作.它包括用于生成同义词和合并edmx文件的脚本.
有没有办法指定模型(或应用程序,甚至)应该只使用一个特定的数据库?
我正在使用一个我不想改变的遗留数据库.我有两个数据库 - 'default'是可以用于管理员等的sqlite数据库,也可以是旧数据库.我使用了inspectdb为遗留数据库(的一部分)创建了一个模型,它有 managed = False.但有没有办法在模型中指定它只适用于特定的数据库?
我看到你可以在一些查询集等中指定using=databasename,但这对像Databrowse这样的东西是不利的(也可能是通用视图?).可能是Databrowse的一个短缺,你不能指定一个数据库,但它似乎是指定它的正确位置是模型...
然后我想也许答案是编写一个只引用我的遗留数据库的自定义模型管理器 - 但是文档没有提到类似的东西.
对于Django世界,我是否只有一个不同的心理模型可以使用多个数据库?
我的查询有问题,我需要从不同的数据库加入两个表,现在我的问题是如何执行我的查询.我从这里得到了我的语法格式
请先访问此链接,以便了解我的SQL语法为何如此
http://www.x-developer.com/php-scripts/sql-connecting-multiple-databases-in-a-single-query
$ENROLLEES = $this->load->database('ENROLLEES', TRUE);
$ACCOUNTS = $this->load->database('ACCOUNTS', TRUE);
$SELECT = "SELECT $ACCOUNTS.BALANCES_TABLE.IDNO, $ACCOUNTS.BALANCES_TABLE.balance";
$FROM = "FROM $ACCOUNTS.BALANCES_TABLE";
$WHERE = "$ACCOUNTS.BALANCES_TABLE.IDNO IN (SELECT $ENROLLEES.ENROLLEES_TABLE.IDNO FROM $ENROLLEES.ENROLLEES_TABLE)";
$SQL = $SELECT ." ". $FROM ." ". $WHERE;
Run Code Online (Sandbox Code Playgroud)
主要问题:如何执行我的查询?
如果我们在codeIgniter中这样做:
$ENROLLEES->query($SQL); or $ACCOUNTS->query($SQL);
Run Code Online (Sandbox Code Playgroud)
如何执行我有多个数据库的查询?我将在这里提供[database]->query($SQL);什么?
好吧,我的第一个问题被修改了很多次,我选择删除它并重新构建我的问题.我已经创建了一个具有不同模型名称的小型测试用例项目,以便为我的问题找到合适的解决方案.
警告:不要将数据库与表混合
动机:我将用户数据分成多个数据库,以解决法律和性能问题.
目前我正在开发一个有多个的CakePHP项目,User每个项目User都有自己的数据库,有多个表(cars就是其中一个表).现在,我需要先解释一下:
每个User都有自己的数据库(不是表,数据库),所以数据库名称如下.
app(这是应用程序的主数据库)
users permissions(与此问题无关)app_user1(User.id1拥有整个数据库)
cars(完全归1 的表User.id)app_user2(User.id2拥有整个数据库)
cars(完全由2 拥有的表User.id)我做了一个小图,它可以澄清数据库/表 -定义及其与模型的关系:

问题!!!
我不知道要连接哪个 …
我有Django的MySQL数据库后端的主 - 从复制设置.目前我只为Master DB阅读和写作,但我的仪表板非常查询.我正在寻找一个选项,我可以在其中定义如下DATABASES
DATABASES = {
'default_slave': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'application',
'USER': 'root',
'PASSWORD': '',
'HOST': '',
'PORT': '3306',
},
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'application',
'USER': 'root',
'PASSWORD': '',
'HOST': '',
'PORT': '3306',
},
}
Run Code Online (Sandbox Code Playgroud)
对于仪表板,报告和各种其他应用程序,我想要做的是:
尝试连接:default_slave:default_slave如果可以使用,则使用default
也就是说,如果slave已启动,则从slave数据库本身获取报告,如果没有从master数据库获取报告.
Catch是,slave可以是up或down,我希望这可以动态选择哪个数据库用于获取报告,基于可更新性.
这可能吗 ?我可以预先测试连接并向前移动吗?
有了这个,我会在Master中写和sync_db,并且如果slave已启动,它总是从Slave读取.
需要一些解决方案/提示raw queries以及orm queries
路由器的概念看起来不错,但是奴隶的后备不可达,我不知道这种可能性.
UPDATE
如何进行MULTI-DATABASE
DATABASES
DATABASES = {
'default_slave': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'application',
'USER': 'root',
'PASSWORD': '',
'HOST': '',
'PORT': '3306',
},
'default': {
'ENGINE': 'django.db.backends.mysql', …Run Code Online (Sandbox Code Playgroud) mysql ×3
django ×2
php ×2
spring ×2
sql-server ×2
cakephp ×1
cocoa-touch ×1
codeigniter ×1
core-data ×1
java ×1
join ×1
jpa ×1
model ×1
objective-c ×1
python-2.7 ×1
spring-boot ×1
sql ×1
synonym ×1
transactions ×1