php - 我应该如何管理这个数据库?

标签 php mysql mongodb redis database

我接手了一个客户项目,该项目要求我设置一个后端服务器和 API (PHP),以便与 iOS 应用程序进行通信。我无法详细介绍该应用程序,但在大多数情况下,它是基于社交的,因此要求我在收到请求后不断更新数据库。

目前,该数据库由三个表组成(第四个表即将征求意见):用户、 field 和队列。目前,每当我有请求时,我只是从数据库中检索相关数据,但我开始怀疑是否需要开始实现方法来提高数据库的“可扩展性”或使用(类似于) memcachd 或 Redis 来改进某些东西或其他。由于该应用程序是社交应用并且可能拥有庞大的用户群,因此这是必要的吗?我是否正在使用性能良好的数据库来处理每秒数百个请求,或者我应该切换到另一个数据库?

提前致谢,

最大。

P.S 请随意拆开我的结构,将其放在帖子中,以防有人有兴趣看一下!

CREATE TABLE `Queues` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `userID` int(11) NOT NULL,
  `Creation_Date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `Last_Updated` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
  `venueID` int(11) NOT NULL,
  `Wait_Time` int(10) NOT NULL,
  `Line_Length` int(10) NOT NULL,
  `Note` varchar(250) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=13 ;


CREATE TABLE `Users` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `First_Name` text NOT NULL,
  `Last_Name` text NOT NULL,
  `Username` text NOT NULL,
  `Password` text NOT NULL,
  `Email` text NOT NULL,
  `Signup_Method` text NOT NULL,
  `Signup_Date` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `Number_of_Lines` int(11) NOT NULL,
  `Number_of_Venues` int(11) NOT NULL,
  `Last_Updated` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=27 ;


CREATE TABLE `Venues` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `userID` int(11) NOT NULL,
  `foursquareID` int(11) NOT NULL,
  `Name` text NOT NULL,
  `Latitude` text NOT NULL,
  `Longitude` text NOT NULL,
  `Address_Line1` text NOT NULL,
  `Address_Line2` text NOT NULL,
  `Post_Code` text NOT NULL,
  `Country` text NOT NULL,
  `Description` text NOT NULL,
  `Created_At` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `Last_Updated` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=2 ;

最佳答案

您可以推迟担心缓存方法,直到需要时为止。目前,请确保您的数据库已正确规范化。一旦网站运行顺利并开始流行, Hook memcached 将是一项相对简单的任务。

我注意到队列可能属于与拥有队列 field 的用户不同的用户:通过 Queues 的 Queues.userIDVenues.userID。地点ID。如果这不是您想要的,那么您需要删除Queues.userID,因为可以通过检查队列的地点来获取用户信息。

此外,如果 Users.Number_of_Venues 是具有特定 userIDVenues 数量计数,请将其删除,因为没有理由存储它,因为可以通过快速 COUNT(*) 获取该信息。离开它就意味着缺乏正常化。

设置架构后,请记住 properly index 。这将是加快查询速度的救星。

关于php - 我应该如何管理这个数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9626655/

相关文章:

php - PDO 驱动程序在 Windows 中没有值(value)

mysql - Perl dbi 中的绑定(bind)参数导致外键约束失败

mysql - 试图在 MySQL 查询中排除不需要的 GROUP BY 类别

java - 即使在设置 noCursorTimeout 后也找不到 mongo 游标

python - Django 和 MongoDB 引擎 - 对象 ID 问题!

javascript - 如何将值从动态 jQuery 字段传递到 PHP

PHP/MySQL 阻止用户访问其他用户上传的文件

php - 首次登录时显示欢迎消息

mongodb - 为什么下面的 mongodb 组查询总是返回 0?

php - 在 php 中以编程方式声明和初始化变量