細雨紛飛(600585) 20:28:16
@阿木 zdb是對象數(shù)據(jù)庫,可以容納各種對象挫鸽,對象和對象的區(qū)分说敏,是用id來干的
zdb內(nèi)置了TDataFrameEngine(zs用的數(shù)據(jù)結(jié)構(gòu)),isDF就是表示當前查詢到的對象是DataFrameEngine支持的數(shù)據(jù)結(jié)構(gòu)
VL掠兄,是ThashVariantList像云,這是key-value的數(shù)據(jù)結(jié)構(gòu)锌雀,value是Variant類型
VT蚂夕,是THashStringList迅诬,也是key-value,value類型永遠是字符串
TE婿牍,是ini結(jié)構(gòu)的數(shù)據(jù)庫侈贷,是bigInI
Json不解釋了
Other是自定義的數(shù)據(jù)格式,比如圖片等脂,就可以這種格式俏蛮,自行去判斷id
TQueryState是查詢過程中使用的對象,每次爬取一個對象都會以它來作為參數(shù)和你的程序交互
阿木(345148965) 20:29:05
這個上遥,解釋在哪里搏屑?
阿木(345148965) 20:29:07
我要看。
細雨紛飛(600585) 20:29:43
c_DF粉楚,c表示常量辣恋,const,df是DataFrameEngine的簡寫
阿木(345148965) 20:30:35
這個我知道模软,就是 每個數(shù)據(jù)引擎的標志位
林峰飛舞(5613606) 20:30:36
為什么不用全與
阿木(345148965) 20:30:45
我看到這了
阿木(345148965) 20:30:54
基本能理解
細雨紛飛(600585) 20:30:58
zdb存數(shù)據(jù)伟骨,就兩種方式,addData和insertData燃异,都是重載函數(shù)携狭,你可以給個你自己定義的id,然后用id來區(qū)分你的數(shù)據(jù)類型
細雨紛飛(600585) 20:32:06
query是遍歷查詢回俐,在zdb中逛腿,有后臺線程查詢和前臺查詢,這里區(qū)分一下就沒問題仅颇,zdb不要用在線程中
細雨紛飛(600585) 20:33:05
zdb的數(shù)據(jù)存儲后鳄逾,都會有個自己的StorePos,這個pos是數(shù)據(jù)庫的存儲坐標灵莲,你記住它就行了雕凹,以后需要就拿它去訪問數(shù)據(jù),不要再反復查詢了政冻,浪費時間
細雨紛飛(600585) 20:33:50
我記得vl枚抵,vt這兩個結(jié)構(gòu)都有csv和大型txt的外部支持
阿木(345148965) 20:34:27
這是 json server 的demo,我想弄在本地明场。
阿木(345148965) 20:34:29
還不知道如何寫
阿木(345148965) 20:34:57
MyCustomJsonAnalysisQuery 實際就是一個過濾函數(shù)吧
細雨紛飛(600585) 20:35:05
有個zdblocal的demo汽摹,它默認是df格式,你改成json格式就行了
細雨紛飛(600585) 20:35:23
@阿木 是的苦锨,查詢回調(diào)
細雨紛飛(600585) 20:35:39
在zs有很多demo用到過zdb
阿木(345148965) 20:35:45
我先嘗試下逼泣,insert query json吧趴泌。
細雨紛飛(600585) 20:37:37
insert需要一個storePos,在它前面插入拉庶,一般來說嗜憔,用addData就是寫數(shù)據(jù),查詢可以反向來
阿木(345148965) 20:37:48
嗯
細雨紛飛(600585) 20:38:33
數(shù)據(jù)和數(shù)據(jù)的關(guān)系+關(guān)聯(lián)氏仗,都用storePos來干就行了
阿木(345148965) 20:39:05
storePos 還不知道怎么獲取呢
細雨紛飛(600585) 20:39:23
執(zhí)行query時吉捶,在state里面
阿木(345148965) 20:39:31
找到了
阿木(345148965) 20:40:47
怎么顯示出來這個json?
細雨紛飛(600585) 20:40:51
按序列化方式皆尔,找store array這類方法
細雨紛飛(600585) 20:42:30
zdb每次查詢都會有個查詢?nèi)蝿?wù)呐舔,在任務(wù)中,有目標數(shù)據(jù)庫慷蠕,查詢的原數(shù)據(jù)庫珊拼,查詢到了多少條目,
每次遍歷會觸發(fā)filter流炕,遍歷完成會觸發(fā)done
細雨紛飛(600585) 20:43:32
Pipeline澎现,管線,是在zdb查詢?nèi)蝿?wù)基礎(chǔ)上做的高級查詢控制浪感,
阿木(345148965) 20:44:03
我現(xiàn)在就是想在done里面顯示出來
細雨紛飛(600585) 20:44:39
在filter里面顯示單條json昔头,在done顯示,你只能開output參數(shù)影兽,將查詢結(jié)果輸出揭斧,然后在done里面遍歷output數(shù)據(jù)庫
細雨紛飛(600585) 20:44:58
myoutput.waitquery(xxxx
細雨紛飛(600585) 20:47:26
也能在done時,再對myoutput做另一次查詢操作峻堰,即使你在查詢時候讹开,讓output在1秒后釋放,zdb會等待output沒有查詢?nèi)蝿?wù)才會釋放它
阿木(345148965) 20:48:37
. 這是就是對output進行的另外查詢吧
細雨紛飛(600585) 20:49:44
zdb有很多層次捐名,不要跨層使用旦万,
比如objectdata是純api的底層
objectdatamanger,是將api包成對象
zdbengine镶蹋,是在對象基礎(chǔ)上做成后臺引擎了
zdblocalmanager成艘,是在后臺引擎 上,做成查詢管線贺归,管理一批數(shù)據(jù)庫的中心系統(tǒng)
如果你在zdblocalmanager上使用淆两,就不要去調(diào)用下面的zdbengine,反復查詢都用zdblocalmanager里面的方法
阿木(345148965) 20:50:33
假如我從1000條里面查詢拂酣,得到了10個json對象秋冰,這10個,必須每一個單獨處理婶熬,或者最后在10個json集合上遍歷剑勾。
細雨紛飛(600585) 20:50:57
@阿木 非常正確
阿木(345148965) 20:51:38
為啥不一次性的顯示出這10個json呢埃撵?數(shù)組
細雨紛飛(600585) 20:52:17
@阿木 為什么要顯示出來?數(shù)據(jù)時拿來用的虽另,又不是拿來看的
阿木(345148965) 20:52:45
我表達錯了
阿木(345148965) 20:52:54
我的意思是暂刘,返回output的list
阿木(345148965) 20:52:59
或者array
阿木(345148965) 20:53:23
就是在done里面,直接拿到output list洲赵,而不需要再次query
阿木(345148965) 20:54:56
github
阿木(345148965) 20:55:11
我用string存進去鸳惯,能當json拿出來嗎商蕴?
細雨紛飛(600585) 20:55:12
細雨紛飛(600585) 20:55:23
@阿木 當然能
細雨紛飛(600585) 20:55:36
你自己注意區(qū)分id就行了
阿木(345148965) 20:55:45
那就好叠萍,我用qjson存進去
阿木(345148965) 20:55:57
群主的json控制,用的superobject吧绪商。
細雨紛飛(600585) 20:56:58
細雨紛飛(600585) 20:57:32
@阿木 隨意苛谷,反正都是對象,任何對象都可以用格郁,只能能用stream讀取保存的東西腹殿,zdb都能驅(qū)動
細雨紛飛(600585) 20:57:59
你可以自己包super,幾個函數(shù)的事
細雨紛飛(600585) 20:58:18
盡量避免跨層直接使用
阿木(345148965) 21:05:47
TZDBLocalManager 可以同時管理一堆db吧例书,每個db一個文件
細雨紛飛(600585) 21:06:56
@阿木 它就是干這件事的
細雨紛飛(600585) 21:07:50
盡量避免跨層call,TZDBLocalManager本身就提供了增刪查改了
細雨紛飛(600585) 21:08:13
阿木(345148965) 21:08:41
這個PostData,給一個庫添加數(shù)據(jù)罐寨。
每個庫昆汹,對應一個文件,相當于一個對象集合树瞭,每個庫拇厢,只能有一種類型吧?
細雨紛飛(600585) 21:09:16
@阿木 不是晒喷。能有多種類型孝偎,你自己編程去判斷數(shù)據(jù)的ID
阿木(345148965) 21:09:50
明白了,類型凉敲,其實是可以轉(zhuǎn)換的衣盾。
阿木(345148965) 21:09:59
比如string和json
細雨紛飛(600585) 21:10:37
@阿木 有差別的
阿木(345148965) 21:11:23
我看代碼了,是不同的engin
細雨紛飛(600585) 21:11:29
你在查詢時爷抓,string是一個字符串势决,json算數(shù)據(jù)結(jié)構(gòu)了,都在內(nèi)存中废赞,占用內(nèi)存大小各不相同徽龟,zdb退火系統(tǒng)就是管理他們的內(nèi)存暫用的
阿木(345148965) 21:12:00
這些明白
阿木(345148965) 21:12:02
了
細雨紛飛(600585) 21:12:40
比如這段代碼,js被zdb取出來唉地,我們并沒有釋放据悔,也沒有在使用前創(chuàng)建json传透,都是zdb內(nèi)部在管理它的內(nèi)存開銷
阿木(345148965) 21:12:42
我添加后,這樣取不到
阿木(345148965) 21:12:51
查詢到了
細雨紛飛(600585) 21:14:22
zdb為了達到最高的查詢效率极颓,把你使用過的對象朱盐,都暫存到內(nèi)存去了,當你再次使用菠隆,相當于高頻率查詢兵琳,zdb會把對象直接調(diào)度到你面前,根本不需要反復創(chuàng)建骇径,讀取zdb的stream
阿木(345148965) 21:15:31
querycounter是20躯肌,說明,遍歷全了破衔。
阿木(345148965) 21:16:10
QueryResultCounter 也是1
阿木(345148965) 21:17:05
前面 是true
為啥后面這個斷點沒有到清女?
阿木(345148965) 21:17:07
我查詢的參數(shù)有問題吧?
三人行(1491567248) 21:17:13
分布式下,多臺服務(wù)器呢?
阿木(345148965) 21:17:16
第一個 應該是true
阿木(345148965) 21:17:22
可以
三人行(1491567248) 21:17:24
這個查到的數(shù)據(jù),是最新數(shù)據(jù)?
阿木(345148965) 21:17:33
用的就是 群主的io
三人行(1491567248) 21:18:10
后臺通過另一臺服務(wù)器更新,那從緩存取出來的數(shù)據(jù),就不一定是最新的了
阿木(345148965) 21:18:16
弄出來了
阿木(345148965) 21:18:20
阿木(345148965) 21:18:27
基本思路明白了晰筛。
細雨紛飛(600585) 21:19:21
@阿木 以后你負責教zdb
細雨紛飛(600585) 21:19:37
教一個就行了嫡丙,讓他再教另一個
阿木(345148965) 21:29:36
這個是output吧?
細雨紛飛(600585) 21:34:24
是的
阿木(345148965) 21:43:24
這個读第,怎加索引曙博?
阿木(345148965) 21:43:40
加入從1000萬里面檢索,還不慢死
阿木(345148965) 21:44:08
只有一個key的hash怜瞒?
細雨紛飛(600585) 21:46:29
@阿木 加內(nèi)存 開大緩存
阿木(345148965) 21:46:37
默認值是0父泳,這個是個大bug
細雨紛飛(600585) 21:46:41
@阿木 不止
阿木(345148965) 21:47:26
尤其是這個 bool,有百分之五十的概率是錯誤的盼砍。
細雨紛飛(600585) 21:48:13
預處理一下
阿木(345148965) 21:49:41
起碼要有個default
阿木(345148965) 21:50:46
這個尘吗,怎么實現(xiàn)分頁?
阿木(345148965) 21:50:56
比如浇坐,查詢11-20項
阿木(345148965) 21:51:13
有個limit
細雨紛飛(600585) 21:52:15
@阿木 查完 除法來分
阿木(345148965) 21:53:05
這個就是那個索引吧
阿木(345148965) 21:53:57
qState睬捶。StorePos 是按照順序的吧
阿木(345148965) 21:54:07
或者說遞增的。
細雨紛飛(600585) 21:54:46
是的
細雨紛飛(600585) 21:57:10
@阿木 index是 pos不是
細雨紛飛(600585) 21:57:57
查完 輸出以后 在輸出庫實現(xiàn)分頁
阿木(345148965) 21:58:59
輸出庫房分頁近刘,點擊下一頁的時候擒贸,還要在前面庫
阿木(345148965) 21:59:07
還要在總庫上跑一遍。
阿木(345148965) 21:59:19
除非把輸出庫保存觉渴。
阿木(345148965) 21:59:39
當時 10個人查詢的條件不一樣的介劫,不可能為每個人保存一個輸出庫吧?
阿木(345148965) 22:03:58
TZDBLocalManager 是不是缺少個deleteDB案淋?我沒有找到
細雨紛飛(600585) 22:05:31
@阿木 分頁用是臨時庫 讓它活久點就行了
細雨紛飛(600585) 22:05:44
@阿木 有吧
阿木(345148965) 22:06:35
分頁有思路
阿木(345148965) 22:06:39
刪除沒找到
細雨紛飛(600585) 22:09:39