个人 Github 页面上的数据库

66

在个人Github页面上存储数据是否可能?

例如,一个按钮触发计数器。当您点击该按钮时,计数器将加1。当其他用户访问该页面并点击该按钮时,计数器再次加1。

因此,页面上显示的是所有访问者点击总和。


1
我假设你可以在Github Pages上编写一些JavaScript。你可能能够使用来自服务器的支持jsonp的AJAX来实现一些客户端-服务器类的操作。请参见Quora上的讨论 - zedfoxus
4个回答

85

Github pages只允许静态内容,因此您需要使用类似Firebase这样的工具才能获取一个数据库。


3
我不知道如何将你的答案标记为正确,但你做到了。 我打算使用Firebase,它非常棒。谢谢! - Paran0a
2
您需要点击左侧的上下箭头下方的勾选标记。 - dardo
23
GitHub Pages 是静态的,但可以进行版本控制。想象一下一个充当数据库的 JSON 文件,以提交记录为“交易”。如果这些提交记录被序列化,它就可以在严格受控的环境中工作。(虽然它肯定不是真正的数据库) - Michael Easter
2
你能否提供更多关于如何使用Firebase并使其正常工作的细节吗? - Gabriel Staples

77
关于Firebase的被接受回答是一个好的、快速的回答,但我想为那些正在调查这个主题的人写一篇更长、更全面的文章,因为Firebase是实现这种功能的几种方式之一。
背景知识:像mysql、postgres、redis、mongodb等数据库/数据存储是将访问者数据存储在下一个访问者可以看到或访问的方式中最常见的方式。内容管理系统如Django、Wordpress和Drupal是为了读写数据库而构建的。这些服务往往是服务器端技术,也就是说,服务器管理员设置它们,并且网站用户看不到的代码块与数据库通信。该服务器端代码库还构建了用户将看到的呈现的HTML。因此,Github Pages通常不与这些类型的技术一起使用,因为它们仅支持静态html、css和javascript——也就是说,它们只允许客户端代码。
有关此主题的更多信息,请参见如何将html页面连接到mysql数据库? 如果您想设置一个只读数据存储,您在Github Pages上有很多选项。您可以将json文件放入您的repo中,查询一个驱动程序文档,上传一个sqlite.db文件到您的repo并查询它等等。在这个想象的例子中,您必须同意网站用户看到您数据存储中的任何数据,因为该设置不提供使某些数据对用户不可见的方法。
然而,一旦您开始考虑写入数据库,安全就成为一个问题。如果您设置了某种形式的远程数据库,并将DB访问凭据放入客户端代码中,任何用户都可以看到这些凭据并危及您的数据库(注入数据、接管、删除等)。仅出于这个原因,您需要一个设置,可以在不让网站流量看到内部情况的情况下从前端到后端传递数据,反之亦然。据我所知,这是Github Pages无法提供给您的功能水平。

想要了解更多客户端数据库安全方面的内容,请参考这个主题:https://softwareengineering.stackexchange.com/questions/180012/is-there-any-reason-not-to-go-directly-from-client-side-javascript-to-a-database

一种潜在的解决方法是使用静态网站链接到第三方服务。例如,您可以在html页面中嵌入Google表单。该表单可链接到一个Google Sheet。该表格可以发布到互联网,并设置自动更新。您的Github Pages网站可以引用该页面的公共版本,并在提交更改后(有延迟地)进行更新。这种设置方式比较笨重(如果Google表格太大可能会变慢),并且应该谨慎使用,因为设计不良的此类表单可能成为垃圾邮件的来源。更不用说任何查看您客户端代码的人都能找到并查看您的Google表格公共版本,其中包含提交时间和用户数据(如果您收集它们)。但是,如果小心使用,它可能适用于上述用例。


8
这实际上应该是被接受的答案。Firebase 的回答会误导读者认为它是最受欢迎的选择。 - Campello
我能否在我的GitHub页面中使用Angular设置前端?然后,我可以在站点内设置用户/管理员界面以连接到需要用户名和密码的远程数据库服务,并将我保存的信息(比如博客文章)保存到该数据库中吗?这个数据库可以是Azure(或其他存储服务)吗?同时,使用Bootstrap进行CSS设计(当然这不应该是问题)。 - carloswm85

16

10
你能发布一个演示吗?我对网络、REST API或如何发送命令甚至在哪里输入命令一无所知。 - Gabriel Staples
这是一篇有趣的文章:https://phiresky.github.io/blog/2021/hosting-sqlite-databases-on-github-pages/ 可以在此基础上进行开发。 - Vipin Menon

6

根据您的需求,您可以尝试使用GithubDB

从他们的文档中得知:

曾经想过将Github用作您的私有数据库,现在您可以。

我为什么要使用Github作为我的数据库?

好问题。开发人员有许多不同的数据库选择,但GithubDB利用了您已经喜欢的所有功能。

日志记录(使用Github,您可以快速查看提交并查看请求的编写和更新)。

可视化(Github提供了惊人的工具来可视化读/写的传入数量)。

持久性(使用Github,您可以回滚到数据的早期阶段,并查看其如何发展)。

安全性(使用Github,您的数据库继承了与Github相同的标准)。

可用性(Github已知道会停机,但说实话,它足够好,除非您是Facebook)。


13
GithubDB是一个Node包。由于在服务这些页面时不执行服务器端代码,因此您无法在Github Pages上使用它。 - Dark Matter
7
这并没有回答这个问题。 - ABC

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接