个人 github 页面上的数据库

Posted

技术标签:

【中文标题】个人 github 页面上的数据库【英文标题】:Database on a personal github page 【发布时间】:2015-10-17 18:09:01 【问题描述】:

是否可以在您的个人 github 页面的某处存储一些数据?

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

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

【问题讨论】:

我假设你可以在 Github Pages 上做一些 javascript。您可以通过服务器的 jsonp 支持使用 AJAX 做一些客户端-服务器类型的事情。请参阅Quora also 上的讨论 【参考方案1】:

Github 页面只允许静态内容,因此您必须使用 firebase 之类的内容才能获取数据库。

【讨论】:

我不知道如何标记您的回答正确,但您做到了。我将使用 firebase ,它非常棒。为那个! 您点击左侧上下箭头下方的复选标记。 GitHub 页面是静态的,但允许版本控制。想象一个作为数据库的 JSON 文件,提交作为“事务”。如果提交被序列化,它可以在严格控制的情况下工作。 (虽然它肯定不是真正的数据库) 您能否添加更多关于如何使用 firebase 并使其正常工作的详细信息?【参考方案2】:

关于 Firebase 的公认答案是一个很好的、快速的回复,但我想为正在研究此主题的任何人写一个更长、更全面的回复,因为 Firebase 是实现此类功能的几种方法之一。

作为背景,mysql、postgres、redis、mongodb 等数据库/数据存储是以下一个访问者查看或访问的方式存储访问者数据的最常见方式。内容管理系统(如 Django、Wordpress 和 Drupal)是为读取和写入数据库而构建的。这些服务往往是服务器端技术,也就是说,服务器管理员设置它们,并且网站用户看不到的代码块与数据库通信。该服务器端代码库还构建了用户将看到的呈现的 html。所以一般来说,Github Pages 不与这些技术一起使用,因为它们只支持静态 html、css 和 javascript——也就是说,它们只允许客户端代码。

有关此主题的更多信息,请参阅How to connect html pages to mysql database?

如果您想设置只读数据存储,Github 页面上有很多选项。您可以将 json 文件放入您的存储库中,查询驱动器文档,将 sqlite.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 表格。该工作表可以发布到网络并设置为自动更新。您的 Github 页面站点可以引用该页面的公共版本并在提交更改时更新(延迟)。这种类型的设置很笨重(我认为如果 Google 表格太大,它们会变慢)并且应该谨慎使用,因为这种设计不佳的形式可能是垃圾邮件磁铁。更不用说查看您的客户端代码的任何人都可以查看您的 Google 表格的公开版本,其中包括提交时间和您收集的用户数据。但是,如果谨慎使用,它可能适用于上述用例。

【讨论】:

这实际上应该是公认的答案。 firebase one 误导读者认为它是最受欢迎的选择【参考方案3】:

使用 Github 的 HTTP REST API:https://developer.github.com/v3/ 可以通过浏览器 js 将 json 文件或 sqllite 文件提交/更新到 github pages repo 中。

【讨论】:

你能发布一个演示吗?我对 Web 或 REST API 或如何发送命令或在何处键入命令一无所知。【参考方案4】:

根据你的需要,你可以试试GithubDB

来自他们的文档:

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

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

好问题。开发人员有多种不同数据库的选择, 然而,GithubDB 充分利用了您喜爱的所有功能 Github。

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

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

持久性(使用 Github,您可以回滚到数据的早期阶段 看看它是如何演变的)。

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

可用性(Github 已经关闭,但老实说,它是 足够好,除非你是 Facebook)。

【讨论】:

GithubDB 是一个 Node 包。您不能将它与 Github Pages 一起使用,因为没有执行服务于这些页面的服务器端代码。 这没有回答问题。

以上是关于个人 github 页面上的数据库的主要内容,如果未能解决你的问题,请参考以下文章

Stack Overflow 在哪里存储 GitHub 个人资料链接?

GitHub API:贡献给的存储库

如何删除github上以有的文件

如何在 GitHub 建立个人主页和项目演示页面

如何在 GitHub 建立个人主页和项目演示页面

使用 Bash 脚本中的个人访问令牌访问 Github 上的组织存储库