Cassandra是世界上经受住最多实战考验的数据库,通过其快速且易于使用的数据API,让你的程序开发升级。

本文将介绍什么是Stargate以及Stargate的最新进展,如果您想快速浏览相关代码和动手操作指南,不妨直接跳到本文的第四节,跟着我们一起在App上发布动态、创建频道并管理用户吧。


01 在Astra上使用Stargate

这对开发者来说真是个超棒的时刻。

我们将很多的API和很棒的工具集成在了一起,帮助大家构建不断变化的全栈应用程序。如果你是一个开发者,你可能在用无模式(schemaless)数据存储、无服务器(serverless)架构、JSON的各种API,以及GraphQL语言等技术。

不仅如此,还有很多非常棒的框架(比如Jamstack,即JavaScript、APIs和Markup)和服务(比如Netlify)让无服务器应用程序的部署变得更快。

现在,由于Stargate在Astra上作为官方数据API正式发行,Apache Cassandra首次成为了这个应用栈的一部分。

我们构建的现代应用程序需要各种数据API,我们将这些API都集成到了我们的工具包中,它们会和原生的数据格式(JSON、REST、GraphQL等)协同工作。这些数据API需要支持无模式的JSON,与此同时还要提供速度和伸缩性。

最重要的是,如果想要在我们的项目中使用他们,我们至多需要几分钟的时间而已。

DataStax将Stargate构建于Astra,这给作为程序开发人员的我们一个自然的数据API栈,它与Jamstack或你选择的其它无服务器应用栈相容。

Apache Cassandra助力于Netflix、Instagram、Yelp、iCloud以及其他我们每日都用的很多应用,而在Astra上的Stargate就是构建在这个基础坚实的NoSQL数据引擎之上的。


02 Stargate到底是什么?

Stargate是一个开源的数据网关,它处于你的程序服务器和你的数据库之间。Stargate将一个API平台和数据请求协调代码放到同一个开源项目中。

多个成功的应用程序公司(像是Netflix和Yelp)都构建了他们自己的数据网关,以帮助内部的程序开发人员用各种简单的API开发App功能,同时无需了解底层的数据库或把数据模式(schema)弄得一团糟。

DataStax将Stargate集成到Astra中,让你同样能够轻松访问你的数据。

这对你来说意味着什么?

  • 无需预先进行Documents的数据建模
  • 更少的需要维护的个性化代码
  • 更多的时间用于建构你真正在意的东西

有Stargate作为去往Cassandra的不同flavor的协调数据请求的代理,你可以按你所想使用你的数据——无论是通过无模式Document API使用JSON,抑或是通过能感知数据库模式的GraphQL和RESTful API使用JSON。

为了在实战中看看这个,让我们来研究一下如何在一个抖音的克隆版App中使用JSON和Stargate的无模式Document API。因为如果Instagram和Snapchat都有了克隆抖音而来的功能,我们也应该要有一个,不是吗?


03 动手操作前的简短说明

在不需数据建模的情况下将JSON随意丢入Apache Cassandra或从中随意取出是很有意思的事情。你真应该自己在Astra上动手试一下。你可以在Astra上立刻得到动手体验,或者你也可以看看我们的示例程序库,了解一下实战中的无模式Cassandra。

我们很高兴和来自Netflix、黑莓、麦格理银行、美国联合服务汽车协会以及Yelp的众多工程师一起创造Stargate。他们很努力地在对这些API进行实战考验,并与在我们一起开发新的功能。

好了就是这些,让我们开始写代码吧!


04 在抖音上发布动态

我们打算用Astra上的Stargate提供的API来向抖音的克隆版App创建并上传动态。在这个过程中,我们将会使用你可以直接粘贴到你最新的Jamstack程序的代码。

想要在你的应用程序中使用在Astra上的Stargate,首先请安装并配置我们的JavaScript SDK。你也许需要自行查询一下如何在你的.env文件中存储环境变量。

让我们先从一个基本的抖音动态开始——一个带有简短描述的视频——就像是这样:

const postData = {
"postId": 0,
"video": "https://i.imgur.com/FTBP02Y.mp4",
"caption": "These ducks are cute",
"timestamp": "2020-12-09T09:08:31.020Z",
"likes": 0,
}

当你用一个node JS客户端连接到在Astra上的Stargate之后,让我们一起在我们的App中创建一个新的collection,并将刚才的视频动态加入其中:

const postsCollection = astraClient.namespace("tikTokClone").collection("posts");
const post = await postsCollection.create(postData);

如果你之前用过Cassandra,你会知道这一步有多棒。看看我们刚才省略的步骤吧:无需数据建模、无需创建新表、无需配置代码、无需分区键、无需聚类键……我想你已经明白我的意思了。

