存储聊天消息和文件的最佳方式

2024-06-28

我想知道您对将聊天消息存储在数据库中有何看法?

我需要能够将其他内容绑定到它们(例如文件或联系人),并且使用数据库是我目前看到的最佳方法。

文件也有同样的问题,因为它们可以绑定到聊天消息,我也必须将它们存储在数据库中。

对于数千条消息和文件,我想知道性能下降和数据库大小。

考虑到我将 PHP 与 MySQL/Doctrine 结合使用,您有何看法?


我认为只要正确构建数据库,就可以在数据库中存储任何文本信息(名称、消息历史记录等)。我曾在大型网站(每天的访问量达到数公斤)和电信公司工作过,这些公司将用户信息(包括流量统计数据)存储在数据库中,这些数据库已发展到数百GB,并且应用程序运行良好。

但是,对于像图像和文件这样的二进制信息,最好将它们存储在文件系统上,并仅将它们的路径存储在数据库上,因为从磁盘上读取它们比将数据库进程与读取多个数据绑定起来要便宜。兆字节文件。

正如我所说,做几件事很重要:

  1. 正确构建信息 - 正确设计数据库、将其正确划分为表并将表划分为字段并考虑到您的性能目标非常重要,因为这将构成您的应用程序和查询的基础。如果弄错了,你的查询就会很慢。

  2. 对与每个表相关的表引擎做出正确的决定。这是重要的一步,因为它将极大地影响查询的性能。例如,MyISAM 在更新表时会阻止对表的读取访问。对于社交网络或新闻网站等 Web 应用程序来说,这将是一个问题,因为在许多情况下,您的用户基本上必须等待信息更新完成才能看到生成的页面。

  3. 创建适当的索引 - 对于性能非常重要,特别是对于具有快速增长的大型数据库的应用程序。

  4. 随着数据的增长衡量查询的性能并寻找改进方法 - 您总会发现必须消除的瓶颈,这是一个持续不断的过程。每个流行的 Web 应用程序都必须这样做。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

