CN108256091A - 一种基于SQLite数据库的垂直拆分方法 - Google Patents
一种基于SQLite数据库的垂直拆分方法 Download PDFInfo
- Publication number
- CN108256091A CN108256091A CN201810075410.0A CN201810075410A CN108256091A CN 108256091 A CN108256091 A CN 108256091A CN 201810075410 A CN201810075410 A CN 201810075410A CN 108256091 A CN108256091 A CN 108256091A
- Authority
- CN
- China
- Prior art keywords
- database
- data
- library
- inquiry
- current
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/219—Managing data history or versioning
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及计算机领域,特别涉及一种基于SQLite数据库的垂直拆分方法,该方法通过简单的判断将数据库垂直拆分,且拆分后能够很好的实现对历史信息的查看,拆分后的数据库对用户操作透明,即用户感觉不到数据库的改变,能够很好的提高系统的稳定性。
Description
技术领域
本发明涉及计算机领域,特别涉及一种基于SQLite数据库的垂直拆分方法。
背景技术
在IT服务中,数据库是一项关键的组件。其维护着整个服务所需的关键数据。然而,数据库如MySQL、PostgreSQL、Oracle通常作为系统的一项进程来提供服务。对于小型的应用来说,可能并不需要大型关系数据库的丰富的功能,仅需要以能够提供关系数据的增删改查操作即可,这样SQLite文件数据库可以很好的满足要求。然而,随着数据量的增加,如日志信息,由于SQLite锁机制及性能的限制,很难满足这种大数据表的查询要求。同时查询改表过程中,将会影响到库中其他表的操作。因而不得不将这种大表水平拆分到新的SQlite库中,令其单独存在。但这样并不能解决查询大表产生的性能问题。
例如存在现有技术一的技术方案,数据库只保存一定时间内的数据,久远的数据将被滚动清除,该技术方案的缺点是删除过期的数据,使得历史数据不可见,这对一些关键的应用来说不可行。
例如存在现有技术二的技术方案,设置历史表,定期将活跃表中的数据转存如历史表,同时清除活跃表内已转存的数据;该技术方案的缺点是将活跃表中的数据转存至历史表,这样活跃表可以保持较高的性能,但查询信息时,由于历史表数据不断累积,查询问题依然存在。
例如存在现有技术三的技术方案,利用后台进程将数据库备份,同时删除已备份数据;该技术方案的缺点虽然数据库得到了备份,但备份后的数据对IT服务不可见,或者需要增加额外的功能才能访问到。并且这种方式部署较复杂。
例如存在现有技术四的技术方案,采用高级数据库方案如Oracle,Mysql集群,或者采用Hadoop大数据等解决方案;该技术方案的缺点是只为完成一小部分功能而动用大的组件,结构上显得不协调,且加大系统部署的环境要求。不适合小型应用的要求。
基于此,本文提出一种SQLite数据库的垂直拆分方法,能够实现将大表拆分成可满足性能要求的小表,同时拆分后的数据库能够很好的实现查询过程的连贯性,即数据库的拆分对用户透明。
发明内容
本发明是通过如下技术方案实现的,一种基于SQLite数据库的垂直拆分方法,包括如下步骤:第一步,生成系统模板数据库,其中只包含表结构,无数据;第二步,拆分数据库并将用户欲添加的数据存入拆分的数据库中或者将用户欲添加的数据添加进当前活跃库。
优选的,所述第二步具体包括以下步骤:S1,开始;S2,插入操作;S3,判断库大小/表行数是否达到出阈值,若是,执行步骤S4,若否,执行步骤S11;步骤S4,断开与当前库的链接;步骤S5,将活跃库以原始名+日期时间格式重命名;步骤S6,将新库名及当前时间及最后一行ID信息插入到数据库拆分信息表中;步骤S7,判断插入是否成功,若成功,则执行步骤S8,若不成功,则执行步骤S12;步骤S8,拷贝模板数据库,并将其重命名为活跃库;步骤S9,与当前活跃库重新建立链接;步骤S10,获取原活跃库主键信息,设置新库的主键起始信息;步骤S11,执行插入操作;步骤S12,将库文件名还原为重命名前状态,执行步骤S11。
本发明还提供一种操作数据库的方法,其中该数据库根据所述的基于SQLite数据库的垂直拆分方法所形成,具体的,当用户查询、修改或删除操作时,首先判断用户查询的数据是否在当前活跃数据库中,若是,则返回当前活跃数据库中的数据;若查询跨数据库,则先将获取当前数据库数据,而后查询数据库拆分记录表,寻找所要切换到的数据源,断开与当前库的链接,切换数据源,创建新的链接,获取新数据源中的数据并返回。
优选的,查询、修改或删除操作数据源与添加操作的数据源相互独立,即查询、修改或删除操作数据源发生切换时,并不影响数据的添加操作。
本发明相对于现有技术的有益效果是,本发明通过简单的判断将数据库垂直拆分,且拆分后能够很好的实现对历史信息的查看,拆分后的数据库对用户操作透明,即用户感觉不到数据库的改变。拆分后能够很好的提高系统的稳定性。
附图说明
图1本发明一实施例提供的数据库拆分流程图
图2本发明一实施例提供的数据库拆分后查询操作流程图
图3本发明一实施例提供的数据库拆分后的修改/删除操作流程图
具体实施方式
下面结合附图对本发明的较佳实施例进行详细阐述。以下实施例仅用于更加清楚地说明本发明的技术方案,而不能以此来限制本发明的保护范围。
本发明实施例所提供的是一种基于小型IT服务的数据库垂直拆分方法,属于IT服务内部的部署与配置,实施过程中需要结合服务代码的具体实现形式。部署或配置方式如下:
1.设置待拆分数据库的数据表行数或数据库大小阈值;
2.生成待拆分数据库的模板数据库,并将其放置在指定位置;
3.创建数据库拆分记录表,记录数据库拆分后的数据库名、数据拆分详细时间信息及数据表最后一行数据的主键如ID信息;
4.为数据库的查询操作和增删改操作配置相互独立的数据源,在发生跨数据库查询时,切换查询操作数据源。
本发明一实施例提供了一种SQlite库的动态垂直拆分方法,具体包括了以下内容:
1.生成系统模板数据库,其中只包含表结构,无数据。用于数据库拆分时生成新库;
2.数据写入操作时,检查当前活跃库已存入行数或数据库文件总大小,若行数或大小达到阈值要求,将此活跃数据库以日期格式重命名,并将命名后的数据库名写入数据库拆分记录表中。然后拷贝模板数据库并重命名为原活跃数据库库名;若行数或大小未达到阈值要求,继续在当前活跃库中插入数据。
具体的,如图1所示,SQlite库的动态垂直拆分方法包括如下步骤:S1,开始;S2,插入操作;S3,判断库大小/表行数是否达到出阈值,若是,执行步骤S4,若否,执行步骤S11;步骤S4,断开与当前库的链接;步骤S5,将活跃库以原始名+日期时间格式重命名;步骤S6,将新库名及当前时间及最后一行ID信息插入到数据库拆分信息表中;步骤S7,判断插入是否成功,若成功,则执行步骤S8,若不成功,则执行步骤S12;步骤S8,拷贝模板数据库,并将其重命名为活跃库;步骤S9,与当前活跃库重新建立链接;步骤S10,获取原活跃库主键信息,设置新库的主键起始信息;步骤S11,执行插入操作;步骤S12,将库文件名还原为重命名前状态,执行步骤S11。
图2所示为数据库拆分后查询操作流程图,图3所示为数据库拆分后的修改/删除操作流程图,如图2-3所示,当用户查询、修改或删除操作时,首先判断用户查询的数据是否在当前活跃数据库中,若是,则返回当前活跃数据库中的数据。若查询跨数据库,则先将获取当前数据库数据,而后查询数据库拆分记录表,寻找所要切换到的数据源,断开与当前库的链接,切换数据源,创建新的链接,获取新数据源中的数据并返回。
且本发明实施例中,查询、修改或删除操作数据源与添加操作的数据源相互独立,即查询、修改或删除操作数据源发生切换时,并不影响数据的添加操作。
由此可见,本发明实施例提出的SQlite库的动态垂直拆分机制,减小大表扫描带来的延时等待,以提高用户的体验度。同时当用户跨数据库查询时,能够很好的实现数据库的动态切换。用户也感受不到后台发生了跨数据库查询。
术语“计算机系统”包括根据上述实施方式实现系统或执行方法的硬件、软件和数据存储装置。例如,计算机系统可包括中央处理单元(CPU)、输入装置、输出装置和数据存储。优选地,计算机系统具有用于提供视觉输出显示的监视器(例如,商业处理设计)。数据存储可包括RAM、盘驱动器或其它计算机可读介质。计算机系统可包括通过网络连接的多个计算装置,并且能够经过该网络彼此通信。
以上实施方式的方法可设为计算机程序或者携带计算机程序的计算机程序产品或者计算机可读介质,所述计算机程序设置成在计算机上运行时执行上述方法。
术语“计算机可读介质”包括(但不限于)可直接由计算机或者计算机系统读取或者访问的任何非临时媒体或介质。所述介质可包括(但不限于)诸如软盘、硬盘存储媒体和磁带的磁存储介质;诸如光盘或者CD-ROM的光学存储介质;诸如存储器的电存储介质,包括RAM、ROM和闪速存储器;以及以上的混合和组合,诸如磁/光学存储介质。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (4)
1.一种基于SQLite数据库的垂直拆分方法,包括如下步骤:第一步,生成系统模板数据库,其中只包含表结构,无数据;第二步,拆分数据库并将用户欲添加的数据存入拆分的数据库中或者将用户欲添加的数据添加进当前活跃库。
2.根据权利要求1所述的垂直拆分方法,其特征在于:所述第二步具体包括以下步骤:S1,开始;S2,插入操作;S3,判断库大小/表行数是否达到出阈值,若是,执行步骤S4,若否,执行步骤S11;步骤S4,断开与当前库的链接;步骤S5,将活跃库以原始名+日期时间格式重命名;步骤S6,将新库名及当前时间及最后一行ID信息插入到数据库拆分信息表中;步骤S7,判断插入是否成功,若成功,则执行步骤S8,若不成功,则执行步骤S12;步骤S8,拷贝模板数据库,并将其重命名为活跃库;步骤S9,与当前活跃库重新建立链接;步骤S10,获取原活跃库主键信息,设置新库的主键起始信息;步骤S11,执行插入操作;步骤S12,将库文件名还原为重命名前状态,执行步骤S11。
3.一种操作数据库的方法,其中该数据库根据权利要求1-2任一项所述的基于SQLite数据库的垂直拆分方法所形成,其特征在于:当用户查询、修改或删除操作时,首先判断用户查询的数据是否在当前活跃数据库中,若是,则返回当前活跃数据库中的数据;若查询跨数据库,则先获取当前数据库数据,而后查询数据库拆分记录表,寻找所要切换到的数据源,断开与当前库的链接,切换数据源,创建新的链接,获取新数据源中的数据并返回。
4.根据权利要求3所述的操作数据库的方法,其特征在于:查询、修改或删除操作数据源与添加操作的数据源相互独立,即查询、修改或删除操作数据源发生切换时,并不影响数据的添加操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810075410.0A CN108256091A (zh) | 2018-01-25 | 2018-01-25 | 一种基于SQLite数据库的垂直拆分方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810075410.0A CN108256091A (zh) | 2018-01-25 | 2018-01-25 | 一种基于SQLite数据库的垂直拆分方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108256091A true CN108256091A (zh) | 2018-07-06 |
Family
ID=62742945
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810075410.0A Pending CN108256091A (zh) | 2018-01-25 | 2018-01-25 | 一种基于SQLite数据库的垂直拆分方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108256091A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110210307A (zh) * | 2019-04-30 | 2019-09-06 | 中国银联股份有限公司 | 人脸样本库部署方法、基于人脸识别业务处理方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060253473A1 (en) * | 2005-05-06 | 2006-11-09 | Microsoft Corporation | Integrating vertical partitioning into physical database design |
CN101697152A (zh) * | 2009-10-23 | 2010-04-21 | 金蝶软件(中国)有限公司 | 一种数据库存储系统及其数据的拆分方法和装置 |
CN101763433A (zh) * | 2010-01-12 | 2010-06-30 | 浪潮(北京)电子信息产业有限公司 | 一种数据存储系统及方法 |
CN102999526A (zh) * | 2011-09-16 | 2013-03-27 | 阿里巴巴集团控股有限公司 | 一种数据库关系表的拆分、查询方法及系统 |
CN106168949A (zh) * | 2016-05-03 | 2016-11-30 | 泰康保险集团股份有限公司 | 数据库拆分的方法及装置 |
-
2018
- 2018-01-25 CN CN201810075410.0A patent/CN108256091A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060253473A1 (en) * | 2005-05-06 | 2006-11-09 | Microsoft Corporation | Integrating vertical partitioning into physical database design |
CN101697152A (zh) * | 2009-10-23 | 2010-04-21 | 金蝶软件(中国)有限公司 | 一种数据库存储系统及其数据的拆分方法和装置 |
CN101763433A (zh) * | 2010-01-12 | 2010-06-30 | 浪潮(北京)电子信息产业有限公司 | 一种数据存储系统及方法 |
CN102999526A (zh) * | 2011-09-16 | 2013-03-27 | 阿里巴巴集团控股有限公司 | 一种数据库关系表的拆分、查询方法及系统 |
CN106168949A (zh) * | 2016-05-03 | 2016-11-30 | 泰康保险集团股份有限公司 | 数据库拆分的方法及装置 |
Non-Patent Citations (1)
Title |
---|
周智勋: "《WIMDOWS 8开发实战体验》", 31 August 2013, 北京:海洋出版社 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110210307A (zh) * | 2019-04-30 | 2019-09-06 | 中国银联股份有限公司 | 人脸样本库部署方法、基于人脸识别业务处理方法及装置 |
CN110210307B (zh) * | 2019-04-30 | 2023-11-28 | 中国银联股份有限公司 | 人脸样本库部署方法、基于人脸识别业务处理方法及装置 |
US11893829B2 (en) | 2019-04-30 | 2024-02-06 | China Union Pay Co., Ltd. | Method for deploying a face sample library and method and apparatus for business processing based on face recognition |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Hellerstein et al. | Architecture of a database system | |
US8145686B2 (en) | Maintenance of link level consistency between database and file system | |
CN100570599C (zh) | 用于自动数据库或文件系统维护和修复的系统和方法 | |
Baker et al. | Megastore: Providing scalable, highly available storage for interactive services. | |
Berzal et al. | TBAR: An efficient method for association rule mining in relational databases | |
JP5918244B2 (ja) | フォールトトレラントデータベース管理システムにおいてクエリ結果を統合するシステム及び方法 | |
EP3121739B1 (en) | Method for performing transactions on data and a transactional database | |
US6615223B1 (en) | Method and system for data replication | |
US8527556B2 (en) | Systems and methods to update a content store associated with a search index | |
US9418094B2 (en) | Method and apparatus for performing multi-stage table updates | |
Chakrabarti et al. | Ranking objects based on relationships | |
US20090210429A1 (en) | System and method for asynchronous update of indexes in a distributed database | |
US7315854B2 (en) | Distributed directory replication | |
JP2013545162A5 (zh) | ||
JP2001051879A (ja) | 非関係データベースへの改良されたアクセスのための方法およびシステム | |
EP2380090B1 (en) | Data integrity in a database environment through background synchronization | |
CN108664359A (zh) | 一种数据库恢复方法、装置、设备及存储介质 | |
US7627777B2 (en) | Fault tolerance scheme for distributed hyperlink database | |
Zhan et al. | AnalyticDB: real-time OLAP database system at Alibaba cloud | |
Ram et al. | Extracting delta for incremental data warehouse maintenance | |
Kleppmann | Designing data-intensive applications | |
WO2007143898A1 (fr) | Procédé pour l'extraction et le traitement d'informations selon un modèle ternaire | |
Samtani et al. | Recent advances and research problems in data warehousing | |
WO2021006977A1 (en) | Delta graph traversing system | |
Shi et al. | Mining related queries from web search engine query logs using an improved association rule mining model |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20180706 |