我正在创建一个数据库和一个项目。在这个项目中,我们将创建不同的公司。我们有两个创建数据库的选项。
1) 为所有公司创建一个公共表,并将所有信息保存在一个表中。假设公司的每日记录包含所有公司的数据。假设一个公司有100000条记录,而我们有1000家公司,那么这个公司的每日记录将有100000*1000条记录
2) 为每个公司创建单独的db表,这样他们的表将是1000个公司每日记录表,每个表将有100000条记录。
哪个数据库性能会好,
我们应该更喜欢哪种数据库sql语言?
谢谢
我正在创建一个数据库和一个项目。在这个项目中,我们将创建不同的公司。我们有两个创建数据库的选项。
1) 为所有公司创建一个公共表,并将所有信息保存在一个表中。假设公司的每日记录包含所有公司的数据。假设一个公司有100000条记录,而我们有1000家公司,那么这个公司的每日记录将有100000*1000条记录
2) 为每个公司创建单独的db表,这样他们的表将是1000个公司每日记录表,每个表将有100000条记录。
哪个数据库性能会好,
我们应该更喜欢哪种数据库sql语言?
谢谢
3条答案
按热度按时间ozxc1zmp1#
1) 如果您为每个公司创建单独的数据库,那么您的记录将被组织起来。但是如果你的项目同时与所有公司打交道,那么你必须频繁地切换你的连接。
2) 如果您为所有公司创建一个数据库,您也可能只需添加一个额外的“company”表,其中包含可以用作外键的所有公司,例如“employee”表,以将员工与特定公司分开。。。但由于它的形式不是很有条理,记录也很复杂。
正如你提到的,每天的记录可能有几十亿个,我建议你使用单独的数据库,这肯定会节省搜索,查询时间,这是最重要的方面。。。
-->我想你可以用mysql来管理你的记录。
谢谢你
ttp71kqs2#
我不建议为每个公司创建一个表,因为:
你怎么知道会有多少公司?
当您有一个新公司时,您可能需要在数据库中创建一个新表,并手动更新您的应用程序代码。它可以自动完成,但不是一件容易的事
因为您现在处于早期状态,所以可以使用传统的关系数据库方式。那是对一个
company
表acompany_record
table。您可以在以后发生性能问题或有空闲时间进行优化时担心性能问题xqk2d5yq3#
在对如何插入和查询数据有了一些想法之前,不要为大型数据集设计模式。
你需要避免扫描一亿(1000万)行才能得到答案;这将是痛苦的缓慢。这意味着索引。
nosql意味着没有索引,或者您必须自己构建索引。如果有一个真正的rdbms为您做如此繁重的工作,您会过得更好。
如果按公司划分为表、数据库、分区或碎片:
今天有1000张table,明天有1123张。
任何跨公司的操作都将是困难和缓慢的。
使用1000个表/dbs/partition,尤其是shard,效率很低。
我选一张“大”(但不是“大”)table,上面有
SMALLINT UNSIGNED
(2字节)列company_id
.既然您进入了“数据仓库”领域,那么就会想到摘要表。
你会删除“旧”数据吗?在大table上,这是另一件需要担心的事情。
每天插入1000行没有问题(1000/秒是另一回事。)