0 0

怎么设计数据库更佳合理?0

就是做一个考勤系统,比如很多公司都是用一个考勤系统的后台(java做的后台),那么数据库也是同一个数据库,只是在存取数据时用每个公司有编号区分,这样的话,时间长了会产生很多数据,这样会不会影响访问效率?应该怎么设计数据库?是不是 应该分开存放?每个公司建一个数据库存啊?有没有好的建议?(目前数据库是mysql)
2014年4月28日 11:02

12个答案 按时间排序 按投票排序

0 0

我给你的方案:
前端用nginx + keepalived 做个反向代理集群,避免单点。
应用服务器:tomcat 集群 + memcached Sesseion共享
数据库:应用层做数据路由,不同公司走不同的数据库连接。根据系统容量决定是否拆库,拆库对应用层无影响,只改对应的连接就行。对于大客户可以单独部署,重点保障。

2014年5月28日 19:23
0 0

分库,一定要分库,甚至要隔离部署。
这根本就不是查询速度快慢的问题。
有没有考虑过:如果只部署一套应用,一个数据库。怎么保证可靠性?
出点问题所有的公司都不能正常考勤?客户会骂死你们。


2014年5月28日 19:08
0 0

    无论设计什么的时候,首先需要考虑下每张表的内容,日产生的数据量。
    就拿你这个来说吧,作为一个操作型数据库(相对数据仓库做分析而已),就如hufangxian 说的那样,无非是按照三范式或者为了方便,偶尔增加一两个冗余字段设计表结构,对于公司、员工这种字典表,数据量都不是很大,而且随着你业务的增长,数据量的增长也比平缓的情况,一张表就足够了,只要做好维护Key和查询字段的索引就能满足日常维护需要了。剩下的,你无非担心的是打卡日志表,每天会产用户量M的N倍日志记录;正常情况下,这个N会在2~6之间,不会太大。因此可以认为每天的日志量其实在M数量级。
    到底要不要搞分表或分区呢?这就取决于上边提到的你的真实用户量M了。假如你做的非常成功,用户量达到了百万级,其实每天的日志量也就在百万到千万级这么一个水平。假使你每天要在前一天日志基础上统计分析每个用户的打卡时间及漏打卡情况,这时最好是按天进行分表,将半年前的日志从线上数据库挪到备份库或者数据仓库。将线上库表数据量控制在千万级以内,Mysql完全是可以胜任的。至于要不要按公司再做拆分,我是认为没那必要,原因是每个公司的员工都在一个小的数量范围,一般大公司也不会超过5w,根本没必要再拆了。查询效率方面,完全可以通过公司ID+员工ID方式建立联合索引来解决查询效率问题。

2014年5月12日 23:11
0 0

这个如果真的要求可以按照公司编号做个分区,然后再做个读写分离,像这样的考勤系统应该就没啥问题了。

2014年5月10日 22:08
0 0

10亿条的数据库也能有很好的访问效率。

1w人的考勤,每天2-4次,2w-4w条记录,4w * 360 * 10 = 1.45亿条记录。

所以LZ纯粹是杞人忧天。

2014年5月08日 15:49
0 0

一般的小系统不用分库这么夸张吧,我觉得分表基本上就可以接受了,先横着拆,把记录按时间拆到不同的表,旧记录查询几率是会很低的。还不行再竖着拆,按公司拆到多个表里面去。

2014年5月06日 11:41
0 0

不说数据库设计 方面的,只是考勤的话,你们库里能有上亿条数据吗?明显不可能嘛,而对大多数的数据库产品来说,单表几千万条都不是什么问题,你所考虑的效率其实大可不必。除非你想着说什么优化之类的,那就另当别论了。

2014年4月30日 22:29
0 0

数据量多可以分表,这个问题,你最好把系统预计的数据量上限说一下。

2014年4月30日 15:47
0 0

公司表(公司ID,公司名称等等)
员工表(员工ID,公司ID,员工姓名,工号等等)
考勤表(考勤ID,员工ID,刷卡时间等等)

2014年4月29日 15:43
0 0

建议的方式是以公司编码为单位,建立数据库(比如有的公司人员比较少,可以通过调整数据库服务器性能做到成本最优,也可以做数据库与公司建立一对多的关系,毕竟一些公司比较小,可以合并存储),由于跨公司的查询(对应数据库实际上是多库的合并查询)是极少的,所以个人觉得这样做比较简单。

具体的做法建议:
。做一个数据库中间件的选型,比如阿里的Corba(TDDL是比较理想的,但是貌似没有完全开源)
     . 也可以考虑不做选型,只要做到数据源可配置就可以了,前提是没有多库联合查询的需求
。Service层提供透明的服务给上层。
。数据源做到可配置。

优缺点:
    优点:业务量是可以线性扩展的;
    缺点:多库查询比较复杂。

2014年4月29日 08:41
0 0

你们考勤系统好牛逼啊,可以给多个公司同时使用?而且人家还把数据交给你管理?

2014年4月28日 13:15
0 0

我觉得应该以公司为字段分开存储,不需要建立那么多数据库

2014年4月28日 11:47