在Astra上的Stargate让你仅用一行代码就能向Apache Cassandra中添加数据。这种程度的便捷是之前的Cassandra不可能做到的。插入JSON数据,然后继续下一步。

下一步,假设你想要找到所有和鸭子(ducks)相关的动态,你可以这样做:

// find all posts about ducks
const posts = await postsCollection.find({ caption:
{ $in: ["ducks"] } });

Duang~现在一个有关鸭子的频道已经为你的用户找出来了。毕竟没人不会喜欢一个专注于鸭鸭们的视频频道。

现在你的App看起来还不会和Twitter一样,但是我们可以编辑一些内容。让我们看看如何编辑你的动态的简短描述——或者是一个稍长的描述?这取决于你。

// update the post’s caption
const post = await postsCollection.update(post.documentId, {
caption: "These ducks are MEGA cute",
});

上面的这些只是一个快速介绍,展示了如何在一个简单地克隆抖音的App上调用一小部分的数据API。

想要知道全部的功能?用网页浏览器搜索“Ania Kubow’s tutorial”查看来自Ania Kubow的视频教程(需合理上网)。她展示了如何利用Netlify和这些功能来建构一个完整的React应用程序。


05 下一步是什么?

想要查看更多使用Stargate的REST、Document以及GraphQL的API的例子,点击这里查看更多动手教程。看看这些教程,并且记得告诉我们你的想法。

有新的App的主意?或者想要加入我们的狂欢?你可以加入到我们的Stargate社区中。

我们很期待看到你是如何改造你的克隆版的抖音,使它拥有更多值得炫耀的基于数据的功能。

或者你可以自行创建其他App的克隆版——我们会很乐意将你的App克隆版放到我们的示例程序库,所以请通过DataStax活动小秘书与我们取得联系。


06 还想要知道更多细节?

如果你看到这儿了,估计你是在找更多的代码。

没问题。

让我们展示一下如何创建node JS客户端以及调用更多的数据API。对于初学者,让我们先看一下如何将你的客户端连接到在Astra上的Stargate:

// npm install @astrajs/collections
const { createClient } = require("@astrajs/collections"); // create an Astra client
const astraClient = await createClient(
{ astraDatabaseId: process.env.ASTRA_DB_ID,
astraDatabaseRegion: process.env.ASTRA_DB_REGION,
username: process.env.ASTRA_DB_USERNAME,
password: process.env.ASTRA_DB_PASSWORD,
});

这非常之容易。

然后让我们在我们的数据库中创建一个用户collection,用它来储存我们的抖音用户的documents。

// create the users collection in the app
const usersCollection = astraClient.namespace("tikTokClone").collection("users");

我们的抖音App中的用户会有一些基本信息:一个独一无二的ID、一个名字、用户名等等:

const userData = {
"id_3": "0",
"name": "Mo Farooq",
"username": "mofarooq32",
"avatar": "https://i.imgur.com/9KYq7VG.png"
};

然后让我们把这个用户添加到我们的collection中:

// create a new user
const user = await usersCollection.create(userData);

你可以通过读取这个用户的任意特性(比如用户名)来确保这个用户已经被存储在数据库中了:

// find our user by username
const users = await usersCollection.find({ username: { $eq:
"mofarooq32" } });

或者你可以根据用户的documentId来查找任意用户:

// get the user by document id
const user = await usersCollection.get(user.documentId);

最后,如果你想要删除一个用户:

// delete the user
const user = await usersCollection.delete(user.documentId);

想要查看完整代码?用网页浏览器搜索“Ania Kubow’s app”查看全部的代码,并基于它改造你自己的版本。如果你真的这样做了,记得让我们知道你的新动态,我们很乐意订阅你的鸭鸭频道。

谢谢你读完整篇文章。祝你敲代码愉快!

