小编AJB*_*AJB的帖子

如何确定每天的 MySQL 查询数?

我正在调查从 MySQL 到 NoSQL DBaaS 的大转变,但在尝试预测费用时遇到了问题。从本质上讲,我无法弄清楚我当前的 MySQL 服务器每天处理多少查询来尝试估计我将与Cloudant一起使用的请求数量,每 100 个 PUT、POST 和 DELETE 收费 0.015 美元,每 500 个 GET 收费 0.015 美元和头。

我发现了很多关于使用SHOW STATUSSHOW GLOBAL STATUS来获取 MySQL 自己收集的统计信息的信息,但没有时间框架参考。

例如,SHOW GLOBAL STATUS 返回以下内容:

Queries                           | 13576675
Run Code Online (Sandbox Code Playgroud)

这很好,除了我不知道包含该数字的时间范围。什么时候有 1300 万次查询?每月?年?自古以来?

MySQL 文档并没有详细说明太多:

查询

服务器执行的语句数。与 Questions 变量不同,此变量包括在存储程序中执行的语句。它不计算 COM_PING 或 COM_STATISTICS 命令。这个变量是在 MySQL 5.0.76 中添加的。

在此先感谢您的帮助。

mysql

17
推荐指数
2
解决办法
2万
查看次数

如何使用 MongoDB 创建高效、可扩展、多租户的数据层?

我正在为我即将推出的 Project Mangement 应用程序(作为示例)研究架构,我正在寻求明确如何最好地设计 MongoDB 数据层,特别是多租户。该应用程序将有多个“子应用程序”(例如日历、任务列表、媒体、团队等),每个子应用程序将映射到数据库中的一个集合(中央数据库或它自己的项目数据库)。

数据库服务器 == 副本集。

问题

  1. 我应该使用一个巨大的、集中的数据库来存储所有应用程序数据,还是为系统上创建的每个项目创建一个单独的数据库?
  2. 如果我选择单独的数据库策略,考虑到数据库“自然地”分散在多台服务器上,从而“自然地”将负载分散到多台服务器上,是否不需要对数据层进行分片?该应用程序将包含告诉它哪个服务器访问任何给定项目的数据的逻辑。
  3. 为每个项目使用单独的数据库是否会给我更好的性能(假设要找到任何给定的文档,Mongo 只需要在单个项目数据库中搜索最多几千个文档,而在一个巨大的集中式数据库中可能会搜索数百万个文档)?
  4. 是否有可能减少 32M 的 MongoDB 数据库的最小占用空间?我已经阅读了--smallfiles 手册中的文档,但这并没有真正回答我的问题。这是最低要求吗?
  5. 如果任何给定的项目收到大量流量,并成为“嘈杂的邻居”,解决方案是否只是启动一个新的数据库服务器并将该项目移动到新服务器?还是将包含嘈杂邻居的数据库服务器分片以提高该服务器的性能是一种更好的方法?
  6. 在清理任何给定已删除项目的空间和/或“收缩包装”每个数据库以尽量减少其占用空间与存储在任何给定项目数据库中的实际数据量接近时,我有哪些“维护”问题?
  7. 对于必须在所有项目数据库中“推出”的数据“模式”的未来更改,我应该注意哪些问题?鉴于 Mongo 是“少模式”,假设如果我想向任何给定的集合添加一个新的“字段”,我只会在应用程序逻辑中这样做,而不必对数据库进行任何更新,是否正确?他们自己?
  8. 我将使用哪些 MongoDB“工具”来获取有关任何给定数据库服务器的当前“状态”的信息?
  9. 我应该注意的任何给定数据库服务器上可以容纳的数据库数量是否有任何限制?
  10. 单个数据库策略如何影响备份?在跨多个数据库服务器备份(到 S3 进行灾难恢复)多个数据库时,我应该注意什么问题?

应用程序堆栈

Ubuntu 12.04 LTS
Nginx
node.js
express.js
MongoDB
Run Code Online (Sandbox Code Playgroud)

当前的工作策略

我目前的工作策略是使用一个数据库来存储更高级别的“全局”数据,例如用户、通知、消息、使用情况和首选项。然后为系统上创建的每个项目创建一个新数据库。

由于许多原因,这似乎是理想的方法:安全性(每个数据库都有自己的凭据)、灾难性恢复(因为如果一个数据库服务器宕机,整个应用程序不会宕机)和性能(我认为,因为 Mongo 会搜索更少的文档以找到它正在寻找的文档)。

该应用程序将包含自动检测任何给定 DB 服务器上的可用空间并在下一个可用 DB 服务器上创建新 Project 数据库的逻辑。

根据MongoHQ 提供的这篇文章,这是“最佳”策略,尽管它会消耗大量存储空间。特别是因为每个数据库即使在空的情况下也占用 32M。如果您提供的“免费增值”应用程序获得了 Techcrunch 的支持,那么使用 MongoHQ 之类的服务会变得非常昂贵。

因此,在 ProjectManager 在系统上有三个项目的情况下,我的数据层将如下所示:

ProjectManager
  Users
  Notifications
  Messages
  Usage
  Preferences

Project01
  Calendar
  Tasks
  Media
  Team

Project02
  Calendar
  Tasks
  Media …
Run Code Online (Sandbox Code Playgroud)

mongodb multi-tenant

7
推荐指数
1
解决办法
9581
查看次数

标签 统计

mongodb ×1

multi-tenant ×1

mysql ×1