精华内容
下载资源
问答
  • V4fastDB-源码

    2021-03-20 03:35:09
    V4fastDB
  • fastdb心得

    2012-12-05 12:33:55
    fastdb心得 对FastDB进行的几点说明: 1、 功能归纳 2、 工作原理 3、 部署方法 4、 接口调用方法
  • fastdb中文

    2013-06-02 14:28:57
    fastdb中文描述,需要了解实时库的朋友可以看看!
  • fastdb 使用

    2017-02-07 15:47:00
    fastdb 使用 fastdb的官网 fastdb怎么在Linux上面安装? $ su - $ cd /usr/local/src $ wget http://www.garret.ru/fastdb-3.76.tar.gz $ tar -xvf fastdb-3.76.tar.gz $ cd fastdb $ ./config...
    展开全文
  • FastDb 概念

    千次阅读 2018-09-07 20:30:42
    fastdb中的数据保存在表中,这些表对应于c++类,其中表记录对应于类实例。下面的c++数据类型可以作为fastdb记录的原子组件:   Type Description bool boolean type (true,...

     

    1 类型

    fastdb中的数据保存在表中,这些表对应于c++类,其中表记录对应于类实例。下面的c++数据类型可以作为fastdb记录的原子组件:

     

    Type

    Description

    bool

    boolean type (true,false)

    int1

    one byte signed integer (-128..127)

    int2

    two bytes signed integer (-32768..32767)

    int4

    four bytes signed integer (-2147483648..2147483647)

    int8

    eight bytes signed integer (-2**63..2**63-1)

    real4

    four bytes ANSI floating point type

    real8

    eight bytes ANSI double precision floating point type

    char const*

    zero terminated string

    dbReference<T>

    reference to class T

    dbArray<T>

    dynamic array of elements of type T

     

     

    2 字段描述符

     

    下面的宏可以用来构造字段描述符。

    (1) FIELD(name)

    指定名字的非索引字段。

    (2) KEY(name, index_type)

    索引字段。index_type必须是HASHED和INDEXED标志的组合。当指定HASHED标志的时候,fastdb将为是用这个字段作为关键字的表创建一个hash表。当指定INDEXED标志时,fastdb将创建为使用这个字段作为关键字的表创建一个T_tree(一种特殊的索引)。

    (3) UDT(name, index_type, comparator)

    用户自定义原始二进制类型。数据库把这种类型作为指定大小的字节序列处理。这个字段可以用来查询(比较下同一类型的查询参数),可以通过order子句来索引和使用。通过程序员提供的comparator函数来进行比较操作。比较函数接受3个参数:两个指向待比较的原始二进制对象的指针及其大小。index_type的语义与KEY宏中的一致。

    (4) RAWKEY(name, index)

    带有预定义比较算子的原始二进制类型。这个宏只是一个把memcmp作为比较算子的UDT宏的特例。

    (5) RAWFIELD(name)

    另一个UDT宏的特例,使用memcmp作为预定义比较算子,并且没有索引。

    (6) SUPERCLASS(name)

    指定当前类的基类(父亲)的信息。

    (7) RELATION(reference, inverse_reference)

    指定类(表)之间的一对一、一对多或者多对多的关系。reference和inverse_reference字段都必须是引用或者引用数组类型。inverse_reference字段是一个包含了指向当前表的逆引用的引用表。逆引用自动由fastdb更新并用于查询优化。

    (8) OWNER(reference, inverse_reference)

    指定类之间的一对一、一对多或者多对多的owner-member关系。当owner记录被删除时所有引用的member记录也会被删除(层叠式删除)。如果member记录要引用owner就必须通过RELATION宏声明。

    (9) METHOD(name)

    为类指定一个方法。该方法必须是无参的实例成员函数,返回bool值、数值、引用或者字符串类型。方法必须在类的所有属性之后指定。

     

     

    3 引用

     

    fastdb总是处理对象并且不支持连接。连接可以用引用来实现。考虑经典的Supplier-Shipment-Detail例子:

    struct Detail 
    
    {
    
        char const* name;
    
        double      weight;
    
    
    
        TYPE_DESCRIPTOR((KEY(name,INDEXED), FIELD(weight)));
    
    };
    
    
    struct Supplier
    {
    
        char const* company;
        char const* address;
    
        TYPE_DESCRIPTOR((KEY(company,INDEXED),
                         FIELD(address)));
    
    };
    
    
    struct Shipment
    {
    
        dbReference<Detail>  detail;
        dbReference<Supplier> supplier;
    
        int4        price;
        int4        quantity;
        dbDateTime  delivery;
    
        TYPE_DESCRIPTOR((KEY(detail,HASHED),
                         KEY(supplier, HASHED),
                         FIELD(price), FIELD(quantity),
                         FIELD(delivery)));
    };

     

       我们打算获得某些特定供应商的供应的某些特定细节。在关系数据库中这种查询将会写成这样:    

    select fromSupplier,Shipment,Detail where 
           Supplier.SID= Shipment.SID and Shipment.DID = Detail.DID 
           and Supplier.company like ? and Supplier.address like ? 
           and Detail.name like ?

    fastdb中将会写成这样: 

    dbQuery q = "detail.namelike",name,"and supplier.company like",company,
                "and supplier.addresslike",address,"order by price";

    fastdb将首先在表Detail中进行索引查找获得匹配查找条件的记录。然后在所选的记录中再进行一次索引查找以定位装载记录。然后对剩余的选择断言进行顺序查找。

     

     

    4 Cursor

     

    (1) 游标用来访问选择语句返回的记录。fastdb提供了有类型的游标,也就是说,与具体表相关的游标。fastdb有两种游标:只读游标和用于更新的游标。fastdb中的游标用c++模板类dbCursor<T>来表示,其中T为与数据库表相关的C++类的的名字。游标类型必须在构造游标的时候指定。缺省创建一个只读游标。要创建一个用于更新的游标,必须给构造函数传递一个dbCursorForUpdate参数。

     

    (2) 执行一个查询要么通过游标select(dbQuery &q)方法,要么通过select()方法,后者可以迭代表中的所有记录。两个方法都返回中选的记录的数量,并且把当前位置置于第一个记录(如果有的话)。游标可以前滚或者后滚。next(),prev(),first(),last()方法可以用来改变游标的当前位置。如果由于没有(更多)的记录存在而使得操作无法进行,这些方法将返回NULL,并且游标的位置不改变。

     

    (3) 一个类T的游标包含一个类T的实例,用来获得当前的记录。这就是为什么表类必须要有一个缺省构造函数(无参数的构造函数)而没有副作用。fastdb优化了从数据库中获取记录,只从对象的固定部分复制记录。字符串本身并不复制,而是使相应的字段直接指向数据库中。数组也是如此:他们的组件在数据库中的表示根在应用程序中的表示是一样的(标量类型的数组或者标量组件的嵌套结构的数组)。

     

    (4) 应用程序不能直接改变数据库中的字符串和数据元素。当一个数组方法需要更新一个数组体时,先在内存中创建一个副本然后更新这个副本。如果程序员要更新字符串字段,他应该给这个指针赋一个新值,而不是直接修改数据库里的字符串。对于字符串元素建议使用char const * 而不是char *,以使编译器可以检查对字符串的非法使用。

     

    (5) 游标类提供了get()方法来获得指向当前记录(保存在游标中)的指针。重载的运算符' ->'也可以用来访问当前记录的元素。如果一个游标一更新方式打开,就可以改变当前的记录并且用update()方法保存到数据库中或者被删除掉。如果当前记录被删除,下一个记录变为当前记录。如果没有下一个记录,则前一个记录(如果有的话)变为当前。removeAll()方法删除表中的所有记录。而removeAllSelected方法只删除游标选择的所有记录。

     

    (6) 当更新记录后,数据库的大小可能会增加。从而虚拟存储器的数据库区域需要进行扩展。该重映射的后果之一就是,该区域的基地址可能发生变化,然后应用程序中保存的所有数据库指针都变得无效。当数据库区域重映象时fastdb自动更新所有打开的游标中的当前记录。因此,当一个数据库更新时,程序员应该通过游标的->方法来访问记录字段,而不应该使用指针变量。

     

    (7) 当前选择使用的内存可以通过reset()方法来释放。该方法自动的由select()、dbDatabase::commit()、dbDatabase::rollback()方法以及游标的销毁(destructor)函数调用,因此大多数情况下不需要显式调用reset()方法。

     

    (8) 游标也可以通过引用来访问记录。at(dbReference<T>const& ref)方法把游标指向引用所指的记录。在这种情况下,选择将只包含一个记录,而next(),prev()方法将总是返回NULL。由于游标和引用在fastdb重视严格类型化的,所有必须的检查可以有编译器静态的进行而不需要动态类型检查。运行时唯一要进行的检查是对空引用的检查。游标中当前记录的对象标识符可以用currentId()方法获得。

     

    (9) 可以限制select语句返回的记录的数目。游标类有两个方法setSelectionLimit(size_t lim)和unsetSelectionLimit()用来设置/取消查询返回的记录数的限制。在某些情况下,程序员可能只需要几个记录或者头几个记录,从而查询的执行时间和消耗的内存大小可以通过限制选择的大小来降低。但如果你指定了被选记录的排序方式,只选择k个记录的查询并不返回关键字最小的头k个记录,而是返回任意k个记录然后排序。

     

    于是所有数据库数据的操作都可以通过游标来进行,唯一的例外是插入操作,fastDB提供了一个重载的插入函数:

    template<class T>
    dbReference<T> insert(T const& record);

     

    该函数将在表的末尾插入一个记录然后返回该对象的引用。fastdb中插入的顺序是严格指定的因而应用程序可以使用表中记录排序方式的假定。因为应用程序大量使用引用在对象之间导航,有必要提供一个根对象,从这个对象开始进行引用遍历。这样一个根对象的一个可取候选者就是表中的第一个记录(也是表中最老的记录).该记录可以通过不带参数执行select()方法来访问。游标中的当前记录就是表中的第一条记录。

     

    fastdb的c++API为引用类型定义了一个特殊的null变量,可以用null变量与引用比较或者赋给一个引用:

    void update(dbReference<Contract> c)
    {
        if (c != null)
        {
    
            dbCursor<Contract>contract(dbCursorForUpdate);
            contract.at(c);
            contract->supplier = null;
        }
    }

     

     

    (10) 查询参数通常跟c++变量绑定。大多数情况下这是方便而且灵活的机制。但在多线程应用中,无法保证同一查询会在同一时刻不被另一线程以不同的参数执行。一个解决的方法是使用同步原语(临界区或者mutex)来排除查询的并发执行。但这种方法会导致性能退化。fastdb可以并行操作读操作而提高了整体系统吞吐量。另一个解决方法是使用延迟参数绑定。如下所示:

    dbQuery q;
    
    struct QueryParams
    {
        int salary;
        int age;
        int rank;
    };
    
    
    void open()
    {
    
        QueryParams* params = (QueryParams*)NULL;
        q = "salary > ", params->salary, "and age < ",params->age, "and rank =", params->rank;
    }
    
    void find(int salary, int age, int rank)
    {
    
        QueryParams params;
    
        params.salary = salary;
        params.age = age;
        params.rank = rank;
    
        dbCursor<Person> cusor;
    
        if (cursor.select(q, &params) > 0)
        {
    
            do
            {
                cout << cursor->name << NL;
    
            } while (cursor.next());
        }
    }

     

    在这个例子中open函数只为结构中的字段偏移绑定查询变量。然后再find函数中,指向带有参数的结构的真实的指针传递给select结构。find函数可以被多个线程并发执行而只有一个编译好的查询被所有这些线程使用。这种机制从版本2.25开始使用。

     

     

     

     

     

     

     

     

     

     

    展开全文
  • FastDB Browser

    2009-04-26 12:54:17
    The FastDB browser is a frontend tool to monitor content and structure of FastDB databases. FastDB is a Main Memory Object Relational Database Management System (MMORDBMS) written by Konstantin A. ...
  • fastdb.dll标准DLLapi, 346k,比较迷你很值的学习。里面有好几个工程,几个模块,外国网站上找的。在中国想找几个简单点的FASTDB例子都难。好多都要编绎,结果又失败。还有更好的欢迎联系我一起学习(Q:527524938)...
  • fastdb相关备忘

    2019-07-30 14:46:57
    选择fastdb主要有两个原因, 1.内存数据库,体量小,速度快 2.其数据结构与交易系统非常类似(很大可能性是交易系统fld那套东西借鉴了fastdb,猜的:) 部署&安装 下载http://www.garret.ru/fastdb.html ok@...

    选择fastdb主要有两个原因, 
    1.内存数据库,体量小,速度快 
    2.其数据结构与交易系统非常类似(很大可能性是交易系统fld那套东西借鉴了fastdb,猜的:)

    部署&安装

    • 下载 
      http://www.garret.ru/fastdb.html
    ok@x1:~/下载$ ll fastdb-3.76.tar.gz
    -rw-rw-r-- 1 ok ok 3287628 7月 10 10:29 fastdb-3.76.tar.gz
    • 编译安装
    1. ok@x1:~/下载$ ll fastdb-3.76.tar.gz
    2. -rw-rw-r-- 1 ok ok 3287628 7月 10 10:29 fastdb-3.76.tar.gz
    3. ok@x1:~/workspace/fastdb$ ./configure
    4. ok@x1:~/workspace/fastdb$ make
    5. ok@x1:~/workspace/fastdb$ sudo make install

    修改源码

    • 宏冲突 
      TYPE_DESCRIPTOR,fastdb也使用了这个宏,或者说交易系统也用了这个宏,连名字都不改一下。。。 
      纠结了一下,是该交易系统的代码呢还是还fastd的呢? 
      当然,哪个好改改哪个,fastdb走起。 
      有一处定义,和20几处的使用,当然不能手动改了,脚步继续走起:
    1. find -name "*.h" | xargs sed -i 's/TYPE_DESCRIPTOR/FAST_TYPE_DESCRIPTOR/g'

     

    FAST_TYPE_DESCRIPTOR是目标

    • config.h
    
     
    1. frank@frank-ThinkPad-13:~/workspace/adapter/DatToText/bin$ ./parsedata -d trade20140221.dat
    2. Incompatibility between headers and library: 6 vs. 4

    注释掉下面的宏

    1. // LARGE_DATABASE_SUPPORT - support databases with size larger than 4Gb.
    2. // If this macro is defined FastDB maximal database size is limited by 1 terrabyte.
    3. // Defnining this macro increase iniitial database size and object index size (because
    4. // 64-bit offsetss are used instead fo 4-byte offsets). Also FastDB library compiled with
    5. // LARGE_DATABASE_SUPPOR will not be able to work with database created by library
    6. // built without LARGE_DATABASE_SUPPOR and visa versa.
    7. #if !defined(_WIN32) || defined(_WIN64) // most unixes are now 64-bit, while 32-bit windows is still quite popular
    8. #define LARGE_DATABASE_SUPPORT
    9. #endif

    重新编译安装fastdb

    跑一下看看 

    只做了几个表先跑一下试试,生成数据文件dce_db.fdb,先用客户端试试:
    
     
    1. frank@frank-ThinkPad-13:~/workspace/adapter/DatToText/bin$ subsql
    2. SubSQL interactive utility for FastDB v. 3.75
    3. Type 'help' for more information
    4. >> help
    5. SubSQL commands:
    6.  
    7. open 'database-name' ( 'database-file-name' ) ';'
    8. select ('*') from <table-name> where <condition> ';'
    9. update <table-name> set <field-name> '=' <expression> {',' <field-name> '=' <expression>} where <condition> ';'
    10. create table <table-name> '('<field-name> <field-type> {',' <field-name> <field-type>}')' ';'
    11. alter table <table-name> '('<field-name> <field-type> {',' <field-name> <field-type>}')' ';'
    12. rename <table-name> '.' <old-field-name> 'to' <new-field-name> ';'
    13. delete from <table-name>
    14. drop table <table-name>
    15. drop index <table-name> {'.' <field-name>} ';'
    16. create index on <table-name> {'.' <field-name>} ';'
    17. drop hash <table-name> {'.' <field-name>};
    18. create hash on <table-name> {'.' <field-name>}field> ';'
    19. insert into <table-name> values '(' <value>{',' <value>} ')' ';'
    20. backup [compactify] 'file-name'
    21. start server URL number-of-threads
    22. stop server URL
    23. start http server URL
    24. stop http server
    25. describe <table-name>
    26. import 'xml-file-name'
    27. export 'xml-file-name'
    28. show
    29. profile
    30. commit
    31. rollback
    32. autocommit (on|off)
    33. exit
    34. help
    35.  
    36. >> open 'dce_db';
    37. >> show
    38. FastDB version : 3.75
    39. Database version : 3.75
    40. Database file size: 1048576 Kb
    41. Object index size : 1048576 handles
    42. Used part of index: 811734 handles
    43. Number of users : 1
    44. Number of readers : 1
    45. Number of writers : 0
    46. Number of blocked readers : 0
    47. Number of blocked writers : 0
    48.  
    49. TABLES:
    50. OID FixedSize Fields Columns TableName
    51. ---------------------------------------------------------
    52. 0x00201c 40 3 3 FTtCreditPreFrozen
    53. 0x002003 52 5 5 FTtMemberClearAccount
    54. 0x002002 76 8 8 FTtClient
    55. 0x000001 52 17 8 Metatable
    56. >> describe FTtMemberClearAccount;
    57.  
    58. OID=0x002003, TableName=FTtMemberClearAccount
    59. No Index FieldType RefTableName FieldName InverseFieldName Flg
    60. --------------------------------------------------------------------------------
    61. 0 H+T String (null) MemberId (null) 3
    62. 1 - String (null) ClearAccountNo (null) 0
    63. 2 - String (null) Status (null) 0
    64. 3 - String (null) RegDate (null) 0
    65. 4 - String (null) LogoutDate (null) 0
    66. >>
    67. >> select * from FTtMemberClearAccount where rowno<10
    68. ;
    69. --------------------------------------------^
    70. Field not found
    71. >> select * from FTtMemberClearAccount ;
    72. MemberId ClearAccountNo Status RegDate LogoutDate
    73. ('0011', '0011', '0', '19930101', ''),
    74. ('0012', '0012', '0', '19930101', ''),
    75. ('0014', '0014', '0', '19930101', ''),
    76. ('0015', '0015', '0', '19930101', ''),
    77. ('0016', '0016', '0', '19930101', ''),
    78. ('0018', '0018', '0', '19990813', ''),
    79. ('0019', '0019', '0', '20000516', ''),
    80. ('0020', '0020', '0', '19930101', ''),
    81. ('0021', '0021', '0', '19930101', ''),
    82. ('0022', '0022', '0', '19990813', ''),
    83. ('0023', '0023', '0', '19990120', ''),
    84. ('0025', '0025', '0', '19990122', ''),
    85. ('0026', '0026', '0', '20001025', ''),
    86. ('0030', '0030', '0', '19930101', ''),
    87. ('0033', '0033', '0', '19930101', ''),
    88. ('0035', '0035', '0', '20010514', ''),
    89. ('0036', '0036', '0', '19930101', ''),
    90. ('0037', '0037', '0', '20001120', ''),
    91. ('0038', '0038', '0', '19930101', ''),
    92. ('0039', '0039', '0', '19930101', ''),
    93. ('0040', '0040', '0', '20000712', ''),
    94. ('0042', '0042', '0', '19991026', ''),
    95. ('0043', '0043', '0', '19990603', ''),
    96. ('0046', '0046', '0', '19930101', ''),
    97. ('0048', '0048', '0', '20000717', ''),
    98. ('0049', '0049', '0', '19990308', ''),
    99. ('0050', '0050', '0', '19930101', ''),
    100. ('0051', '0051', '0', '19930101', ''),
    101. ('0052', '0052', '0', '19930101', ''),
    102. ('0053', '0053', '0', '19990118', ''),
    103. ('0056', '0056', '0', '19991215', ''),
    104. ('0057', '0057', '0', '20001225', ''),
    105. ('0058', '0058', '0', '19930101', ''),
    106. ('0060', '0060', '0', '20021111', ''),
    107. ('0062', '0062', '0', '19990531', ''),
    108. ('0063', '0063', '0', '19990603', ''),
    109. ('0065', '0065', '0', '19930101', ''),
    110. ('0066', '0066', '0', '19990813', ''),
    111. ('0067', '0067', '0', '19991026', ''),
    112. ('0069', '0069', '0', '20001127', ''),
    113. ('0070', '0070', '0', '19930101', ''),
    114. ('0071', '0071', '0', '19991026', ''),
    115. ('0072', '0072', '0', '19991215', ''),
    116. ('0074', '0074', '0', '19930101', ''),
    117. ('0075', '0075', '0', '19930101', ''),
    118. ('0078', '0078', '0', '19930101', ''),
    119. ('0080', '0080', '0', '19930101', ''),
    120. ('0081', '0081', '0', '19930101', ''),
    121. ('0082', '0082', '0', '19990813', ''),
    122. ('0084', '0084', '0', '19990302', ''),
    123. ('0085', '0085', '0', '19930101', ''),
    124. ('0088', '0088', '0', '19930101', ''),
    125. ('0089', '0089', '0', '19930101', ''),
    126. ('0092', '0092', '0', '19990813', ''),
    127. ('0093', '0093', '0', '19990603', ''),
    128. ('0095', '0095', '0', '19930101', ''),
    129. ('0096', '0096', '0', '20011107', ''),
    130. ('0097', '0097', '0', '19930101', ''),
    131. ('0098', '0098', '0', '20090720', ''),
    132. ('0099', '0099', '0', '19930101', ''),
    133. ('0100', '0100', '0', '20000817', ''),
    134. ('0101', '0101', '0', '20001207', ''),
    135. ('0102', '0102', '0', '19930101', ''),
    136. ('0103', '0103', '0', '19930101', ''),
    137. ('0104', '0104', '0', '20010807', ''),
    138. ('0105', '0105', '0', '19930101', ''),
    139. ('0106', '0106', '0', '19990813', ''),
    140. ('0107', '0107', '0', '19930101', ''),
    141. ('0108', '0108', '0', '20000809', ''),
    142. ('0109', '0109', '0', '19930101', ''),
    143. ('0110', '0110', '0', '19930101', ''),
    144. ('0111', '0111', '0', '19991026', ''),
    145. ('0112', '0112', '0', '20000919', ''),
    146. ('0113', '0113', '0', '20001221', ''),
    147. ('0114', '0114', '0', '20010727', ''),
    148. ('0115', '0115', '0', '19930101', ''),
    149. ('0117', '0117', '0', '19930101', ''),
    150. ('0118', '0118', '0', '19930101', ''),
    151. ('0120', '0120', '0', '19930101', ''),
    152. ('0121', '0121', '0', '19930101', ''),
    153. ('0122', '0122', '0', '19930101', ''),
    154. ('0123', '0123', '0', '19930101', ''),
    155. ('0125', '0125', '0', '19930101', ''),
    156. ('0126', '0126', '0', '19990813', ''),
    157. ('0129', '0129', '0', '20001218', ''),
    158. ('0133', '0133', '0', '19930101', ''),
    159. ('0134', '0134', '0', '20010625', ''),
    160. ('0135', '0135', '0', '19930101', ''),
    161. ('0136', '0136', '0', '19930101', ''),
    162. ('0138', '0138', '0', '19930101', ''),
    163. ('0139', '0139', '0', '20021223', ''),
    164. ('0141', '0141', '0', '20010216', ''),
    165. ('0143', '0143', '0', '20030403', ''),
    166. ('0145', '0145', '0', '19930101', ''),
    167. ('0147', '0147', '0', '20010607', ''),
    168. ('0148', '0148', '0', '20000801', ''),
    169. ('0149', '0149', '0', '19930101', ''),
    170. ('0150', '0150', '0', '19990813', ''),
    171. ('0151', '0151', '0', '19930101', ''),
    172. ('0152', '0152', '0', '19930101', ''),
    173. ('0153', '0153', '0', '19930101', ''),
    174. ('0155', '0155', '0', '20010424', ''),
    175. ('0156', '0156', '0', '19930101', ''),
    176. ('0157', '0157', '0', '19930101', ''),
    177. ('0158', '0158', '0', '19930101', ''),
    178. ('0160', '0160', '0', '19930101', ''),
    179. ('0161', '0161', '0', '19930101', ''),
    180. ('0164', '0164', '0', '20010711', ''),
    181. ('0165', '0165', '0', '19930101', ''),
    182. ('0166', '0166', '0', '19991215', ''),
    183. ('0167', '0167', '0', '19930101', ''),
    184. ('0168', '0168', '0', '19930101', ''),
    185. ('0169', '0169', '0', '19930101', ''),
    186. ('0170', '0170', '0', '19930101', ''),
    187. ('0171', '0171', '0', '19930101', ''),
    188. ('0172', '0172', '0', '20011224', ''),
    189. ('0173', '0173', '0', '19991215', ''),
    190. ('0175', '0175', '0', '19930101', ''),
    191. ('0176', '0176', '0', '19930101', ''),
    192. ('0177', '0177', '0', '19990813', ''),
    193. ('0178', '0178', '0', '20000712', ''),
    194. ('0180', '0180', '0', '19930101', ''),
    195. ('0181', '0181', '0', '19930101', ''),
    196. ('0182', '0182', '0', '20000920', ''),
    197. ('0183', '0183', '0', '20060328', ''),
    198. ('0184', '0184', '0', '20010530', ''),
    199. ('0185', '0185', '0', '19930101', ''),
    200. ('0186', '0186', '0', '20000318', ''),
    201. ('0187', '0187', '0', '19981221', ''),
    202. ('0188', '0188', '0', '20010205', ''),
    203. ('0189', '0189', '0', '20000804', ''),
    204. ('0190', '0190', '0', '20000428', ''),
    205. ('0192', '0192', '0', '20000422', ''),
    206. ('0194', '0194', '0', '20011024', ''),
    207. ('0195', '0195', '0', '20000824', ''),
    208. ('0196', '0196', '0', '20000301', ''),
    209. ('0200', '0200', '0', '20010326', ''),
    210. ('0201', '0201', '0', '20010808', ''),
    211. ('0202', '0202', '0', '20011016', ''),
    212. ('0203', '0203', '0', '20020404', ''),
    213. ('0205', '0205', '0', '20011025', ''),
    214. ('0206', '0206', '0', '20010716', ''),
    215. ('0207', '0207', '0', '20011121', ''),
    216. ('0208', '0208', '0', '20011015', ''),
    217. ('0209', '0209', '0', '20010824', ''),
    218. ('0210', '0210', '0', '20020129', ''),
    219. ('0211', '0211', '0', '20011228', ''),
    220. ('0212', '0212', '0', '20011214', ''),
    221. ('0213', '0213', '0', '20020418', ''),
    222. ('0215', '0215', '0', '20020419', ''),
    223. ('0216', '0216', '0', '20020312', ''),
    224. ('0218', '0218', '0', '20020603', ''),
    225. ('0219', '0219', '0', '20020110', ''),
    226. ('0221', '0221', '0', '20030701', ''),
    227. ('0222', '0222', '0', '20030818', ''),
    228. ('0223', '0223', '0', '20030729', ''),
    229. ('0225', '0225', '0', '20031016', ''),
    230. ('0226', '0226', '0', '20030919', ''),
    231. ('0227', '0227', '0', '20031226', ''),
    232. ('0228', '0228', '0', '20040701', ''),
    233. ('0229', '0229', '0', '20040812', ''),
    234. ('0230', '0230', '0', '20040909', ''),
    235. ('0233', '0233', '0', '20050113', ''),
    236. ('0235', '0235', '0', '20050221', ''),
    237. ('0236', '0236', '0', '20051012', ''),
    238. ('0238', '0238', '0', '20061222', ''),
    239. ('0239', '0239', '0', '20070425', ''),
    240. ('0240', '0240', '0', '20071217', ''),
    241. ('0241', '0241', '0', '20080505', ''),
    242. ('0242', '0242', '0', '20080508', ''),
    243. ('0243', '0243', '0', '20080721', ''),
    244. ('0244', '0244', '0', '20081219', ''),
    245. ('0245', '0245', '0', '20090717', ''),
    246. ('0246', '0246', '0', '20100311', ''),
    247. ('0247', '0247', '0', '20100715', ''),
    248. ('0901', '0901', '0', '20100826', ''),
    249. ('0902', '0902', '0', '20100331', ''),
    250. ('0903', '0903', '0', '20110906', ''),
    251. ('0904', '0904', '0', '20100917', ''),
    252. ('0905', '0905', '0', '20110321', ''),
    253. ('0906', '0906', '0', '20110314', ''),
    254. ('0907', '0907', '0', '20110524', ''),
    255. ('0908', '0908', '0', '20110708', ''),
    256. ('0910', '0910', '0', '20130917', '')
    257.  184 records selected
    258. >>
    • 后面的工作 

       

      接下来就是要吧所有表都实现,当然,懒人一定不会手写代码的,生成代码脚本走起;脚本写完再回来~
    1. $grep REGISTER MemDefs.h | awk -F ')' '{print $1 ");"}' > register.cpp
    2. $grep class MemDefs.h.v0 | awk -F '\r' '{print $1 $2 ";"}' > class.cpp
    3. $grep class MemDefs.h.v0 |awk -F '\r' '{print $1}'| awk '{print "void Insert" $2 "(" $2 " *fld);"}'> method.cpp
    4. $sed -i 's/InsertCTt/Insert/g' method.cpp

     

    • 数据文件最大两个G,大了就core。调试了一天,改了一大堆源码,设置各种选项,未果………… 
      注释里面很明显给出了参数,可以设置64位的支持。
    1. /* define database offset bit size */
    2. #define dbDatabaseOffsetBits 32

    默认值是32,之前也尝试修改该参数,正常理解我改成过64,启动程序就core。这下晕了,继续看代码,里面给的例子是38,代码里面还是40的影子。更晕。 
    最后发现这个值得意义是2**32=2G,那理论上改大应该没问题,比如64,但是,看了代码之后发现他会先检查内存,因为fastdb认为所有数据都可以放在内存里面,如果设大了那么它会认为内存不过,所以最后设置为33,即4G。 
    * 这个问题算是解决了*

    链接地址: http://blog.leanote.com/post/frank.x@aliyun.com/dat%E6%96%87%E4%BB%B6%E8%BD%ACfastdb

    展开全文
  • fastdb使用

    千次阅读 2013-09-03 11:15:02
    使用目录fastdb-373\fastdb。文件为:fastdb.lib及相关头文件。 dbDatabase db; db.open(,,,); 目前可以增删改。

    1、使用目录fastdb-373\fastdb。文件为:fastdb.lib及相关头文件。

    dbDatabase db;

    db.open(,,,);

    2、多线程使用:

    在管理器中初始化,然后再各线程中如下attach:

     dbDatabase* db = (dbDatabase*)&(pthis->m_pDbManager->m_AllAccessDb);
          db->attach();

    3、关于时间比较只能是:

    curtime>="qtime";不能“qtime<=”,curtime;如下所示,为什么:

     dbDateTime curTime;
     dbQuery q1;
    q1= "marketid =",g_workerCfg.sendCfg.m_mark,"and sSymbol =",sSymbol,"and ",curTime<="qtime"

    4、困扰了好几天的问题,加入一句commit即可了。

    5、读取的问题中 定义query出现了问题,编译可以通过,执行中中断。提示无法写入内存。 

                         dbQuery q16;
        q16 = "marketid =",pReqData->m_ciCode.marketid,"and sSymbol =",pReqData->m_sName;

       怀疑是库和表的注册出现了问题。因为尝试直接打开库也遇到上述问题。或者是打开方式不对,没有释放吗?

    6、可以将结构统一定义,然后在使用到的cpp文件中register相关结构。

    展开全文
  • nbsp数据库FastDB应用开发指南.pdf15页本文档一共被下载:次,您可全文免费在线阅读后下载本文档。 下载提示1.本站不保证该用户上传的文档完整性,不预览、不比对内容而直接下载产生的反悔问题本站不予受理。2.该...
  • FastDB使用记录

    千次阅读 2018-01-07 21:58:17
    前言 FastDB是一个C++语言实现...之前在项目中使用内存数据库FastDB作为缓存,使用的过程中出现了一些问题,现在把当时记录的内容发出来,希望能为使用FastDB的朋友提供一些帮助。 FastDB官方网站:www.garret.ru/fas
  • fastdb最新版本

    2011-12-29 14:35:48
    windows下使用的fastdb版本,刚刚找到的。
  • fastdb分析

    千次阅读 2014-04-24 12:29:39
    因为项目中使用的fastdb,前2天的面试也有所提到,就想着要仔细yanjiu
  • fastdb-arm.tar.gz

    2019-08-23 15:58:13
    fastdb的代码无法在tx2或者说arm架构的开发板上直接使用,编译也无法通过,我这里是在tx2上编译通过的版本,生成的libfastdb.so在fastdb的src/下的隐藏目录.libs下,生成的4个可执行文件就在src下。请参考我的csdn...
  • FastDB分析

    千次阅读 2013-08-05 18:15:05
    fastdb主要的目标之一就是提供一个灵活并且方便的应用语言接口。任何使用过odbc或者类似的sql接口的人会明白我说的是什么。在fastdb中,一个查询可以用c++写成下面的样子:    dbQuery q;  dbCursor ...
  • 可以使用的fastdb用例

    热门讨论 2012-11-22 14:26:17
    可以使用的fastdb用例,方便学习,包括fastdb的安装,和一个简单用例,包括一些资料说明。 fastdb个人使用心得.doc fastdb-361 FastDb 使用说明.txt FastDB.doc FastDB_应用开发指南.docx FastDB+很难得的一篇分析+....
  • FastDB测试

    千次阅读 2013-03-18 22:58:28
    [cpp] view plaincopy ...#include "fastdb.h"    USE_FASTDB_NAMESPACE    class Contract;    class Detail {   public:   char const* name;   char const*
  • fastdb-375源码

    2014-07-18 16:49:51
    fastdb-375源码,VC6编译通过,subsql也可使用
  • fastDB核心心得

    2016-07-22 18:05:45
    学习背景:最近遇到了fastDB瓶颈的问题,经过仔细的研究fastDB的锁机制和内存机制,暂时记录如下。 fastdb的锁:fastdb是内存数据库,锁针对的是整个库的锁,所以在频繁写操作时会拖低系统的效率,这也是无奈之举。...
  • FastDB杂谈

    千次阅读 2014-03-03 22:09:51
    fastdb用起来还是很方便简单的,但是在使用的过程当中发现了很多问题: 比如: 1、数据库对于内存的消耗实在是太大,尤其是数据量到达千万级时尤为明显。 2、数据量上千万级别以后,性能远地于预期,可能是服务器...
  • FastDB应用

    千次阅读 2011-01-05 23:58:00
     FastDB 应用开发指南(一) FastDB 是一个高效率的内存数据库系统,具有实时性能和方便的 C++ 接口。 FastDB 并不支持客户端/服务器结构,所有使用FastDB数据库的应用程序都必须运行在同一台主机...
  • fastdb——查询语言

    2011-10-28 09:47:18
    fastdb——查询语言 FastDB支持一种类SQL语法的查询语言。FastDB使用的符号更加流行于面向对象的编程中,而非面向关系型数据库的编程中
  • mingw32 编译 fastdb

    2019-04-26 15:00:10
    mingw32 编译 fastdb 环境:win7+QT+mingw32 运行fastdb的makefile.mingw文件进行编译出了错误,网上查找也没有找到合适的答案(大概自己就是个菜鸟吧Σ( ° △ °|||)︴)。所以我就自己在QT下创建了一个staticlib...
  • FASTDB应用开发指南

    2013-03-14 18:58:14
    FASTDB应用开发指南,简单实用,随便看看吧
  • fastdb 2.55 源代码

    2012-12-15 13:07:46
    fastdb 2.55版本源代码,方便大家使用。
  • fastdb.rar

    2008-04-10 11:34:13
    fastdb数据库相关资料
  • fastDB CLI

    千次阅读 2011-08-10 10:23:24
    fastDB CLI (2006-05-19 16:32) 分类: fastDB翻译 Call level interface 前面介绍的接口提供了C++方便而且可靠的数据访问机制。但其有两个不足: 1.这是非常C++化的从而不能够用于其它语言 2.
  • fastDB Csharp实例

    2009-12-25 09:42:42
    c#接口提供了对fastdb的支持,封装了很多函数,方便使用
  • fastdb个人使用心得

    2013-09-26 08:37:24
    fastdb虽是一个没有经过商业测试的三方库, 但其速度和易用性还是让很多人渴望的,可以方便解决多个进程之间通信问题。
  • 开源数据库fastdb

    2008-09-13 11:19:29
    fastdb开源数据库,提供快速实时高效率查询功能

空空如也

空空如也

1 2 3 4 5 ... 11
收藏数 212
精华内容 84
关键字:

fastdb