Esper學習之十:EPL語法(六)
轉載請註明出處:http://blog.csdn.net/luonanqin
2014是新的一年,正好也是本人的本命年。既然是本命年,看來今年也是本人興旺之年了。。。開了個小玩笑,同時也祝各位同行今年少調bug多漲工資,這才是最實際的。
年前的最後一篇說的是子查詢和join,基本上epl的大部分簡單語法都說完了。之前有朋友問我epl怎麼和資料庫互動,正好今天這篇就是來專門解釋這個問題。但是要提醒各位,本篇只是說明了在epl中如何與資料庫互動,並且只能算是簡單的互動。而高階的用法會在esperio裡有詳細的指導(esperio的文件可在esper的官網找到)。
在esper的文件中,epl訪問資料庫的配置放在了比較靠後的位置,不過為了方便各位學習,這裡會先說明和資料庫互動的相關配置,然後再說epl怎麼訪問資料庫。
配置檔案在官方esper包的etc資料夾下,大家可以參考著學習。
1.連線資料庫
a.JNDI獲取連線
配置如下:
- <database-referencename="mydb1">
- <datasource-connectioncontext-lookup-name="java:comp/env/jdbc/mydb">
-
<env-property
- <env-propertyname="java.naming.provider.url"value ="iiop://localhost:1050"/ >
- </datasource-connection>
- </database-reference>
使用方法:
-
if (envProperties.size() >
- initialContext = new InitialContext(envProperties);
- } else {
- initialContext = new InitialContext();
- }
- DataSource dataSource = (DataSource) initialContext.lookup(lookupName);
- Connection connection = dataSource.getConnection();
更多內容可參考JNDI的文件
b.從連線池獲取連線
配置如下:(以dbcp為例)
- <database-referencename="mydb3">
- <!-- For a complete list of properties see Apache DBCP. -->
- <datasourcefactory-connectionclass-name="org.apache.commons.dbcp.BasicDataSourceFactory">
- <env-propertyname="username"value ="myusername"/>
- <env-propertyname="password"value ="mypassword"/>
- <env-propertyname="driverClassName"value ="com.mysql.jdbc.Driver"/>
- <env-propertyname="url"value ="jdbc:mysql://localhost/test"/>
- <env-propertyname="initialSize"value ="2"/>
- <env-propertyname="validationQuery"value ="select 1 from dual"/>
- </datasourcefactory-connection>
- <connection-lifecyclevalue="pooled"/>
- Properties props = new Properties();
- props.put("username", "myusername");
- props.put("password", "mypassword");
- props.put("driverClassName", "com.mysql.jdbc.Driver");
- props.put("url", "jdbc:mysql://localhost/test");
- props.put("initialSize", 2);
- props.put("validationQuery", "select 1 from dual");
- ConfigurationDBRef configDB = new ConfigurationDBRef();
- // BasicDataSourceFactory is an Apache DBCP import
- configDB.setDataSourceFactory(props, BasicDataSourceFactory.class.getName());
- configDB.setConnectionLifecycleEnum(ConfigurationDBRef.ConnectionLifecycleEnum.POOLED);
- Configuration configuration = new Configuration();
- configuration.addDatabaseReference("mydb3", configDB);
- configDB.setDataSourceFactory(props, MyOwnDataSourceFactory.class.getName());
- ...
- class MyOwnDataSourceFactory {
- publicstatic DataSource createDataSource(Properties properties) {
- returnnew MyDataSourceImpl(properties);
- }
- }
c.JDBC獲取連線
前提是要將對應的jdbc驅動假如classpath
- <database-referencename="mydb2">
- <drivermanager-connectionclass-name="com.mysql.jdbc.Driver"url="jdbc:mysql://localhost:3306/mydb2"user="myuser"password="mypassword">
- <connection-argname="user"value ="myuser"/>
- <connection-argname="password"value ="mypassword"/>
- <connection-argname="somearg"value ="someargvalue"/>
- </drivermanager-connection>
- </database-reference>
d.其他關於資料庫連線的配置
下面是一些和資料庫互動的配置,更多配置可參考Javadoc
- <database-referencename="mydb2">
- ... configure data source or driver manager settings...
- <connection-settingsauto-commit="true"catalog="mycatalog"read-only="true"transaction-isolation="1"/>
- </database-reference>
- <database-referencename="mydb2">
- ... configure data source or driver manager settings...
- <connection-lifecyclevalue="pooled"/><!-- retain -->
- </database-reference>
如果引數值為retain,則會將連線快取到esper引擎中,這個epl用完後,另一個epl可以接著用
2.查詢結果快取策略
EPL和資料庫互動時會產生查詢結果,所以引擎若能快取查詢結果將大大提高執行效率,因此esper提供了兩種快取模式。
a.LRU Cache
LRU即least-recently-used,中文釋義為“最近最少使用”,學過OS的應該知道記憶體快取策略裡也有這個演算法,不明白的請自行搜尋。配置如下:
-
<database-reference
相關推薦
Esper學習之十:EPL語法(六)
轉載請註明出處:http://blog.csdn.net/luonanqin 2014是新的一年,正好也是本人的本命年。既然是本命年,看來今年也是本人興旺之年了。。。開了個小玩笑,同時也祝各位同行今年少調bug多漲工資,這才是最實際的。
Esper學習之九:EPL語法(五)
轉載請註明出處:http://blog.csdn.net/luonanqin 暫停更新三個多月,轉眼間就2014年了。年底相信都是大家最忙碌的時候,我也不例外,以至於真的是沒騰出手來繼續更新,好在年初這段時間可以休息一陣了,所以趕著這段
Esper學習筆記五:EPL語法(3)
1.Aggregation 類似於SQL中的聚合函式,EPL中聚合函式格式如下: aggregate_function([all|distinct] expression) aggregate_function就是聚合函式的名字,比如avg,sum等。expression通常是事件
Esper學習筆記四:EPL語法(2)
1.select 查詢所有屬性或特定屬性 EPL的select和SQL的select很相近,SQL用*表示查詢表的所有欄位,而EPL用*表示查詢事件流的所有屬性值。SQL查詢某個欄位名,直接在select後跟欄位名就ok,EPL也是將要查詢的屬性名放在select之後。若查多個屬
Esper學習筆記三:EPL語法(1)
1.EPL語法簡介 EPL全稱Event Processing Language,是一種類似SQL的語言,包含了SELECT, FROM, WHERE, GROUP BY, HAVING 和 ORDER BY子句,同時用事件流代替了table作為資料來源,並且能像SQL那樣join,fil
Esper學習之十一:EPL語法(七)
轉載請註明出處:http://blog.csdn.net/luonanqin 元宵過後回公司上班,換了個部門,換了個領導,做的事也換了,不過Esper還是會繼續搞,所以部落格也會慢慢寫的,大家別急。^_^ 上一篇說到了EPL如何訪問關係型資料
Esper學習之六:EPL語法(二)
轉載請註明出處:http://blog.csdn.net/luonanqin 中秋三天,說閒也不閒,調調工作的程式碼,倒還解決不少問題。不過也是因為最近工作忙的緣故,Esper被我冷落不少日子了,趁著今天最後一天,趕緊寫一篇出來。 從
機器學習之十大經典演算法(八) PageRank演算法
PageRank演算法 (一) PageRank演算法簡介: Google的創始人之一LarryPage於1998年提出了PageRank,並應用在Google搜尋引擎的檢索結果排序上,該技術也是Google早期的核心技術之一。 L
Linux學習之多執行緒程式設計(六)
言之者無罪,聞之者足以戒。 ——《詩序》 4、執行緒私有屬性 應用程式設計中有必要提供一種變數,使得多個函式多個執行緒都可以訪問這個變數(看起來是個全域性變數),但是執行緒對這個變數的訪問都不會彼此產生影響(貌似不是全域性變數哦),但是你需要這樣的資料,比如errno。那
程式設計菜鳥到大佬之路:計算機作業系統(六)
處理器管理 中斷 中斷的概念 中斷是指程式執行過程中, 遇到急需處理的事件時, 暫時中止CPU上現行程式的執行,轉去執行相應的事件處理程式, 待處理完成後再返回原程式被中斷處或排程其他程式執行的過程。 作業系統是“中斷驅動” 的; 換言之, 中斷是啟用
Esper學習之十五:Pattern(二)
轉載請註明出處:http://blog.csdn.net/luonanqin 上一篇開始了新一輪語法——Pattern的講解,一開始為大家普及了幾個基礎知識,其中有說到操作符。當時只是把它們都列舉出來了,所以今天這篇就是專門詳解這些操作符的,但是由於篇幅限制
機器學習之支持向量機(三):核函數和KKT條件的理解
麻煩 ron 現在 調整 所有 核函數 多項式 err ges 註:關於支持向量機系列文章是借鑒大神的神作,加以自己的理解寫成的;若對原作者有損請告知,我會及時處理。轉載請標明來源。 序: 我在支持向量機系列中主要講支持向量機的公式推導,第一部分講到推出拉格朗日對偶函數的對
機器學習之支持向量機(一):支持向量機的公式推導
根據 監督式 art 通用 利用 哪些 這就是 在線 方法 註:關於支持向量機系列文章是借鑒大神的神作,加以自己的理解寫成的;若對原作者有損請告知,我會及時處理。轉載請標明來源。 序: 我在支持向量機系列中主要講支持向量機的公式推導,第一部分講到推出拉格朗日對偶函數的對偶因
在Ubuntu上學習OpenStack之九:網絡(計算)節點上網絡補充配置
分享 ini onf stack -a ubunt con openstac bubuko (註意:前面已經為計算+網絡節點配置了兩塊網卡eth0和eth1) v 執行如下命令: sudo ovs-vsctl add-br br-eth1 sudo ovs-vsctl ad
Keras學習之3:迴歸問題(boston_housing資料為例)
本實驗使用boston_housing資料集對房價資料進行迴歸分析,資料來自1970年代,波斯頓周邊地區的房價,是用於機器學習的經典資料集。該資料集很小,共計506條資料,分為404個訓練樣本和102個測試樣本,因此需要採用K-Fold,這裡取K=4。每條資料包含1
深度學習之正則化系列(2):資料集增強(資料增廣)
讓機器學習模型泛化得更好的最好辦法是使用更多的資料進行訓練。當然,在實踐中,我們擁有的資料量是很有限的。解決這個問題的一種方法是建立假資料並新增到訓練集中。對於一些機器學習任務,建立新的假資料相當簡單。對分類來說這種方法是最簡單的。分類器需要一個複雜的高維輸入
強化學習之三:雙臂賭博機(Two-armed Bandit)
本文是對Arthur Juliani在Medium平臺釋出的強化學習系列教程的個人中文翻譯,該翻譯是基於個人分享知識的目的進行的,歡迎交流!(This article is my personal translation for the tutorial wri
資料結構實驗之棧與佇列十:走迷宮(DFS)
Problem Description 一個由n * m 個格子組成的迷宮,起點是(1, 1), 終點是(n, m),每次可以向上下左右四個方向任意走一步,並且有些格子是不能走動,求從起點到終點經過每個格子至多一次的走法數。 Input 第一行一個整數T
【Unity 3D】學習筆記十:GUI Skin(圖形使用者介面面板)
Unity 學習筆記十 學習資料:《Unity 3D遊戲開發》 宣雨鬆 在這之前的學習的大部分控制元件用來開發遊戲還是太簡陋,為了讓遊戲更具娛樂性和美觀,所以我們就需要學習GUI Skin空間來為遊戲新增色彩。 首先在Project檢視中點選create---->
Echarts學習之十:series-bar柱形圖詳解
mytextStyle={ color:"#333", //文字顏色 fontStyle:"normal", //italic斜體 oblique傾斜 fontWeight:"normal",