存储聊天消息和文件的最佳方式 的相关文章

  • PHP:系统时区设置错误

    我尝试在 MAMP 下的终端中使用 PHP 但出现与系统时区设置相关的错误 我该如何修复这个错误 应用程序 MAMP bin php5 bin php 回声 php PHP 严格标准 PHP 启动 它 依赖系统是不安全的 时区设置 请使用
  • 是否可以倒回 PDO 结果?

    我正在尝试为 PDO 语句的结果编写一个迭代器 但找不到任何回退到第一行的方法 我想避免调用 fetchAll 和存储所有结果数据的开销 first loop works fine foreach statement as result d
  • PHP SFTP 简单文件上传

    我正在使用 phpseclib SFTP 类 并尝试上传这样的文件 sftp new Net SFTP mydomain com if sftp gt login user password exit Login Failed sftp g
  • 允许跨域ajax请求

    在我的项目中 我需要允许其他人向我的脚本发送 ajax 请求 因此 外部请求可能来自其他网站和域 也可能来自浏览器扩展 我在脚本顶部简单地添加了这两行 让他们执行此操作 header Access Control Allow Origin
  • 我怎样才能让我的卷发在刮擦之前等待几秒钟?

    所以我试图从网站上抓取一些数据 有一些必须被删除的名字列表 发生的情况是 如果有 15 个名字需要被删除 其中只有 5 个名字被删除 当我检查原始站点时 他们也以类似的方式加载数据 第一次加载网站时 仅显示五个名字 重新加载时会显示 10
  • 这段 PHP 代码是否会导致其他人的 Apache 崩溃?

    preg match all a str repeat a 1000 matches 编辑 稍微更改正则表达式以使其更简单 同时仍然崩溃 我在 PHP 5 3 5 和 Apache 2 0 上运行它 它使服务器崩溃 如果我将 339 更改为
  • WooCommerce 从所有订单中获取项目元

    我正在尝试显示 WooCommerce 插件中所有已完成订单的所有订单项目 带有项目元 我还想将显示限制为仅显示 10 个订单项目 我已经弄清楚如何显示所有订单项目 但无法将数量限制为 10 这是我当前用于显示所有订单项目的代码 args
  • 为什么要使用 XML 解析器?

    I m a somewhat经验丰富的 PHP 脚本编写者 但是我只是专注于解析 XML 和所有这些好东西 我似乎无法理解为什么人们会使用单独的 XML 解析器而不是仅仅使用explode函数 看起来就这么简单 这是我一直在做的事情 假设路
  • 对许多站点使用中央数据库服务器:合理吗?

    基本上 我需要在多达几十个站点上同步数据库数据的某些部分 完美的解决方案是创建一个中央服务器来托管该数据 每个页面加载都必须从两个数据库服务器 本地和远程数据库服务器 获取数据 并且写入远程服务器也很常见 虽然数据库服务器在硬件方面可以达到
  • 如何在 dompdf 库上启用调试?

    我正在使用 dompdf 库来输出一些报告 我得到了一个文件输出 但我有一些奇怪的行为 如何启用调试报告dompdf https github com dompdf dompdf dompdf new Dompdf something li
  • Laravel 使用 Monolog\Handler\BrowserConsoleHandler 进行日志记录

    How can 拉拉维尔 5的日志记录更改为Monolog Handler BrowserConsoleHandler What doesn t在 Laravel 5 中工作但是does在独立的 PHP 文件中工作 use Illumina
  • 你能帮助我更好地理解 PHP 类吗?

    我是一个学习速度很慢的人 我想在编码方面 我已经学习 PHP 几年了 但我仍然不理解类 所以是时候我付出一些努力 至少更好地理解它们了 我凡事都使用函数 人们经常在这里对我发表评论 他们不敢相信我有一个社交网站 而且我不使用课程 我真的不明
  • POST 数据加密 - HTTPS 足够吗?

    考虑一个场景 其中用户身份验证 用户名和密码 由用户在页面的表单元素中输入 然后提交 POST 数据通过 HTTPS 发送到新页面 其中 php 代码将检查凭据 现在 如果黑客位于网络中 并说可以访问所有流量 那么在这种情况下应用程序层安全
  • 更新 Composer 依赖项时 Artisan 命令出错

    我正在为 Laravel 开发一个库 其中包含一个服务提供者 我已将此库添加到另一个项目的composer json file The composer json 主项目 的文件包含以下脚本 scripts post root packag
  • 将 SQL 查询的 SELECT 子句解析为 PHP 数组

    这更多的是用于分析 PHP 中的查询before它被发送到服务器 我这样做的原因非常复杂 所以我不想深究其原因 在 PHP 中 我需要将字段选择存储到 PHP 数组中 以这个查询为例 SELECT user id username DATE
  • WordPress 中的多词搜索不显示搜索结果

    我自定义了一个主题 但在使用多词查询的搜索结果时遇到一些问题 网站上线时间为www aetterworldbydesign com http abetterworldbydesign com 搜索单个单词 http www abetterw
  • 如何从 PHP 中的两个不同数组获取公共值

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我有两个带有一些用户 ID 的数组 array1 array 5 26 38 42 array2 array 15 36 38 42 我需
  • 数组初始化中的正确缩进,PDT/Zend Studio

    我在代码中使用以下样式的数组初始化 a array one gt 123 two gt 456 但在这种情况下 PDT Zend Studio 无法正常工作 按 Return 键后 它将光标置于 a 下方 在我的示例中 并忽略缩进 如果数组
  • PayPal REST API:通过重定向 URL 或 Webhook 调用履行订单/付款?

    我正在致力于将 PayPal REST API 集成到我的 Symfony 2 Web 应用程序中 我不确定完成订单 付款的正确时间 地点 与金额 客户数据等其他参数一起 我将两个 URL 传输到 PayPal API 一个是接受付款时用户
  • 重定向至 2 页

    我有一个 PHP 页面 我想先将其重定向到一个页面 例如 google com 然后再重定向到另一个页面 例如 bing com 为此 我使用以下方法 header Location http google com header Locat

