我们刚刚将数据库(DB)比作图书馆、记忆、图书管理员、网络等隐喻进行了解释。现在让我们亲眼看看它是如何运作的。
Web服务是如何存储信息的,如何记忆,如何再次检索和展示,以及如何相互连接,
通过直接使用Rails来实践,现在是让我们亲身感受的时候。
第1部分。“Web服务的记忆”创建
让我们创建一个Post(帖子)模型
Web的记忆始于记录。我们将记录称为“文章(Post)”。
在终端中:
rails generate model Post title:string body:text
rails db:migrate
这两行非常简单。
“我们将创建一个名为Post的结构,其中包含title和body两个记忆空间。”
“然后我们将在实际的DB记忆仓库中反映这个结构。”
现在Rails已经创建了图书馆的“书架(Post表)”,并且可以放置“title, body”两格书籍。
第2部分。通过Rails控制台直接与数据库对话
让我们在图书馆的书架上放一本书
终端:
rails console
然后尝试放一本书。
Post.create(title: "我的第一篇文章", body: "已保存到Rails DB中!")
一按回车键,您就在Web服务的“记忆”中记录了第一条数据。
比起迄今为止编写的任何代码,这一行要强大得多。
因为这是创建了永不消失的记忆。
第3部分。数据库是“永不遗忘的空间”
让我们再次询问Rails控制台。
Post.all
然后Rails对DB说。
“从Post书架上取出所有书籍!”
然后DB毫无差错地检索出了刚刚保存的数据。
这就是Web服务的记忆,永不遗忘的空间。
无论您关闭再打开服务器,重新启动计算机,一周后再回来,那个记忆仍然保留。
第4部分。“精心整理的图书馆”体验
ID、created_at、updated_at是图书馆的分类系统
让我们再次查看刚刚创建的Post。
post = Post.first
post.id
post.created_at
post.updated_at
您现在已经知道了。
id = 书号
created_at = 创建日期
updated_at = 最后修改日期
DB会精心整理所有记录,即使您没有操作。
这些记录是构建结构化存储大量数据的基础。
DB不仅仅是一个空间,而是精心整理的图书馆。
第5部分。“快速查找数百万本书的图书管理员”体验
通过条件查找书籍
Post.where(title: "我的第一篇文章")
Rails告诉DB。
“只找出标题为‘我的第一篇文章’的书籍。”
DB立即找到并展示出来。
无论数据有10个、1,000个还是100万个,都能精确查找。
因为DB拥有在庞大图书馆中即时查找的超凡图书管理员。
您刚刚亲身体验了这种能力。
第6部分。创建“相互连接的智能网络”
创建评论(Comment)并与Post关联
Web服务真正强大的时刻是数据开始相互连接时。
例如,让我们尝试允许在博客文章(Post)上添加评论(Comment)。
rails generate model Comment body:text post:references
rails db:migrate
这个模型这样说。
“评论有内容(body),”
“将保存属于哪篇文章(post_id)的数据”
告诉Rails关系
app/models/post.rb
class Post < ApplicationRecord
has_many :comments
end
app/models/comment.rb
class Comment < ApplicationRecord
belongs_to :post
end
现在Post和Comment将成为完全连接的智能网络。
第7部分。创建实际连接的数据
在控制台:
post = Post.first
post.comments.create(body: "这是第一条评论!")
post.comments.create(body: "第二条评论!")
现在让我们阅读评论。
post.comments
DB清楚地知道。
哪个评论属于哪个Post
一个帖子有多少评论
这些评论何时保存的
当数据相互连接时,Web服务最终成为有机系统。
第8部分。现在您明白了为什么DB是Web服务的“心脏”
在短暂的练习中,您经历了以下内容。
Web服务的记忆
→ 存储和检索数据的过程
永不遗忘的空间
→ 通过Post.create创建的数据将永久保留
精心整理的图书馆
→ id、timestamps等自动整理功能
快速查找数百万本书的图书管理员
→ 通过Post.where搜索所需数据
智能网络
→ 通过设置Post ↔ Comment关系,创建数据之间的连接
Web服务的心脏
→ 记忆 + 关系 + 搜索都在DB中进行
您现在已经理解了,为什么Web服务无法在没有数据库的情况下存在,以及处理数据库就是处理Web服务。
现在读者心中萌生的想法
跟随到这里的读者一定会有以下感受。
“等一下…我也可以
创建自己的博客了?”“看起来我和朋友们可以一起做一个TODO应用?”
“Web服务…比想象中更有趣?”
这就是我们追求的觉醒时刻。
当数据触手可及时,
Web服务不再是遥远未来的技术,
而是现在在我手中创造的现实。
而Rails则这样向您耳语。
“现在决定要创建什么服务。
接下来我会帮助你。”