某公司欲设计一个数据库以存储客户,商品和订货单的信息。每个客户包含客户代码(唯一),姓名,收货地址

作者&投稿:宗政逄 (若有异议请与网页底部的电邮联系)
大型电商用什么数据库~

oracle集群
Oracle RAC是业界最流行的产品。其架构的最大特点是共享存储架构(Shared-disk),整个RAC集群是建立在一个共享的存储设备之上的,节点之间采用 高速网络互连。在 Oracle RAC 环境中,每个 Oracle 数据块都被赋予一个(且只有一个)“主”Oracle RAC 节点。该 Oracle RAC 节点的全局缓存服务 (GCS) 负责管理对这些数据块集的访问。当其中一个 Oracle 节点需要访问某个 Oracle 数据块时,它必须首先与该数据块协商。然后,该主节点的 GCS 或者指示请求的 Oracle 节点从磁盘中获取该数据块,或者指示该Oracle 数据块的当前持有者将被请求的数据块发送到请求节点。Oracle 尝试跨所有 RAC 节点统一分发该数据块的所有权。在 Oracle RAC 环境中,数据块大致相等的所有节点都将被指定为主节点。(如果 Oracle RAC 节点数是 Oracle 数据块数的约数,则所有 RAC 节点都是具有同样数量的数据块的主节点。)



mysql集群
MySQL cluster和Oracle RAC完全不同,它采用Shared-nothing架构。整个集群由管理节点(ndb_mgmd),处理节点(mysqld)和存储节点(ndbd)组 成,不存在一个共享的存储设备。MySQL cluster主要利用了NDB存储引擎来实现,NDB存储引擎是一个内存式存储引擎,要求数据必须全部加载到内存之中。数据被自动分布在集群中的不同存 储节点上,每个存储节点只保存完整数据的一个分片(fragment)。同时,用户可以设置同一份数据保存在多个不同的存储节点上,以保证单点故障不会造成数据丢失。
MySQL cluster的优点在于其是一个分布式的数据库集群,处理节点和存储节点都可以线性增加,整个集群没有单点故障,可用性和扩展性都可以做到很高,更适合 OLTP应用。但是它的问题在于:1.NDB存储引擎必须要求数据全部加载到内存之中,限制比较大,但是目前NDB新版本对此做了改进,允许只在内存中加 载索引数据,数据可以保存在磁盘上。2.目前的MySQL cluster的性能还不理想,因为数据是按照主键hash分布到不同的存储节点上,如果应用不是通过主键去获取数据的话,必须在所有的存储节点上扫描, 返回结果到处理节点上去处理。而且,写操作需要同时写多份数据到不同的存储节点上,对节点间的网络要求很高。

分布式数据库拆分


数据库分片
Sharding 不是一个某个特定数据库软件附属的功能,而是在具体技术细节之上的抽象处理,是水平扩展(Scale Out,亦或横向扩展、向外扩展)的解决方案,其主要目的是为突破单节点数据库服务器的 I/O 能力限制,解决数据库扩展性问题。
把热度高的数据划分开来,使用配置刚好的硬件,提高访问速度,增强用户体验
把不同的用户的数据根据用户的id放到不同的数据库中,不同用户对应的交易数据也跟着到不同的数据库;之后可以把交易完成和正在交易的数据库分开。
一个全国经济信息系统,可以按照不同地区把不同数据放到不同数据库中,随着时间增加数据也会越来越大,到时还可以工具年份在重新划分数据库。
一个大中型的电子商的电子商务网站一定会遇到数据量巨大的问题,可以根据用户对象或者使用和被使用的数据进行分片。这样避免了在一个库中数据膨胀而带来的瓶颈。
在数据库分片时最好分到不同的服务器中,或者不同的存储中,避免磁盘竞争
数据库分片存在比较大问题就是人查询或者统计涉及到跨库就比较麻烦。特别是join时如果涉及到多个节点,将非常困难,应该尽量避免。



