hana的使用是次意外,我們做的產品是要給不同的客戶使用,那麼就會有不同的要求,所以我們也是在開發階段就適配了多種資料庫, 我平時開發中最多用到的是MySQL,其次是oracle,還有PostgreSQL等,但是我從沒有接觸過有用SAP HANA的客戶,黑天鵝事件出現了 ,這次就遇到了。
OK,這次就把hana的使用遇到的個別性問題做個整理下。
客戶的需求shi是想要把資料庫從mysql轉到hana上去,我這邊要去驗證其可行性,按照下面步驟處理的
初始化工具
初始化表結構腳本
初始化表數據腳本
運行服務
總結
之前只聽說過hana是一個內存資料庫,可以提供很高效的數據操作,但是費用也很高,一般的公司用不起,都是用redis緩存重要的數據,在我的印象中用hana的公司就像一個用戴森吹風機的人一樣,哇,真有錢。驚訝歸驚訝 客戶就是上帝 活還是要幹的。我這邊拿到測試的帳號密碼是這樣的
HANA伺服器IP:192.xxx.xx.xx
登錄帳戶:SYSTEM
密碼:Ajisun1234
埠:35244
第一次接觸都不知道怎麼登錄,百度一番之後可以用SAP HANA Studio登錄,但是呢這個客戶端下載安裝登錄折騰了兩天才搞定,這個帳號依然沒有登錄成功. 因為我這個埠不是默認的,我下載的studio只能使用默認的埠,所以最終還是放棄了studio。後面通過詢問了解hana的同事 使用了DBeaver( https://dbeaver.io/) 還支持mac,後面就下載了這個客戶端開啟了han之旅。
0. 一些簡單的sql 操作hana的每個用戶都有自己默認的schema,所以執行的sql是默認的schema,想操作其他schema需要schema.table的方式(和oracle一樣)
CREATE USER ajisun PASSWORD Ajisun1234 NO FORCE_FIRST_PASSWORD_CHANGE;
drop schema ajisun
GRANT CREATE SCHEMA TO usernamehana的sql大體上是mysql/oracle一樣的,下面列舉一些差異性問題:
1. 分頁查詢功能mysql
SELECT * FROM user LIMIT 0 , 10 SELECT * FROM user LIMIT 10 offset 0hana
SELECT * FROM user LIMIT 10 offset 02. 批量操作
mysql
insert into user(id,name) values('ss'),('ss'),('ss')..hana
insert into user(id,name) select t.* from (select '張三' from dummy union allselect '李四' from dummy union allselect '王五' from dummy ) t3. 序列問題hana和oracle一樣都是有序列的,ID可以通過序列獲取oracl
oracle
SELECT user_S.nextval from dualhana
SELECT user_S.nextval from dummy4. 索引相關
同一個欄位建兩個不同名字的索引,mysql是支持的,hana不支持,相當於重複建索引了
5. TINYINT數據類型mysql 默認是無符號的範圍是-128~127,帶符號0~255
hana 沒有選擇,範圍是0~255
6. alter修改varchar的長度hana資料庫中varchar長度只能增加,不能減少