Date Tags stream
  1. 嵌入式的库,可方便直接pip安装,不需要单独外面部署
  2. 基于dill的pickle,可以方便的将python对象存储
  3. 三个嵌入式数据库读写对比,看起来差别并不大,实际上都是本地读写文件,不做索要
  4. NB增加了数据库定长设置和时序数据存储回放,,NB默认是dill的pickle,可以存储函数。这里只展示定长存储和函数存储
In [2]:
from dill import dumps,loads

from unqlite import UnQLite
udb = UnQLite('utmp.db')

from vedis import Vedis
vdb=Vedis('vtmp.db')

from deva import *
ndb = NB('ntmp.db')
In [3]:
# 数据准备
df = NB('naja')['basic_df']
df.describe()
Out[3]:
pe totalAssets timeToMarket
count 9046.000000 9046.000000 9.046000e+03
mean 95.099828 1422.396747 2.007718e+07
std 388.246852 13936.501083 8.237193e+04
min 0.000000 0.320000 1.990121e+07
25% 12.950000 24.787500 2.000093e+07
50% 32.630000 60.340000 2.010013e+07
75% 69.365000 187.610000 2.015032e+07
max 10708.040000 334718.500000 2.020110e+07
In [4]:
%%timeit
vdb['a']=0
vdb['df']=dumps(df)
168 ms ± 15.5 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
In [5]:
%%timeit
ndb['a']=0
ndb['df']=df
201 ms ± 23.2 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
In [6]:
%%timeit
udb['a']=0
udb['df']=dumps(df)
182 ms ± 24.6 ms per loop (mean ± std. dev. of 7 runs, 1 loop each)
In [7]:
%%timeit
a = vdb['df']|loads@P
6.29 ms ± 152 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
In [8]:
%%timeit
b = udb['df']|loads@P
6.73 ms ± 858 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
In [9]:
%%timeit
c = ndb['df']
6.39 ms ± 88.8 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)
In [10]:
ldb=DBStream('test',maxsize=10,fname='/tmp/ldb')
for i in range(100):
    ldb[i]=1

ldb|len
Out[10]:
10
In [11]:
ldb.db.popitem()
ldb|len
Out[11]:
9
In [12]:
foo = lambda x:x**2
ldb['foo']=foo
ldb['foo'](3)
Out[12]:
9