前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >HANA如此高大上,屌丝程序员可以玩吗?

HANA如此高大上,屌丝程序员可以玩吗?

作者头像
Bruce Li
发布2019-08-08 18:08:44
2.5K0
发布2019-08-08 18:08:44
举报

HANA是SAP推出的一款In-Memory数据库,能够既支持行式和列式存储,客户可以只有一份数据Copy就能够实现OLTP和OLAP的操作,尤其在OLAP场景下表现很强大。有兴趣的同学可以参考:https://www.sap.com/india/products/hana.html。

由于HANA是一个In-Memory数据库,所以对硬件的要求(特别是内存)非常高,一般的PC机上根本无法运行,不像传统的一些数据库。HANA一般都是只能在SAP认证的HANA服务器上运行,具体的认证服务器列表可以查看:https://www.sap.com/dmc/exp/2014-09-02-hana-hardware/enEN/appliances.html。

那么HANA如此高大上,一般的屌丝程序员可以玩吗?答案是Yes,屌丝程序员可以通过下面两种方法尝试HANA。

第一种方法:HANA Docker镜像

SAP发布了一个HANA Express Edition的Docker镜像,这个Express版本对硬件的要求相对来说不是很高,在PC机上就可以运行。具体如何在本地安装,可以参考这个Step-By-Step的教程(英文文档):https://developers.sap.com/tutorials/hxe-ua-install-using-docker.html。

下面是我如何利用HANA Docker镜像尝试HANA的步骤:

前提条件(包括本机环境)

  • OS: macOS 10.13.6(MacBook Pro)
  • Docker 18.06.0-ce
  • Docker store account

步骤1,准备一个如下docker compose file

代码语言:javascript
复制
version: '3'
services:
    hana:
      container_name: express_edition
      image: store/saplabs/hanaexpress:2.00.033.00.20180925.2
      ports:
        - 39013:39013
        - 39017:39017
        - 39041-39045:39041-39045
        - 1128-1129:1128-1129
        - 59013-59014:59013-59014
      ulimits:
        nofile:
          soft: 1048576
          hard: 1048576
      sysctls:
        kernel.shmmax: 1073741824
        kernel.shmmni: 524288
        kernel.shmall: 8388608
        net.ipv4.ip_local_port_range: "40000 60999"
      command: "--master-password HXEHana1 --agree-to-sap-license"

步骤二,启动docker

代码语言:javascript
复制
cd ${docker compose file directory}
docker-compose up

步骤三,打开一个新的控制台窗口,通过命令行连接HANA

代码语言:javascript
复制
C02WL71QHTD5:~ i321649$ docker exec -it express_edition bash                    //connect to HANA Express Edition docker shell
hxeadm@85b78d8a4f8d:/usr/sap/HXE/HDB90> whoami                                  //print current user on docker shell
hxeadm@85b78d8a4f8d:/usr/sap/HXE/HDB90> HDB info                                //print HANA db running info
hxeadm@85b78d8a4f8d:/usr/sap/HXE/HDB90> hdbsql                                  //run hdbsql client
hdbsql=> \h                                                                     //help document
hdbsql=> \c -n localhost:39017 -u SYSTEM -p HXEHana1                            //connect to SYSTEMDB
hdbsql SYSTEMDB=> select * from "SYS"."M_DATABASES"                             //list all the dbs

Note:HANA也支持标准的jdbc协议,所以也可以通过一些数据库客户端工具来操作HANA数据库,比如说DBeaver。

第二种方法:SCP上的HANA service

SAP在SAP Cloud Platform上把HANA暴露成了一个service(即是现在流行的Database as a Service),用户可以方便的直接在平台上subscribe这个服务,就可以使用,无需关注一些安装的细节。由于SCP上这个服务是收费的,如果只是想尝试一下,可以申请一个试用版本。如果你的公司有budget,可以申请一个SCP的正式账号,然后创建一个HANA service的instance。

下面是我如何用SCP Trial账号尝试HANA的步骤:

第一步,申请一个trial账号

第二步,Setup一个Cloud Foundry Trial环境,等setup好之后,进入这个Cloud Foundry Trial环境

第三步,在marketplace上找到SAP HANA Schema & HDI Container这个service,创建一个HANA instance。关于这个HANA service的具体信息及使用方式,可以查看这个service的documentation。

前面三步完成之后,意味着在一个共享的HANA数据库上成功的创建了一个HDI Container(类似于传统数据库schema的概念),接下来你就可以使用这个HANA数据库了,当然仅限于使用这个HDI Container。

那么怎么连接这个HANA数据库呢?下面演示以创建使用一个WISHLIST表为例。

第四步,在本地准备一个WISHLIST的目录

目录结构

代码语言:javascript
复制
src/
src/.hdiconfig
src/wishlist.table
manifest.yml
package.json

package.json

代码语言:javascript
复制
{
  "name": "wishlist-deployer",
  "dependencies": {
    "@sap/hdi-deploy": "3.8.2"
  },
  "engines": {
    "node": "8.15.1"
  },
  "scripts": {
    "start": "node node_modules/@sap/hdi-deploy/"
  },
  "devDependencies": {}
}

manifest.yml

代码语言:javascript
复制
---
applications:
- name: wishlist-deployer
  health-check-type: none
  memory: 256M
  buildpack: https://github.com/cloudfoundry/nodejs-buildpack
  services:
    - hana_db_trial

src/.hdiconfig

代码语言:javascript
复制
{
    "file_suffixes" : {
        "hdbtable" : {
            "plugin_name" : "com.sap.hana.di.table",
        "plugin_version" : "12.1.0"
        },
        "hdbrole": {
            "plugin_name": "com.sap.hana.di.role",
            "plugin_version": "12.1.0"
         },
        "hdbcds": {
                    "plugin_name": "com.sap.hana.di.cds",
                    "plugin_version": "12.1.0"
         },
         "hdbcalculationview" : {
            "plugin_name" : "com.sap.hana.di.calculationview", 
            "plugin_version": "2.0.0.0" 
        }
    }
}

src/wishlist.hditable

代码语言:javascript
复制
ROW TABLE WISHLIST (
  ID
    VARCHAR(255),
  title
    VARCHAR(255),
  description
    VARCHAR(255)
)

第五步,用cf命令行把上面这个nodejs应用部署到申请的Cloud Foundry Trial空间

代码语言:javascript
复制
cf push

第六步,在SCP上Enable SAP WebIDE,就可以利用WebIDE操作数据库

首先,切换到Neo Trail环境;

然后,找到WebIDE service激活;

最后,WebIDE service激活之后就可以使用了,连接到HANA,对WISHLIST表做CRUD操作。

References

  • 关于HDI Container的概念: https://help.sap.com/viewer/4505d0bdaf4948449b7f7379d24d0f0d/2.0.03/en-US/e28abca91a004683845805efc2bf967c.html
  • 如何使用HDI Deployer: https://help.sap.com/viewer/4505d0bdaf4948449b7f7379d24d0f0d/2.0.04/en-US/1b567b05e53c4cb9b130026cb2e7302d.html
  • HDI Artifact 文件格式:https://help.sap.com/viewer/4505d0bdaf4948449b7f7379d24d0f0d/2.0.01/en-US/9789224788a34d93a86080cab993575c.html
  • HANA数据库sql语法:https://help.sap.com/viewer/4fe29514fd584807ac9f2a04f6754767/2.0.03/en-US/20d4ecad7519101497d192700ce5f3df.html
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-08-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 天马行空布鲁斯 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档