数据库水平分片

读写分离
读写分离架构利用了数据库的复制技术,将读和写分布在不同的处理节点上,从而达到提高可用性和扩展性的目的。
读写分离简单的说是把对数据库读和写的操作分开对应不同的数据库服务器,这样能有效地减轻数据库压力,也能减轻io压力。主数据库提供写操作,从数据库提供读操作,其实在很多系统中,主要是读的操作。当主数据库进行写操作时,数据要同步到从的数据库,这样才能有效保证数据库完整性。Quest SharePlex就是比较牛的同步数据工具,听说比oracle本身的流复制还好,mysql也有自己的同步数据技术。mysql只要是通过二进制日志来复制数据。通过日志在从数据库重复主数据库的操作达到复制数据目的。这个复制比较好的就是通过异步方法,把数据同步到从数据库。
主数据库同步到从数据库后,从数据库一般由多台数据库组成这样才能达到减轻压力的目的。读的操作怎么样分配到从数据库上?应该根据服务器的压力把读的操作分配到服务器,而不是简单的随机分配。mysql提供了MySQL-Proxy实现读写分离操作。不过MySQL-Proxy好像很久不更新了。oracle可以通过F5有效分配读从数据库的压力。
上面说的数据库同步复制,都是在从同一种数据库中,如果我要把oracle的数据同步到mysql中,其实要实现这种方案的理由很简单,mysql免费,oracle太贵。好像Quest SharePlex也实现不了改功能吧。好像现在市面还没有这个工具吧。那样应该怎么实现数据同步?其实我们可以考虑自己开发一套同步数据组件,通过消息,实现异步复制数据。其实这个实现起来要考虑很多方面问题,高并发的问题,失败记录等。其实这种方法也可以同步数据到memcache中。听说oracle的Stream也能实现,不过没有试过。
通过ebay读写分离的结构图,通过Share Plex 近乎实时的复制数据到其他数据库节点,再通过F5特定的模块检查数据库状态,并进行负载均衡,IO 成功的做到了分布,读写分离,而且极大的提高了可用性。目前读写分离技术比较多,比较有名的为amoeba,有兴趣的同学可以研究下。

数据库缓存
读写分离现在应用非常广泛,特别是时国内外大型网站,都使用的非常多,很多都是自己研发缓存系统,淘宝还开源了Tair系统,有兴趣的可以研究下。比较有名的是memcached使用memcached最好的可能算facebook了。通过memcached分担读的操作,把常用的对象数据存储到memcached中,当有读操作过来时先访问memcached如果memcached没有该数据再从数据库获取,同时把数据放到memcached中,下次访问就可以直接访问memcached了。



有一次在和一个朋友聊天时他们正在着手在线文档系统架构设计,由于文档访问压力非常大,每次请求数据库也非常大,由于大量的的文档数据在服务端和客户端传输,会经常造成网络堵塞。我建议他可以把文档分片,减少一次性大文件传输。再根据文档热度把一些文档保持到缓存中。其实文档也好,数据库也好,很多方法只要根据业务要求也可以达到异曲同工的之效。

建立电子商务网站,最主要的是要能与访问者互动。而一个互动网,它必须是由非静态网页(html)来完成,这种可以交互的动态网页一般是由ASP、PHP、JSP、CGI、等语言写的,它们都需要有一个像ACCESS、 MS-SLQ、 My-SQL等数据库来存储访问者的交互信息,也就是说一个电子商务网数据库

将表分为两类

(1)基础信息表,包含:

客户信息表、商品信息表

(2)关联信息表,包含:

订单信息表、订单详情表、收货地址表

 

其中:

一条客户信息,可以对应多条收货地址;

一条客户信息,可以对应多条订单信息;

一条订单信息,可以对应多条订单详情信息;

一条商品信息,可以对应多条订单详情信息;

 

表关系见下图:



