❶ 数据是如何存储的
转自网友文章: 大型网站数据库优化
千万人同时访问的网站,一般是有很多个数据库同时工作,说明白一点就是数据库集群和并发控制,这样的网站实时性也是相对的。这些网站都有一些共同的特点:数据量大,在线人数多,并发请求多,pageview高,响应速度快。总结了一下各个大网站的架构,主要提高效率及稳定性的几个地方包括:1、程序
程序开发是一方面,系统架构设计(硬件+网络+软件)是另一方面。软件架构方面,做网站首先需要很多web服务器存储静态资源,比如图片、视频、静态页等,千万不要把静态资源和应用服务器放在一起。一个好的程序员写出来的程序会非常简洁、性能很好,一个初级程序员可能会犯很多低级错误,这也是影响网站性能的原因之一。
网站要做到效率高,不光是程序员的事情,数据库优化、程序优化这是必须的,在性能优化上要数据库和程序齐头并进!缓存也是两方面同时入手。第一,数据库缓存和数据库优化,这个由dba完成(而且这个有非常大的潜力可挖,只是由于我们都是程序员而忽略了他而已)。第二,程序上的优化,这个非常的有讲究,比如说重要一点就是要规范SQL语句,少用in 多用or,多用preparestatement,另外避免程序冗余如查找数据少用双重循环等。另外选用优秀的开源框架加以支持,我个人认为中后台的支持是最最重要的,可以选取spring+ibatis。因为ibatis直接操作sql并有缓存机制。spring的好处就不用我多说了,IOC的机制可以避免new对象,这样也节省开销。据我分析,绝大部分的开销就是在NEW的时候和连接数据库时候产生的,请尽量避免。另外可以用一些内存测试工具来做一个demo说明hibernate和ibatis谁更快!前台你想用什么就用什么,struts,webwork都成,如果觉得自己挺牛X可以试试用tapestry。用数据库也未必不能解决访问量巨大所带来的问题,作成静态文件硬盘的寻址时间也未必少于数据库的搜索时间,当然对资料的索引要下一翻工夫。我自己觉得门户往往也就是当天、热门的资料点击率较高,将其做缓存最多也不过1~2G的数据量吧,举个例子:◎ 拿网易新闻来说 http://news.163.com/07/0606/09/3GA0D10N00011229.html
格式化一下,方便理解:http://域名/年/月日/新闻所属分类/新闻ID.html
可以把当天发布的、热门的、流揽量大的作个缓寸,用hashtable(key:年-月-日-分类-ID,value:新闻对象),静态将其放到内存(速度绝对快过硬盘寻址静态页面)。通常是采用oracle存储过程+2个weblogic,更新机制也几乎一样每签发一条新闻,就会生成静态页面,然后发往前端的web服务器,前端的web都是做负载均衡的。另外还有定时的程序,每5-15分钟自动生成一次。在发布新闻的同时将数据缓存。当然缓存也不会越来越大,在个特定的时间段(如凌晨)剔除过期的数据。做一个大的网站远没有想象中那么简单,服务器基本就要百十个的。这样可以大大增加一台计算机的处理速度,如果一台机器处理不了,可以用httpserver集群来解决问题了。2、网络
中国的网络分南北电信和网通,访问的ip就要区分南北进入不同的网络。3、集群通常会使用CDN与GSBL与DNS负载均衡技术,每个地区一组前台服务器群,例如:网易,网络使用了DNS负载均衡技术,每个频道一组前台服务器,一搜使用了DNS负载技术,所有频道共用一组前台服务器集群。网站使用基于Linux集群的负载均衡,失败恢复,包括应用服务器和数据库服务器,基于linux-ha的服务状态检测及高可用化。
应用服务器集群可以采用apache+tomcat集群和weblogic集群等;web服务器集群可以用反向代理,也可以用NAT的方式,或者多域名解析都可以;Squid也可以,方法很多,可以根据情况选择。4、数据库因为是千万人同时访问的网站,所以一般是有很多个数据库同时工作的,说明白一点就是数据库集群和并发控制,数据分布到地理位置不同的数据中心,以免发生断电事故。另外还有一点的是,那些网站的静态化网页并不是真的,而是通过动态网页与静态网页网址交换做出现的假象,这可以用urlrewrite这样的开源网址映射器实现。这样的网站实时性也是相对的,因为在数据库复制数据的时候有一个过程,一般在技术上可以用到hibernate和ecache,但是如果要使网站工作地更好,可以使用EJB和websphere,weblogic这样大型的服务器来支持,并且要用oracle这样的大型数据库。
大型门户网站不建议使用Mysql数据库,除非你对Mysql数据的优化非常熟悉。Mysql数据库服务器的master-slave模式,利用数据库服务器在主从服务器间进行同步,应用只把数据写到主服务器,而读数据时则根据负载选择一台从服务器或者主服务器来读取,将数据按不同策略划分到不同的服务器(组)上,分散数据库压力。
大型网站要用oracle,数据方面操作尽量多用存储过程,绝对提升性能;同时要让DBA对数据库进行优化,优化后的数据库与没优化的有天壤之别;同时还可以扩展分布式数据库,以后这方面的研究会越来越多; 如果我来设计一个海量数据库,可能首先考虑的就是平行扩容性,原因很简单,我没有办法预估将来的数据规模,那我也就没有边界可言,因此,基本上首选dbm类哈希型数据库,甚至,对于实时性要求很高的数据库,可能会自行设计库。 当我们使用业务描述脚本、事务批处理机、目录服务、底层存取来划分一个数据库系统之后,其实,所谓的海量数据需求,也就不是那么难办到了。 嗯,这样还有一个额外的好处,就是由于平行扩容性很好,因此,前期可以以较低成本搭建一个简单的架子,后期根据业务量逐出扩容。这对很多企业来说,就是入门门槛很低,便于操作,且商业风险也小。MySQL比起动辄几十万美金,搭建豪华的Oracle平台,成本低多了。
❷ C/S的影院座位表情况怎样存进SQL server 2005里
影院座位分布不同。。。表设计也不同
可以弄成以下几张表
一张表存放座位的区域 例如A、B、C等
ID主键 QUYU
一张表存放座位的行关联到区域表
ID 主键 QUYUID HANGHAO
一张表存放座位的排关联到行表
ID 主键 HANGID PAIHAO
或者直接存放到一张表中
ID 主键 QUYU HANGHAO PAIHAO
如果有包厢的另设
❸ 跪求数据库存储过程详解!!
首先你要懂的sql语句,如果不懂,请先把这个学好再来学存储过程。
大部分存储过程的主要结构:
参数:即sql语句的条件,如select * from text where id=@id. @id就是参数。你在调用这个存储过程时就要传过来的数据。
复杂的存储过程结构:
触发器,游标.....这些就比较复杂点,通常是用来处理复杂的数据时使用。
触发器:简单点说就是一组存储过程一起执行。对了就过去,错了就返回。
其它的就要看你要怎么调用了,好好学吧
❹ 如何查看mysql数据库存储位置
第1步:
打开mysqml文件夹,显示的文件如下,然后找到my.ini文件,如图所示。
第2步:
选中my.ini文件,这时候点击鼠标右键依次选择”打开方式“然后选择”记事本打开“
第3步:
以记事本的方式打开my.ini文件后,按ctrl+f搜索”datadir“就可以找到你数据库的物理路径
第4步:
如果你想修改数据库文件的存储位置,可以直接在这里修改,如下图红框所示。
第5步:
按照上面所找到的路径,我们打开上面的路径的data文件夹,显示如下图。
第6步:
如果想对数据库进行搬迁,只需要复制”data“这个文件夹,覆盖新环境下的”data“文件就可以了。
❺ 如何在MySQL数据库中存储大量的位置信息
如何在MySQL数据库中存储大量的位置信息
mysql数据库文件一般是存在mysql的安装目录下制定文件夹,或者直接通过查看配置文件后确定其存储的目录。
❻ 数据库的4种状态是什么
Oracle10g数据库的4种存储形式
数据库的存在一定需要有永久性存储方式和介质。Oracle自然也不例外,在Oracle10g中,有4种存储形式,分别是操作系统文件,裸分区,自动存储管理,集群系统OCFS(RAC)。下面分别说一下这4种存储形式。 1 操作系统文件。 这种是大家最常用的方式了,也是非商业运行模式(比如开发或者开发阶段的测试环境)下最常用的形式。当大家安装Oracle的时候,如果选用了操作系统文件的存储形式,那么就会把Oracle的数据存储在操作系统中,以文件的形式存在。就好像我们玩某些单机版游戏,你的存档就是操作系统的文件一样。用文件形式存储数据,带来的优点就是易于数据库移动。比如你把Oracle的数据文件直接到一台电脑上,就可以很快复制出一个一样的数据库系统出来。在文件的读写的时候,操作系统通常会提供缓存形式进行读写,避免过多读写硬盘对磁盘造成很大伤害。所以用操作系统文件形式存储数据,等于先天性获得了操作系统的缓存功能。
2 裸分区。裸分区就是把数据库直接写在磁盘上,不再经过操作系统这一层,Oracle专门来对这个分区进行读写。因为没有了操作系统这一层,所以读写起来的速度和性能是质一般的飞跃的,在某些对Oracle读写非常频繁的数据库应用中,采用裸分区形式存储数据甚至可以提高30%以上的性能。当然,如果数据存储是采用的操作系统文件,如果在Unix下采用RAID对于文件读写操作频繁的情况下也是一个可以提高性能的手段。
3 自动存储管理。 自动存储管理通常也被称为ASM,是在Oracle 10g以后才提供的一种新的存储形式。这种存储形式貌似是前两种存储形式的折中。既不是用的host操作系统的文件系统,也不是裸分区的形式直接由Oracle读写。而是可以看作为一种Oracle特有的文件系统形式。在ASM上可以存储数据文件,控制文件,日志文件等等,在ASM中,这些也是以文件的形式存在的,只不过这个时候的文件格式是Oracle自有的ASM形式。在Linux中和ASM有点相似的就是LVM(逻辑Volume管理),也是可以看作是一种自有的新的文件系统形式。
4 集群系统OCFS(RAC)。RAC的全称是什么呢,就是Real Application Cluster,是一种在集群的环境下实现共享的一种数据库存储形式。在通常我们的数据库,如果是单机版的数据库,当数据文件磁盘不能访问,那么这个数据库就挂掉了。如果是集群共享数据库的话,其中一种方法就是在某个节点存放数据文件,其余的数据库都通过NFS或者Samba来进行共享,虽然数据库的数据处理能力得到了很大的提高,不过如果这个存储节点挂掉的话,同样数据库也就宕掉了。而OCFS则是一种无断点恢复的存储形式,在整体给人的感觉就是每台数据服务器都有自己的文件系统,但是这些文件系统又仿佛只是同一个文件系统,因为数据更新或者其他的操作都是很统一的。即使某台电脑挂了,其余的服务器照样运行,不会出现数据库的异常,而如果想新加入一台服务器也是很简单的事。特别适合于商用的7X24这种服务形式。
Oracle10g中的4种数据存储方式都介绍完了,我们最常用的自然是第一种形式,不过后面三种形式在商用环境下比较多。特别在大型商用对可靠性要去很高应用中,第四种RAC形式的使用是比较多的。当然,这里只是很简要的介绍了一下几个文件系统的概念。如果要仔细了解的话,当然是要好好查阅Oracle技术手册了。
❼ C/S的影院座位表情况怎样存进SQL server 2005里
应该不同的影厅座位情况不一样吧?如果是有不同影厅的情况,那么最起码应该有如下表和字段:
1. 影厅座位信息表:
ID(主键) 影厅ID(外键) 排号 座位号(或者使用排号+座号的方式如6.1就代表6排1号,两字段合并)
这个表应该基本上是静态的,因为影厅的座位信息基本不会动。
2. 电影场次表:
ID(主键) 电影ID 时间 影厅ID ……
3. 电影票售出情况表:
ID(主键,电影票号) 场次号(2表的主键) 座位号(1表的主键) ……
应该是点击某一场次的电影,才会出现你说的这个界面,根据数据库中2表和1表,可以先取出该影厅的所有座位情况并显示;其次根据2表和3表取出所有已售电影票,遍历刚才的座位,将已售出的座位换颜色即可。
当然这里只是给一个思路,具体实现可能还是比较复杂,要考虑的很多,权当一个参考吧。
❽ mysql数据库一个字段存放多种状态
数据库中定义个int型字段比如col
abc与或之后的结果赋值给col即可。
读取的时候直接读取。
&&可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false。
比如:
inta1=1,b2=2,c3=3;
System.out.println((a1==b2)&&(b2==c3));
结果即为:false
❾ 数据库中数据如何存储
数据库是一种文件系统
可以将数据导出为指定格式
❿ 数据库中数据如何存储
利用逻辑数据库
和物理数据库
来存储
其中
逻辑数据库主要包括表
,段,区,oracle数据块。物理数据块
包括
数据文件,联机重做日志文件等