两个不同的网站能不能共用一个数据库?

我用rails做了一个网站,现在想用php再做一个不同的系统,将它们集成起来,用的数据是同一个mysql数据库的,请问数据访问会不会冲突?

其实“抛出异常的爱”已经把缓存的问题说清楚了,并不难理解。我另外举个我常用的例子:

假设A和B系统用的都是本机的缓存,互相之间没有同步机制。这时数据库里面有银行账号,账号里面的余额可以被A和B两个系统同时访问。A系统读取到余额是100元,放到了A系统的缓存里面给需要的请求用;B系统同时也读取了余额100元放到B系统的缓存里面给需要的请求用。这时A系统的用户消费了100元,A系统将数据库里面的余额扣减为0元,A系统缓存也改为0元(没有通知B系统),这时用户同时向B系统提交了100元的消费请求,B系统从缓存中看到余额是100元,就正常扣减进行消费,但实际上这个用户只有100元,因为缓存没有和A系统同步,所以造成了错账——这对涉及到钱的系统是致命的。

为了解决这种问题,我们就要设计缓存的同步机制,让某一个系统改变了数据后要通知共用数据库的其他系统,这个机制是比较麻烦的,而且比较耗费系统资源,所以我们就考虑让所有系统使用同一个缓存,避免互相之间的同步开销,这种集中式缓存的典型代表就是——Memcache

缓存....缓存.....缓存.....

这个跟你多开页面浏览页面有啥区别?

数据库只是提供原始的数据,不会影响带其他什么的
但是一般还是不这样用,当你在一个系统中update数据后,另一个系统也会变,
这样很容易出现数据异常。

只查询的话,肯定不会有问题。看你那情况,访问的人也肯定不多,也就不考虑性能问题,放心大胆的使用吧

当然 不能同时 访问了 就如同存钱取钱一个样子

:D

如果两个一样的web 系统 集群
集群需要解决的就是session同步问题
如果是hibernate或是 memcache 那样有二级缓存的系统
那么数据中的缓存就需要同步.

数据库只是用来存储数据的,不会有什么影响的。

不过你要把事务控制好,你用的一个库如果也是一个表的话,一个系统在修改数据另一个系统没同步数据。会有问题

对于数据库来说, 请求只按请求来分,不会按照“系统来分”

能否放到一起,是根据业务决定的

即使有更新,也是没有问题的,mysql本来就支持多线程更新,访问就更没问题了

关键还是在业务逻辑上是否允许

如果两个系统的数据本身要求同步, 那放一起还优于分开

对啊 这个市当然了

当同时访问数据库时,并不会出现问题,这就像不同的人对同一个银行帐户进行查询一样,不会出现问题的。

而不可能同时进行更改和添加的啊
这些方面可以看看关于数据库方面的书籍的
对你很有帮助 而且比较快的掌握

当然可以用同一个数据库。。。我公司总站和地区站就用的同一个数据库。。。但是如果再同用表的话就应该考虑下逻辑问题了。。。如果两边有不同步的逻辑是你就会陷入窘境。。。就像是双头蛇一个道理。。

可以是可以。
数据访问不会有冲突。

但如果两方面同时写,可能会有些问题,注意就是了,都是可以解决的。

可以共用一个数据库。两个系统同时修改同一条数据会存在一致性问题,也就是会冲突,需要用技术手段加以控制。

缓存也是有问题的,由于你用的开发语言不同,恐怕也只有Memcache这种集中式的缓存可以使用。也可以从业务逻辑的设计上避免缓存的数据不一致性。

总之可以这样用,但是要小心设计。

数据库只是一个数据源,以及作为储存数据的媒介吧,当然可以共用一个数据库了,但是我感觉还是自己用自己的数据库比较好

tryty

我只用过hibernate
对rails的orm不熟
如果想要部署两个应用
那么hibernate的缓存特别配置
比如A应用修改了某表字段
B应用的二级缓存由于没收到变更通知
所以会显示出未被修改样子.
有时工作流一个状态会被一个人同意二次.

有很多人说hibernate不适合大应用主要是不知道怎么配缓存同步....
你这种异构系统中所有的缓存点都查一下看看会不会发生这种事.

[code="java"]有很多人说hibernate不适合大应用主要是不知道怎么配缓存同步....
你这种异构系统中所有的缓存点都查一下看看会不会发生这种事.[/code]

我也是支持Hibernate不适合大应用这种观点的人之一。

Hibernate缓存同步并不难设置,Ehcache有明确的做法可以借鉴。关键在于它的同步机制带来的开销无法承受,试想几十台服务器互相发广播进行同步是多么大的资源损耗,这种损耗很难接受。所以大型应用还是建议使用封装后的Jdbc(例如JdbcTemplate和IBatis),集中式缓存。

显然是可以的,但是要注意数据的并发问题,比如给数据加个乐观锁。

看看大家的意见

你的两个应用的业务逻辑有没有交集 即会不会共用表,如果不会 首先考虑数据库性能的问题,两个应用的并发量是否会导致数据库资源耗尽。如果会共用表,那就要考虑脏数据、锁表、读写操作等问题 。

两个应用集成的时候共享session 。weblogic集群、IIS、apache 都具备这个。
如果是不同的应用服务器,实现起来会复杂些。 建议使用web service更容易些。

可以的,只是真的动起手来会很烦的www.7kkb.cc