3NF范式数据库
R1: 客户代码(主键),客户名, 信贷额服, 结存, 回扣。
R2: 地址(主键), 客户代码(外键)。
R3: 客户代码, 收货地址, 订单日期, 订单商品代码 (4个组合为主键),数量, 已发数量。
R4: 商品代码(主键),商品名, 生产厂商, 实际存货量, 最低存货量。


某公司欲设计一个数据库以存储客户,商品和订货单的信息。每个客户包含...
(1)基础信息表,包含:客户信息表、商品信息表 (2)关联信息表,包含:订单信息表、订单详情表、收货地址表 其中:一条客户信息,可以对应多条收货地址;一条客户信息,可以对应多条订单信息;一条订单信息,可以对应多条订单详情信息;一条商品信息,可以对应多条订单详情信息;表关系见下图:...

设计一个面向财务分析的多维数据模型
一个完整的企业财务模型包括三张表:资产负债表、利润表、现金流量表。这三张表相互联系,互相影响,构成了对一个企业财务运营的完整模拟。通过对模型参数的调整,可以对企业的各种运营状况进行研究,从而对现金流和估值有深入的分析。在建立模型之前,首先要对会计准则和这三张表的内在关系深入了解。我对...

设计一个表示公司员工的数据库,至少包含8个属性,写出属性名称,数据类型...
create table emp(empno number(10) primary key, --员工编号 gender varchar2(4), ---性别 ename varchar2(30),--员工姓名 job varchar2(30),--工作 hiredate number(10),--入职时间 sal number(10),--工资 comm number(10),--福利 deptno number(10),--部门编号 )

详解数据指标体系如何从设计到落地
数据指标有别于传统意义上的统计指标,它是通过对数据进行分析得到的一个汇总结果,是将业务单元精分和量化后的度量值,使得业务目标可描述、可度量、可拆解。数据指标需要对业务需求进行进一步抽象,通过埋点进行数据采集,设计一套计算规则,并通过BI和数据可视化呈现,最终能够解释用户行为变化及业务变化。常用的数据指标有PV...

数据库如何设计
6.数据库的运行和维护 数据库设计通常分为6个阶段1分析用户的需求,包括数据、功能和性能需求;2概念结构设计:主要采用E-R模型进行设计,包括画E-R图;3逻辑结构设计:通过将转换成表,实现从E-R模型到关系模型的转换;4:主要是为所设计的数据库选择合适的和存取路径;5数据库的实施:包括编程、测试和试运行;6数据库...

