草庐IT

mysql - "don' t 的数据库模式再次向我展示了我之前在 mysql 中看到的内容

coder 2023-10-25 原文

我正在制作一个显示图片的网站。站点的特殊功能是“不要再向我展示我以前看到的内容”。这意味着,如果您看到一张图片,它会转到您的“存档”类别。会有很多图像和类别。而且我需要非常平滑的数据库架构来实现性能。

当您点击一张图片时,它会出现在灯箱上,并且在灯箱代码中它会使用 ajax 发送请求,以便专门为您存档该图片。

对于大约 5.000 个图像和 20.000 个用户,该数据库架构是否表现出色?

users
  user_id
  user_email

pictures
  picture_id
  picture_url
  tags

archived
  user_id
  picture_id

图像将出现在您面前,除了此架构上所有图像中的存档图像之外...

最佳答案

如果不了解所有细节,这是一个很难回答的问题。你提到会有多少用户和图像。每个用户(平均)在他们的归档列表中有多少张图片?如果该数字很小,归档表将不会接近 1 亿行。

100M 行本身应该不是问题,因为数据库可以处理这个问题。问题可能(或将)与您想要查询数据的方式有关。像这样的东西:

SELECT 
  * 
FROM 
  picture
WHERE 
  picture_id NOT IN 
  (
     SELECT picture_id FROM archived WHERE user_id = [userIdParameter]
  )

对于 1 亿行,这可能不会很好地执行。

另一种选择是交叉连接用户和图片,以便存档表始终包含笛卡尔积。所以表格将是:

archived
  user_id
  picture_id
  visited 

然后你可以这样查询:

SELECT
  p.*
FROM
  picture p
  INNER JOIN archived a ON p.picture_id = a.picture_id
WHERE 
  a.user_id = [userIdParameter]
  AND a.visited = [false]

这应该可以通过适当的索引来执行,但是会带来一个问题,即每当将用户或图片添加到系统时,都必须确保在存档表中创建行。这也意味着您总是的行数等于图片 * 用户(在您的示例中为 100M)。在您的情况下,这可能是不可取的。

最重要的是,您将必须创建一些接近预期容量的测试数据,并进行一些接近负载的性能测试。如果您认为这是系统的关键潜在性能瓶颈,那么值得投入时间。

关于mysql - "don' t 的数据库模式再次向我展示了我之前在 mysql 中看到的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7545224/

