【问题标题】:Scale DB tables horizontally or vertically for new webapp? (MySQL / SQLite)为新的 web 应用水平或垂直扩展数据库表? (MySQL / SQLite)
【发布时间】:2013-04-07 03:49:25
【问题描述】:

我正计划开发一个简单的门户,供我的供应商登录并查看他们的销售历史。 (这仅用于查看目的,因此我将 SQLite 视为 goto,因为此时没有写入/锁定问题 - 但它可能会变成 M​​ySQL)

门户的性质意味着用户权限将规定 VendorA 只能查看 VendorA 的库存/销售/等,而不能查看其他任何人的。我是 webapp 开发的新手,所以 我不确定用表扩展数据库是否更明智,以便每个供应商获得他们自己的 tbl_vendor_a_sales、tbl_vendor_a_inventory、tbl_vendor_b_sales 等的新表(?)或者我是否应该三个大表,其中存储了我的所有供应商信息(tbl_orders、tbl_sales)?

300 家供应商中的每家都可能拥有不到 30,000 条销售记录和 50-20 万条库存记录。

我认为采用 2-3 个大表的后一种路线是最佳选择,因为如果需要,我可以更轻松地进行任何汇总报告 - 但我仍然想知道我走在正确的轨道上.

【问题讨论】:

  • 你为什么要使用 SQLite 来做这样的事情?维持这将是一场噩梦。
  • @tadman 只读 SQLite 数据库将比 MySQL 稍快。我不明白你关于可维护性的评论。
  • 如果我决定向供应商收取这项服务的费用,我是否必须获得 MySQL 许可?目前它肯定是只读的——也许以后我会写一些东西,但现在我需要保持简单才能让它起步。
  • 如果您需要汇总报告,那么每次您想要运行这样的报告时都需要将不同的数据库合并到一个表中时,您会很头疼。 “可维护性”:如果您有不同的数据库文件/表,则必须在许多地方进行 DDL 更改。有(昂贵的——至少与免费软件相比)数据库解决方案可以满足这一要求。该术语是虚拟专用数据库。 Oracle 和 PostgreSQL Advanced Server(不是社区版)都提供了强大的方法,可以让用户只访问属于他们的行。

标签: mysql sqlite web-applications


【解决方案1】:

像这样对表进行分区作为一种优化可能是有意义的,但只要您没有性能问题,并且没有实际测量出明显的改进,这还为时过早。

如果您真的关心安全性,您可以将每个供应商的数据放入单独的数据库文件中,将供应商登录与 Web 服务器的用户管理集成在一起,并使用文件权限仅允许一个供应商访问每个文件。 但是,您的虚拟主机不太可能允许您这样做。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-18
    • 2012-05-22
    • 1970-01-01
    • 2013-12-28
    • 2012-04-05
    • 1970-01-01
    • 2016-01-16
    • 1970-01-01
    相关资源
    最近更新 更多