关于一个数据库的设计,公司员工请假流程(员工表,请假申请表,审批流程表...
角色表:角色分类(角色ID、角色名)请假申请表:请假流水号、员工ID、申请日期、假期开始日期、假期天数、当前状态(申请-》一审-》2审-》批准\/未批准)请假流程表:请假流水号、审批人,审批日期,审批结果 如果功能在强点的话,可以加上审批限制日期,超限制没进行审批,自动标为为批准、自己可以在进行...

设计一个公司职员的数据结构,并使用结构体指针数组存储职员信息_百度...
int age1;int age2;double sum=0;printf("输入年龄范围(中间用‘,’隔开):");scanf("%d,%d\\n", &age1, &age2);if (age1>age2){ i = age1;age1 = age2;age2 = i;} for (i=0; i<num; i++){ if (company[i] != NULL && (company[i]->age) >= age1 && (...

某公司要设计一个能装12罐牛奶的长方形盒子为圆柱体底面直径5厘米高10...
这个其实就是12罐怎么排列的问题,可以是12个一排;也可以是6罐一排,还可以是4个一排。根据这三种排列方法,会得出三种不同的长、宽、高。你根据数据分别计算出包装盒的表面积,就可以了。

求教公司的数据库构建有哪些要素?
数据库设计(Database Design)是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,使之能够有效地存储数据,满足各种用户的应用需求(信息要求和处理要求)。在数据库领域内,常常把使用数据库的各类系统统称为数据库应用系统。一、数据库和信息系统(1)数据库是信息系统的核心和基础,把信息系统中...

请设计一个图书阅览室的数据模型
数据项组成: ReaderName + Password + BookID 数据流量: 50 次 \/ 日 高峰流量: 100 次 \/ 日 1.2 系统设计 1.2.1 系统功能设计 “图书馆管理信息系统”的主要功能有:图书目录检索、网上图书预定、图书借阅、电子出版物借阅、图书采编、读者留言和系统维护等。系统功能如图 1 - 13 所示。 图1 - 13 图书...

望谟县15660441178: 某公司欲设计一个数据库以存储客户,商品和订货单的信息.每个客户包含客户代码(唯一),姓名,收货地址 -
励筠头孢: 将表分为两类 (1)基础信息表,包含:客户信息表、商品信息表 (2)关联信息表,包含:订单信息表、订单详情表、收货地址表 其中:一条客户信息,可以对应多条收货地址;一条客户信息,可以对应多条订单信息;一条订单信息,可以对应多条订单详情信息;一条商品信息,可以对应多条订单详情信息; 表关系见下图:

望谟县15660441178: 公司要用数据库存放客户资料,请问那一种现在比较好用呢? -
励筠头孢: 用access小型的公司用的,公司大了大型的数据库sql之类的.但是数据库不是那么好用的用到大型数据库一般要专业的人员管理,如里要互连网上看得到那就要更专业的人管理,这还有一个网络安全问题,不然一不小心你的数据库就要会人家黑了.一般这样的有专业的维护网站的. 数据库有数据库的语言的.

望谟县15660441178: 怎样建1个SQL Server版本数据库,基本内容为用户基本信息,包含字段为 :用户编号、用户名称、所属部门.. -
励筠头孢: --建库 create database bbs on primary( name=bbs_mdf, filename='E:\作业\database\bbs.mdf',--数据库保存的路径 size=10mb, maxsize=unlimited, filegrowth=15%) log on( name=bbs_ldf,filename='E:\作业\database\bbs.ldf',filegrowth=15%)...

望谟县15660441178: 如何建立客户数据库 -
励筠头孢: 你可以使用一个小型的信息管理系统,该系统就可以轻松的帮你管理客户信息.

望谟县15660441178: 客户数据库建立 -
励筠头孢: 你需要上一款软件来维护公司的客户资料.CMS,客户管理系统. 建议公司花点钱.让人来做.

望谟县15660441178: 数据库设计:设计一个软件公司关于客户的需求提交、技术处理、测试发布、反馈跟踪系统所需要的的数据库. -
励筠头孢: 客户表t_customer,客户ID设为主键,其它字段如客户名称等按需设计 客户需求表t_request,包含需求ID和此需求对应的客户ID,需求ID设为主键,其它字段如需求描述,提交时间等 需求流程表t_workflow,包含流程ID和此流程对应的需求ID,流程ID设为主键,其它字段如流程类型,处理时间等

望谟县15660441178: 数据库设计技巧是什么? -
励筠头孢: 数据库设计包括应用与设计,重在设计.而数据库技术仅是应用,重在应用.就难度而言,其实三级并不比二级难多少.

望谟县15660441178: 怎样设计一个好的数据库 -
励筠头孢: 数据库设计(Database Design)是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,使之能够有效地存储数据,满足各种用户的应用需求(信息要求和处理要求).在数据库领域内,常常把使用数据库的各类...

望谟县15660441178: 企业的数据库设计的一般步骤 -
励筠头孢: 我没做过项目,做过毕业设计. 首先是规划好这个数据库需要什么表,每个表之间的关系. 根据需求分析,将这些在头脑中形成的属性关系画成形象的E-R图. 然后根据这些图开始设计数据库中的表,确定需要哪些表,表里需要什么字段, 还...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网