技术基础 | 用JSON在抖音上发布动态——使用Stargate即可轻松实现的更多相关文章

  1. Python 抖音机器人,论如何在抖音上找到漂亮小姐姐?

    只有想不到,没有做不到,最近抖音风靡好友圈,马上就有技术宅本着“代码改变世界”的理念开始了搞事之路. 需要注意的事,漂亮不漂亮没有明确的界限,每个人都有每个人的审美,只有外表而没有心灵的美也是空洞的. ...

  2. vue H5 超简单的swiper制作抖音上拉切换视频播放

    -----html部分------ <swiper vertical :style="{height: windowheight+'px',width:375+'px'}" ...

  3. 10分钟快速上车短视频风口:基于uniapp框架创建自己的仿抖音短视APP

    在今年也就是第48次发布的<中国互联网络发展状况统计报告>有这样一个数据,21年的上半年以来,我国我国网民规模达10.11亿,其中短视频用户达8.88亿.碎片化的生活场景下,短视频成为人们 ...

  4. PHP根据抖音的分享链接来抓包抖音视频

    现在抖音是个很火的短视频平台,上面有许多不错的小视频.今天教大家怎么用PHP技术来获取到抖音上的的内容. 1:打开抖音选中你认为好的视频点击分享,复制链接,然后你会获取到如下的内容: #科比 愿你去的 ...

  5. 100行代码搞定抖音短视频App,终于可以和美女合唱了。

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由视频咖 发表于云+社区专栏 本文作者,shengcui,腾讯云高级开发工程师,负责移动客户端开发 最近抖音最近又带了一波合唱的节奏,老 ...

  6. Python爬取抖音视频

    最近在研究Python爬虫,顺便爬了一下抖音上的视频,找到了哥们喜欢的小姐姐居多,咱们给他爬下来吧. 最终爬取结果 好了废话补多说了,上代码! #https://www.iesdouyin.com/a ...

  7. wpf 模拟抖音很火的罗盘时钟,附源码,下载就能跑

    wpf 模拟抖音很火的罗盘时钟,附源码 前端时间突然发现,抖音火了个壁纸,就是黑底蕾丝~~~  错错错,黑底白字的罗盘时钟! 作为程序员的我,也觉得很新颖,所以想空了研究下,这不,空下来了就用wpf, ...

  8. 刷抖音太累,教你用Python把高颜值的小姐姐都爬下来慢慢看

    前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: 星安果.AirPython 目 标 场 景 相信大家平时刷抖音短视频 ...

  9. 抖音人脸识别Autojs脚本

    title: 抖音人脸识别Autojs脚本 用Autojs写的抖音人脸颜值检测脚本 ​ 疫情期间宅家久了,昨天闲着没事(好吧,有事情,但是我不想做) ,消费之火熊熊燃烧.一咬牙把Autojs入正了.我 ...

随机推荐

  1. Codeforces Round #668 C. Balanced Bitstring (Div. 2)题解(思维)

    题目链接 题目大意 给你一个长为n的01串,要你使得每一个01串中0和1的个数都要相等,01串中有?字符,你可以使得这个字符变为0或1,要你求是否可以满足条件.输出YES或NO 题目思路 这个题目的难 ...

  2. Java基础教程——缓冲流

    缓冲流 "缓冲流"也叫"包装流",是对基本输入输出流的增强: 字节缓冲流: BufferedInputStream , BufferedOutputStream ...

  3. apply 、call 以及 bind 的使用和区别

    一.被apply和call调用的函数中没有传递参数 (一)不传参数 结果: (二)传递 null 结果: 总结: 1.当使用 apply和 call去调用函数并且没有传递参数时,前提这个函数中也没有传 ...

  4. Beta冲刺随笔——Day_One

    这个作业属于哪个课程 软件工程 (福州大学至诚学院 - 计算机工程系) 这个作业要求在哪里 Beta 冲刺 这个作业的目标 团队进行Beta冲刺 作业正文 正文 其他参考文献 无 今日事今日毕 林涛: ...

  5. 不是程序员,代码也不能太丑!python官方书写规范:任何人都该了解的 pep8

    不是程序员,代码也不能太丑!python官方书写规范:任何人都该了解的 pep8 简介:为什么要强调 书写规范 ?这其实并不关乎"美丑",而是为了 更高的效率(代码阅读.开发.维护 ...

  6. [GYCTF2020]Blacklist

    这题是用堆叠注入,同时也是借这题记录一下CTF中堆叠注入的一些骚操作 以下部分内容转载大佬的文章 show databases; 获取数据库名 show tables; 获取表名 show colum ...

  7. Robot framework 环境搭建+图标处理

    场景:随着现在项目各种赶工,很多时候界面上的功能还没有实现,这时就可以先对接口进行验证,提早发现一些和预期不一致的错误. Robot framework需要的几个知识点: 测试库:RF是大树,测试库就 ...

  8. EF优缺点解析

    原先用的是三层架构中ADO.NET做底层开发,纯手工sql语句拼装.后来遇到一个MVC+EF项目,体会到了EF的强大性. 它是微软封装好一种ADO.NET数据实体模型,将数据库结构以ORM模式映射到应 ...

  9. 【JVM】类加载器与双亲委派

    类加载器,顾名思义,即是实现类加载的功能模块,负责将Class的字节码形式加载成内存形式的Class对象.字节码文件可来源于磁盘或者jar包中的Class文件,也可以来自网络字节流. 类加载器 在JV ...

  10. AcWing 332. 股票交易

    大型补档计划 题目链接 \(f[i][j]\) 表示前 \(i\) 天,手里有 \(j\) 个股票挣得最多钱 买股票.枚举 \(u < i - W\) \(f[i][j] = max(f[u][ ...