随机推荐

  • Android WebView 不会滚动

    我有一个WebView在 Android 4 2 中加载一个本地 HTML使用javascript 放置在资产文件夹中 我的问题是 我无法在我的 WebView 中滚动任何 我通过类似的问题尝试了很多事情和建议 但没有任何效果 我的 Htm
  • 如何在 Google 脚本中输入提示 Google Types?

    我正在尝试在 Google Script 中输入一堆 javascript 并且我已经尝试了以下操作 Get named range given by name param String name return Range function
  • 如何在 Javascript 中创建类?

    这是我到目前为止所得到的 它根本不起作用 我的玩家类中的所有变量都是空的 并且更新永远不会被调用 我的意思是编程类 而不是 CSS 类 IE 不是 movi ngdiv 颜色 ff0000
  • Doc2Vec:区分句子和文档

    我只是在玩弄 gensim 的 Doc2Vec 分析 stackexchange 转储来分析问题的语义相似性以识别重复项 教程关于Doc2Vec 教程 https rare technologies com doc2vec tutorial
  • 如何在textarea元素中添加新行?

    我想在文本区域中添加换行符 我尝试过 n and br 标签但不工作 您可以看到上面的 HTML 代码 你能帮我在文本区域中插入换行符吗
  • Flutter - SingleChildScrollView 在打开键盘时不会滚动到列底部

    我在应用程序的许多地方使用了 SingleChildScrollView 一切都很好 但是 在下面的场景中 当键盘弹出时 它无法滚动到列的底部 Future
  • WiX EmbeddedChainer 示例?

    With Windows安装程序 http en wikipedia org wiki Windows Installer4 5 添加了一个新表微星嵌入式链接器 http msdn microsoft com en us library w
  • 在hadoop中将文件作为单个记录读取

    我有很大的不 对于小文件 我想使用合并文件输入格式来合并文件 以便每个文件数据在我的 MR 作业中作为单个记录 我已关注http yaseminavulous blogspot in 2011 03 many small input fil
  • YouTube API Android 自动启动

    我在我的应用程序中使用 YouTube API 我的问题是 视频不会自动播放 用户必须按播放按钮才能开始播放 My code setContentView R layout playerview demo YouTubePlayerView
  • jQuery 仅验证远程 onblur,但允许 onkeyup 休息 [重复]

    这个问题在这里已经有答案了 我正在尝试进行 jquery 远程验证以查看名称是否唯一 但我不想对每个 onkekup 事件进行远程验证 但是我想在模糊事件上执行此操作 当用户离开文本框时 但使用我下面的当前代码 它会在按下第二个字符后启动
  • OpenCV 和 QT 之间的集成

    我对 QT 和 OpenCV 开发完全是新手 一般来说是 C 我想使用 OpenCV 开发一个应用程序并使用 Qt 创建其界面 我不明白的是 如何整合这两个部分 我的意思是 为了开发 java 我只使用 eclipse 它为我提供了 JFr
  • Maven 构建成功,但没有在 Selenium 中执行测试

    编辑 我已将项目上传到 github 供任何想查看的人使用https github com hfunsh test automation git https github com hfunsh test automation git 我使用
  • 如何在 ASP.net core 中为自定义模型绑定器编写单元测试

    我已经为属性编写了自定义模型绑定器 现在我正在尝试编写相同的单元测试 但无法为模型绑定器创建对象 谁能帮我 下面是我必须编写测试的代码 public class JourneyTypesModelBinder IModelBinder pu
  • IIS Express - Visual Studio - 在同一端口上运行多个站点

    我有多个使用同一端口 8888 的 API 这些 API 是不同解决方案的一部分 http localhost 8888 api1 http localhost 8888 api1 http localhost 8888 api2 http
  • Matplotlib动画无法保存

    我正在尝试学习如何使用创建 matplotlib 动画Jake Vanderplas 的基本示例 http jakevdp github io blog 2012 08 18 matplotlib animation tutorial 但我
  • MSBuild 发布 dotnet 核心应用程序

    我的设置是 我有一个解决方案 其中包含不同的 dotnet4 6 应用程序 服务 现在我们在此解决方案中添加了一个 dotnet core 项目 我可以构建和调试它 但这不会创建可执行文件 在 Visual Studio 中 我可以右键单击
  • Java EE 异常:名称 java:comp 未在此上下文中绑定

    我在 Netbeans 7 2 1 中有 Java EE 应用程序 尝试部署它 构建结束正常 我在 Tomcat 日志中收到错误 Caused by javax naming NameNotFoundException Name java
  • 在 C# 中解析 Json Rest api 响应[重复]

    这个问题在这里已经有答案了 我正在尝试使用 C 从 Rest api json 响应中提取值 我有以下代码 client BaseUrl https api cloud appcelerator com request Resource v
  • 在我的表单 Symfony2 中创建重复字段

    我正在开展一个大学项目 我想让所有学生都参加 我创建了一个包含 3 个字段的模型 即日期 当前 布尔值 和学生 ID 现在 当我尝试从中生成表单时 它只会显示这 3 个字段 但是我想要班上所有的学生 因此 我为学生创建了一个循环 并创建了一
  • 存储聊天消息和文件的最佳方式

    我想知道您对将聊天消息存储在数据库中有何看法 我需要能够将其他内容绑定到它们 例如文件或联系人 并且使用数据库是我目前看到的最佳方法 文件也有同样的问题 因为它们可以绑定到聊天消息 我也必须将它们存储在数据库中 对于数千条消息和文件 我想知