LightDB-指定lightdb_syntax_compatible_type切换不同数据引擎

在LightDB数据库中,可以指定lightdb_syntax_compatible_type去切换到不同数据库引擎,比如Oracle、MySQL,这有点类似于MySQL中存储引擎的概念,LightDB支持不同数据库引擎,我们分别可以在cluster、数据库、用户、sql级别去指定

1、cluster级别(整个实例级别)

如下配置文件中添加lightdb_syntax_compatible_type=oracle

[lightdb@101-35-191-172 defaultCluster]$ tail -f postgresql.conf
parallel_setup_cost=10000
shared_preload_libraries='canopy,pg_stat_statements,lt_stat_activity,pg_prewarm,pg_cron,pgaudit,pg_hint_plan,pg_show_plans,lt_standby_forward,pg_pathman'
track_io_timing=on
log_min_messages=info
temp_buffers=64MB
commit_siblings=10
canopy.shard_count=4
min_parallel_table_scan_size=2GB
lock_timeout=1900000
lightdb_syntax_compatible_type=oracle
#然后执行
lt_ctl reload
lightdb@postgres=# show lightdb_syntax_compatible_type ;
 lightdb_syntax_compatible_type 
--------------------------------
 Oracle
(1 row)


2、用户级别

ALTER ROLE
lightdb@postgres=# \c fund60 oracle_test;
oracle_test@fund60=# select * from user_ind_columns where rownum < 2;
 column_name |     index_name      |  table_name   
-------------+---------------------+---------------
 CUST_ID     | i_account_custid_po | account
(1 row)

3、数据库级别

设置database级别,database下所有对象支持oracle语法兼容

oracle_test@fund60=# alter database fund60 set lightdb_syntax_compatible_type to oracle;
ALTER DATABASE

4、session级别

lightdb@postgres=# show lightdb_syntax_compatible_type ;
 lightdb_syntax_compatible_type 
--------------------------------
 off
(1 row)
lightdb@postgres=# create table testoracle ( id number, name varchar2(100));
CREATE TABLE
lightdb@postgres=# show search_path ;
       search_path       
-------------------------
 "$user", public, oracle
(1 row)
lightdb@postgres=# select * from testoracle where rownum < 2;
ERROR:  lightdb rownum not enable, syntax compatible type is not oracle.
lightdb@postgres=# set lightdb_syntax_compatible_type = oracle;
SET
lightdb@postgres=# select * from testoracle where rownum < 2;
 id | name 
----+------
(0 rows)

1、lightdb_syntax_compatible_type 和 search_path 包含不同的内容,比如varchar2数据类型是Oracle特有的数据类型,其兼容特性是由 search_path 控制,而 rownum等相关特性是由 lightdb_syntax_compatible_type控制

2、推荐使用数据库级别设置lightdb_syntax_compatible_type,这样更符合业务需求,一般业务都是跟着数据库级别走的。


请使用浏览器的分享功能分享到微信等