pb 查询客户端ip地址_有了Amazon Neptune,构建查询数据能力Max

在社交网络、推荐引擎和欺诈检测等应用场景中,您需要在数据之间创建关系并快速查询这些关系,此时,图数据库将比关系数据库更具优势。因为使用关系数据库构建这些类型的应用程序面临着许多挑战。您将需要创建多个具有多个外键的表,SQL 查询需要嵌套查询和复杂的联接,它们很快就会变得不灵活,而且随着数据量逐渐增加,查询的性能也会降低。

Amazon Neptune 是一个高性能图数据库,并对图的存储和查询进行了优化,可以存储数十亿个关系并将图形查询延迟降低到毫秒级。它也是一个托管的图数据库,能快速创建图数据库集群,减少了运维和管理图数据库的工作,让我们把工作重心放在业务开发和创新上。

Amazon Neptune 支持常见的图形模型 Property Graph 和 W3C 的 RDF 及其关联的查询语言 Apache TinkerPop Gremlin 和 SPARQL ,从而使您能够轻松构建查询以有效地分析高度互连数据集。它支持社交网络分析、建议引擎、欺诈检测、知识图谱、药物开发和网络安全等应用案例。

下面我们将一步步告诉大家如何创建和使用 Amazon Neptune。

一、创建 Amazon Netpune

我们可以登录 AWS Console找到 Neptune 的界面,如下图:

fc50a736ed4d93ab0f1110dbfa17e2ff.png

选择点击“ Launch Amazon Neptune ”的图标会看到下面详细信息界面:

bca110edd63bc30c5ce3b1dabac34a6a.png

在此界面上可以指定是否在不同区域创建只读副本。只读副本不仅可以支持只读类型的工作负载,还可以提高集群的高可用性。当主实例出现故障,会自动故障转移到您在三个可用区之一中创建的多达 15 个 Neptune 副本中的一个。输入完后点击 “ Next ”,进入网络和安全配置页面。

48438f684ed6db07ef93ececbb2808e8.png

对于生产数据库,我们推荐用户将 Amazon Neptune 放在自己创建的 VPC 中,并且将数据库放在私有子网组中,访问数据库时可以通过 VPN 或堡垒机的方式在私有子网中维护您的数据库。

另外通过安全组来设置访问客户端的端口及 IP 等。安全组是白名单的机制,意味着只有您设置的 IP 源及端口可以访问您的数据库,从而保障数据库的安全。

通过上面几个界面的操作等待几分钟左右,Amazon Neptune 数据库集群成功。

二、设置访问 Amazon Neptune数据库的安全组

数据库创建完后,需要设置安全组,让需要的客户端能够访问数据库。您可以在 Amazon Neptune 的界面上找当前安全组,并进行修改。如下图:

5023c42ff67b911bc61996b679a56dfb.png

这里我内网的IP地址域是 172.31.0.0/16 ,因此设置的是所有内网的机器都能够访问我的数据库。要设置其它规则,和这个类似。

三、连接 Amazon Neptune

数据库集群建立好后,我们需要创建一个 EC2 实例作为客户端访问数据库。登录 AWS Console 并访问 EC2 服务,选择 Amazon Linux 作为客户端。

7a71a713ab6d152f553e0032ded26802.png

Amazon Linux 是列表中第二项。

四、在EC2客户端上安装连接工具

下面我们会使用跟 Amazon Neptune 在同一个子网中的 EC2 实例(前面第三步创建)来连接 Amazon Neptune 的实例。

1)控制台二进制文件需要 Java 8 。输入以下命令以在 EC2 实例上安装 Java 8 :

dcdab9295c5d8246a0cff4e56165e780.png

2)输入以下命令以在 EC2 实例上将 Java 8 设置为默认运行时:

6e44644eb156dd514c5b046501d8d778.png

系统会显示系统安装过的所有 java 的版本。输入 java 8 对应的数字。

3)从 Apache Tinkerpop3 网站下载访问 Amazon Neptune 的 Gremlin 客户端。

4)解压下载的压缩文件

5)进入解压后的文件夹并下载 Gremlin 远程证书

6)在 conf 目录中创建名为 neptune-remote.yaml 的文件,并加入下面信息:

076cc7d9fc1cbc22d6b9439cd1ae0494.png

其中红色部分的 Endpint 是您要连接的数据库的端点。请在 AWS Neptune Console 上查询。

如下图:

751fce11e9340276467fb3a46da910f2.png

在图中你可以看到连接的 Endpoint。

7)运行 bin 目录下的命令进入 Gremlin 控制台:

9726eb0b9982260b4fdc522d8a6fffa8.png

看到如下界面:

320468a40fb0cc04467fcb81206e7090.png

此时我们可以看到gremlin 的命令行提示符。

8)在 gremlin> 命令行提示符下,输入前面配置 endpoint 的文件,让 gremlin 连接我们创建的 neptune 数据库。

41deb666c412f1bbaf16092fda633f8b.png
580cc4e31f05d6840273dcb79d7fbe28.png

可以看到 gremlin 连接了我们配置的 Neptune 数据库。

9)输入下面命令,控制 gremlin 发送所有的命令到远程 Neptune 服务器:

0217b9ca9b5d72ddc92666259063eb60.png

10)为图增加一个顶点,输入下面命令:

99af5ae129fdbbc4323d1f765d209e58.png
6ad84bf5572985057897e65db849668e.png

11)输入下面命令退出:

c7cb589308546c5bed67cf37ffaa81be.png

五、加载数据

除了在上一步中所见的通过命令行插入数据到图数据库中,我们也可以将一定格式的数据存储到 S3 中,然后加载到图数据库中,详情请参考AWS官网。

内容作者:AWS 高级解决方案架构师 - 蓝勇

更多内容请查看:http://dwz.date/jwa

4a5476fd36ab362c30fe88f97ae3b54f.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在用pb开发信息管理系统时,为了安全期间,我们希望记录每个登录用户的信息,并生成日志,其中最重要的是知道是哪个机器运行程序的?这样,只要获取运行程序的机器ip问题就解决了,然而,pb中没有象delphi 中有现成的函数可以很方便的获的机器的ip,我们只好利用外部函数来实现了。首先声明外部函数function int WSAStartup( uint UIVersionRequested, ref s_WSAData lpWSAData ) library "wsock32.dll"function int WSACleanup() library "wsock32.dll"function int WSAGetLastError ( ) library "wsock32.dll"function int gethostname ( ref string name, int namelen ) library "wsock32.dll"function string GetHost(string lpszhost, ref blob lpszaddress ) library "PBWS32.DLL" 然后在form的open事件中执行如下代码就可以了s_wsadata l_WSADataint li_version = 257blob{4} lb_hostaddress IF wsastartup ( li_version, l_WSAData ) = 0 THEN IF gethostname ( ls_HostName, len(ls_HostName) ) < 0 THEN messagebox("GetHostName",WSAGetLastError()) ELSE GetHost(ls_HostName, lb_HostAddress) //获得主机名IP地址 ls_IpAddress = string(asc(string(blobmid(lb_HostAddress,1,1))),"000") + "." ls_IpAddress += string(asc(string(blobmid(lb_HostAddress,2,1))),"000") + "." ls_IpAddress += string(asc(string(blobmid(lb_HostAddress,3,1))),"000") + "." ls_IpAddress += string(asc(string(blobmid(lb_HostAddress,4,1))),"000") //将IP地址的ASC码形式转化为***.***.***.***字符串格式 END IF WSACleanup()ELSE messagebox("GetHostName",WSAGetLastError())END IF
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值