有关mysql - "don' t 的数据库模式再次向我展示了我之前在 mysql 中看到的内容的更多相关文章

  1. ruby-on-rails - rails : "missing partial" when calling 'render' in RSpec test - 2

    我正在尝试测试是否存在表单。我是Rails新手。我的new.html.erb_spec.rb文件的内容是:require'spec_helper'describe"messages/new.html.erb"doit"shouldrendertheform"dorender'/messages/new.html.erb'reponse.shouldhave_form_putting_to(@message)with_submit_buttonendendView本身,new.html.erb,有代码:当我运行rspec时,它失败了:1)messages/new.html.erbshou

  2. ruby-on-rails - 由于 "wkhtmltopdf",PDFKIT 显然无法正常工作 - 2

    我在从html页面生成PDF时遇到问题。我正在使用PDFkit。在安装它的过程中,我注意到我需要wkhtmltopdf。所以我也安装了它。我做了PDFkit的文档所说的一切......现在我在尝试加载PDF时遇到了这个错误。这里是错误:commandfailed:"/usr/local/bin/wkhtmltopdf""--margin-right""0.75in""--page-size""Letter""--margin-top""0.75in""--margin-bottom""0.75in""--encoding""UTF-8""--margin-left""0.75in""-

  3. ruby-on-rails - 'compass watch' 是如何工作的/它是如何与 rails 一起使用的 - 2

    我在我的项目目录中完成了compasscreate.和compassinitrails。几个问题:我已将我的.sass文件放在public/stylesheets中。这是放置它们的正确位置吗?当我运行compasswatch时,它不会自动编译这些.sass文件。我必须手动指定文件:compasswatchpublic/stylesheets/myfile.sass等。如何让它自动运行?文件ie.css、print.css和screen.css已放在stylesheets/compiled。如何在编译后不让它们重新出现的情况下删除它们?我自己编译的.sass文件编译成compiled/t

  4. ruby - 解析 RDFa、微数据等的最佳方式是什么,使用统一的模式/词汇(例如 schema.org)存储和显示信息 - 2

    我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i

  5. ruby - 检查 "command"的输出应该包含 NilClass 的意外崩溃 - 2

    为了将Cucumber用于命令行脚本,我按照提供的说明安装了arubagem。它在我的Gemfile中,我可以验证是否安装了正确的版本并且我已经包含了require'aruba/cucumber'在'features/env.rb'中为了确保它能正常工作,我写了以下场景:@announceScenario:Testingcucumber/arubaGivenablankslateThentheoutputfrom"ls-la"shouldcontain"drw"假设事情应该失败。它确实失败了,但失败的原因是错误的:@announceScenario:Testingcucumber/ar

  6. ruby-on-rails - Rails 3.2.1 中 ActionMailer 中的未定义方法 'default_content_type=' - 2

    我在我的项目中添加了一个系统来重置用户密码并通过电子邮件将密码发送给他,以防他忘记密码。昨天它运行良好(当我实现它时)。当我今天尝试启动服务器时,出现以下错误。=>BootingWEBrick=>Rails3.2.1applicationstartingindevelopmentonhttp://0.0.0.0:3000=>Callwith-dtodetach=>Ctrl-CtoshutdownserverExiting/Users/vinayshenoy/.rvm/gems/ruby-1.9.3-p0/gems/actionmailer-3.2.1/lib/action_mailer

  7. ruby - 在 jRuby 中使用 'fork' 生成进程的替代方案? - 2

    在MRIRuby中我可以这样做:deftransferinternal_server=self.init_serverpid=forkdointernal_server.runend#Maketheserverprocessrunindependently.Process.detach(pid)internal_client=self.init_client#Dootherstuffwithconnectingtointernal_server...internal_client.post('somedata')ensure#KillserverProcess.kill('KILL',

  8. ruby - 主要 :Object when running build from sublime 的未定义方法 `require_relative' - 2

    我已经从我的命令行中获得了一切,所以我可以运行rubymyfile并且它可以正常工作。但是当我尝试从sublime中运行它时,我得到了undefinedmethod`require_relative'formain:Object有人知道我的sublime设置中缺少什么吗?我正在使用OSX并安装了rvm。 最佳答案 或者,您可以只使用“require”,它应该可以正常工作。我认为“require_relative”仅适用于ruby​​1.9+ 关于ruby-主要:Objectwhenrun

  9. ruby - 无法让 RSpec 工作—— 'require' : cannot load such file - 2

    我花了三天的时间用头撞墙,试图弄清楚为什么简单的“rake”不能通过我的规范文件。如果您遇到这种情况:任何文件夹路径中都不要有空格!。严重地。事实上,从现在开始,您命名的任何内容都没有空格。这是我的控制台输出:(在/Users/*****/Desktop/LearningRuby/learn_ruby)$rake/Users/*******/Desktop/LearningRuby/learn_ruby/00_hello/hello_spec.rb:116:in`require':cannotloadsuchfile--hello(LoadError) 最佳

  10. ruby-on-rails - 新 Rails 项目 : 'bundle install' can't install rails in gemfile - 2

    我已经像这样安装了一个新的Rails项目:$railsnewsite它执行并到达:bundleinstall但是当它似乎尝试安装依赖项时我得到了这个错误Gem::Ext::BuildError:ERROR:Failedtobuildgemnativeextension./System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/rubyextconf.rbcheckingforlibkern/OSAtomic.h...yescreatingMakefilemake"DESTDIR="cleanmake"DESTDIR="

随机推荐