相关推荐

    20个数据库设计最佳实践

    - **实践要点**:在项目初期花费更多时间在数据库设计上,可以大大节省后续的维护成本。 - **实现技巧**:建立良好的设计习惯,持续学习最新的数据库技术和最佳实践。 通过遵循以上20个最佳实践,不仅可以提高...

    数据库设计经验,讲解如何设计数据库

    数据库设计不仅是一项技术活,更是一种艺术。理解业务、制定规范、选择合适的工具、学习经典案例、不断实践和优化,都是成为优秀数据库设计师的必经之路。只有这样,才能确保设计出的数据库能够为企业的信息系统提供...

    浅谈数据库设计技巧-程序员应该读的

    通过学习和实践这些数据库设计技巧,程序员能够更好地应对各种复杂的业务场景,构建出高效、可靠的数据存储系统。在实际工作中,不断总结经验,持续学习新的数据库技术和最佳实践,是保持竞争力的关键。

    数据库设计指南-数据库设计教程

    2. **ER模型(实体-关系模型)**:这是设计数据库的起点,用于表示实体(如用户、产品)及其之间的关系。ER图描绘了实体、属性和联系,帮助我们清晰地可视化数据模型。 3. **范式理论**:第一范式(1NF)、第二范式...

    数据库设计教程(第二版)pdf

    根据提供的信息,我们可以推断出这是一本关于数据库设计的教程书籍,并且是其第二版。由于具体的页面内容并未给出,我们将基于标题、描述及标签中的信息,对可能涉及的关键知识点进行归纳总结。 ### 数据库设计的...

    数据库设计开发规范-阿里.pdf.zip

    数据库设计与开发规范是软件开发过程中的重要环节,特别是在大型企业如阿里巴巴这样的环境中,严谨的数据库设计规范能够确保系统的高效、稳定和可扩展性。以下是对"数据库设计开发规范-阿里.pdf.zip"文件内容的详细...

    数据库设计文档(PDF)

    这份“数据库设计文档(PDF)”提供了一个详细的学习资源,涵盖了数据库设计的基础理论、最佳实践和实际案例,对于理解数据库设计理念和技术具有重要意义。 首先,数据库设计通常包括需求分析、概念设计、逻辑设计...

    数据库设计文档大全经典

    数据库设计是IT行业中至关重要的一个环节,它直接影响到系统的性能、稳定性和可扩展性。...通过深入学习和实践,开发者可以更好地理解和掌握数据库设计的核心技巧,从而构建出高效、稳定的数据库系统。

    java登陆框设计连接数据库

    对于初学者或需要快速搭建界面的应用而言,Swing由于其成熟度和广泛的社区支持,可能是更佳的选择。然而,如果追求现代感、更丰富的UI组件以及更高级的动画效果,JavaFX则更加合适。在这两个框架中选择一个来构建...

    数据库设计pdf

    5. **性能优化**:在设计阶段就需要考虑数据库的性能,包括合理选择数据类型、索引策略、查询优化等。例如,适当使用聚集索引和非聚集索引可以提升查询速度。 6. **安全性与权限管理**:数据库设计中,安全性和权限...

    公司数据库设计规范,提供数据库设计的项目经验

    通过阅读"XX公司数据库设计规范.doc"文档,可以更详细地了解该公司在这些方面是如何操作的,包括具体的实施细节、最佳实践和案例分析,这对于提升个人或团队的数据库设计能力极具价值。务必仔细研读,结合实际工作...

    DB2 for zOS DB2 数据库设计取得最佳性能的准则

    【DB2 for z/OS 数据库设计最佳实践】 在IBM的大型主机系统z/OS上,DB2数据库的性能优化是关键任务,因为早期的设计决策会显著影响应用...遵循这些准则,开发者可以更好地设计出满足业务需求并具备出色性能的数据库。

    点菜系统数据库设计

    点菜系统数据库设计的核心知识点: ### 一、系统概述与目的 点菜系统数据库设计针对的是具有一定规模和经济条件的大型酒店...通过精心设计和实施,可以显著提升酒店的服务质量和运营效率,为客户带来更佳的用餐体验。

    SQL数据库设计实力=实训报告

    在学习和实践中,应注意遵循数据库设计的最佳实践,比如避免数据冗余、确保数据一致性、合理规划数据库的扩展性,以及保持良好的数据库性能。此外,理解数据库优化、事务管理和安全性控制也是数据库设计不可或缺的...

    20个数据库设计最佳实践.pdf

    数据库设计是信息系统构建的核心环节,它直接影响到系统的稳定性和效率。以下是对《20个数据库设计最佳实践》中提到的一些关键点的详细说明: 1. **明确、统一的标识和列名**:使用清晰易懂的命名规范可以提高代码...

    SQL数据库设计经验.doc

    5. 预见未来需求:设计数据库时,不仅要满足当前需求,还要考虑未来可能的变化。然而,也不能忽视历史经验,避免重蹈覆辙,比如过度设计或设计过于复杂。 第2部分 - 设计数据库表: 这部分主要关注表内字段设计和...

    数据库设计技巧指南(PDF)

    5. **性能优化**:数据库设计应考虑查询效率,包括合理使用索引、避免全表扫描、优化查询语句等。此外,了解数据库的缓存机制和事务处理也是提升性能的关键。 6. **安全性与权限管理**:数据库设计要确保数据安全,...

    数据库设计资料

    设计数据库时,需要考虑数据的结构、数据的存储方式以及如何确保数据的安全和完整性。 数据库设计通常分为四个主要阶段:需求分析、概念设计、逻辑设计和物理设计。 1. 需求分析:这是设计的起点,需要收集并理解...

    SQL Server数据库设计指南

    《SQL Server数据库设计指南》是一本深入探讨数据库设计的实用手册,主要针对SQL Server平台,旨在帮助读者理解和掌握创建高效、稳定、可扩展的数据库的关键原则和技术。在数据库设计过程中,考虑的因素众多,包括...

Global site tag (gtag.js) - Google Analytics