![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据库
文章平均质量分 90
土豆西瓜大芝麻
这个作者很懒,什么都没留下…
展开
-
时空数据库中的轨迹数据压缩
时空数据库管理移动对象,比如:汽车、飞机、地貌变化等。空间数据库是时空数据库的特例,即时刻固定。轨迹压缩每秒钟都会从 GPS 获取大量(x,y,t)格式的数据,如何在不降低物体轨迹精度的前提下减小数据量呢(也就是数据都完全采集到了,但是数据量太大了,所以我们想少存一些数据,但又不能造成数据失效,也就是存入的那些少量点连起来的轨迹和原始轨迹不能偏差太大)?主要有三个指标:处理时间、压缩率、误差测量。误差:原始轨迹位置与估计轨迹位置之间的距离。主要有两种误差测量指标:垂直欧式距离、时间同步欧式距..转载 2021-04-15 22:01:46 · 3227 阅读 · 0 评论 -
spatialite扩展的编译和安装
spatialite作为一个sqlite3数据库的extension,使得sqlite3具有地理空间数据的处理能力。spatialite在linux上的编译,中文资料太少了。在此记录一下编译及使用过程。开始编译依赖库!没错,spatialite依赖了很多很多库。列举如下(直接粘贴了我cmakelist的内容):#libproj.afind_library(Proj_LIBRARY NAMES libproj.a)link_libraries(${Proj_LIBRARY})MESSAG转载 2021-04-15 17:26:24 · 3011 阅读 · 0 评论 -
SpatiaLite 使用指南
SpatiaLite是一个用来扩展SQLite的内核的开源库,支持完全成熟的空间SQL功能。其特点有:一个实现完整的SQL引擎的轻量级库 标准的SQL执行:几乎完全的SQL-92标准 没有复杂的客户端/服务器结构 整个数据库简单地对应于单个文件,且文件大小没有限制 跨平台 无需安装,无需配置Spatialite提供一个完整而强大的空间数据库管理系统(主要是与OGC-SFS兼容),而且由于其跨平台及轻量级的特点,常被用于涉及LBS功能的移动端应用开发中。空间索引使用SpatiaLite转载 2021-04-15 17:13:54 · 3324 阅读 · 0 评论 -
SQLite的table和index 的组织形式B+树和B 树
本文主要基于https://blog.csdn.net/daliaojie/article/details/8230544进行修改。网上一些帖子说Sqlite中组织管理数据库文件存储的机制为B-树。实际上根据《the definitive guide to sqlite》SECOND EDITON中的描述发现,SQLite是把B树和B+树统称为B树,但两者在SQLite中都使用到了(也有一说是用了B*树和B树)。B+树用于组织table及其内容,叶子节点中存放的是数据记录record,内部节点不存放原创 2021-04-15 16:10:18 · 884 阅读 · 0 评论 -
如何数据库中存储一棵树,实现无限级分类
在一些系统中,对内容进行分类是必需的功能。比如电商就需要对商品做分类处理,以便于客户搜索;论坛也会分为很多板块;门户网站、也得对网站的内容做各种分类。分类对于一个内容展示系统来说是不可缺少的,本博客也需要这么一个功能。众所周知,分类往往具有从属关系,比如铅笔盒钢笔属于笔,笔又是文具的一种,当然钢笔还可以按品牌来细分,每个品牌下面还有各种系列...这个例子中从属关系具有5层,从上到下依次是:...转载 2020-02-27 22:09:24 · 1205 阅读 · 0 评论 -
三分钟带你了解,什么是地理信息系统(GIS)
GIS(Geography Information System)是以地理空间数据库为基础,在计算机软、硬件支持下,对空间相关数据进行采集、输入、管理、编辑、查询、分析、模拟和显示,并采用空间模型分析方法,适时提供多种空间和动态信息,为地理研究和决策服务而建立起来的计算机技术系统。下图为分层的GIS系统,左下角为地球,左上为地球上某个区域的放大显示,右边为该区域数据在GIS中的组织。它是集...转载 2020-02-20 16:42:52 · 21130 阅读 · 6 评论 -
MangoDB进行地理索引的图解
图解 MongoDB 地理位置索引的实现原理地理位置索引支持是MongoDB的一大亮点,这也是全球最流行的LBS服务foursquare 选择MongoDB的原因之一。我们知道,通常的数据库索引结构是B+ Tree,如何将地理位置转化为可建立B+Tree的形式,下文将为你描述。首先假设我们将需要索引的整个地图分成16×16的方格,如下图(左下角为坐标0,0 右上角为坐标16,16):...原创 2020-02-14 16:51:13 · 232 阅读 · 0 评论 -
GeoJson用于表示地理信息数据
这几天一直在讨论关于一体化态势图的架构。首先大家明确了基于层次化架构,采用大量功能图层来表示承载不同类型的数据。我要解决的大量的地理信息数据的建模。目前底层的地理信息数据库的处理系统arcGIS等,可以高效管理地理信息数据库中的数据,提供层次化视图,也可以帮助用户轻松筛选所需要的数据,并提供相应的关联分析能力。刚开始,我准备借鉴arcGIS的思想,将地理信息数据分层显示,每个图层都是功能单一的...原创 2020-02-14 11:22:49 · 1812 阅读 · 1 评论 -
使用sqlite源码生成json扩展动态库的步骤
1. 使用dpkg查看本机sqlite3的安装版本(ubuntu16.04 64位默认安装的sqlite3版本是3.11.0-1ubuntu1.2 )2. 从ubuntu的源下载对应的sqlite3的源码包,下载地址:https://launchpad.net/ubuntu/+source/sqlite33. 解压缩下载的源码包,如sqlite3_3.11.0.orig.tar.xz4....原创 2020-02-11 21:51:21 · 356 阅读 · 0 评论 -
spatialite 4.2以后的版本的编译和使用
spatialite作为一个sqlite3数据库的extension,使得sqlite3具有地理空间数据的处理能力。spatialite在linux上的编译,中文资料太少了。在此记录一下编译及使用过程。开始编译依赖库!没错,spatialite依赖了很多很多库。列举如下(直接粘贴了我cmakelist的内容):#libproj.afind_library(Proj_LIBRARY...转载 2019-12-04 15:47:59 · 1355 阅读 · 0 评论 -
試用 SpatiaLite(一):安裝及測試
根據維基百科的介紹:SpatiaLite is a spatial extension to SQLite, providing vector geodatabase functionality. It is similar to PostGIS, Oracle Spatial, and SQL Server with spatial extensions, although SQLite/S...转载 2019-12-03 08:45:57 · 580 阅读 · 0 评论 -
Spatialite简单入门(一)
Spatialite笔记一:简单的入门介绍spatialite是在sqlite的外部再包了一层空间数据的外衣。当然,你要先了解sqlite,号称开源的最轻量级别的数据库,适合小项目和移动端。这也是sqlite不衰奥秘。sqlite底层是c语言驱动,效率高。入门无需赘述,请移步至SQLite 教程。spatialite的语法和postgresql相似,算是它的一个简化入门版。...转载 2019-12-03 08:40:40 · 5195 阅读 · 0 评论 -
Sqlite3相关函数返回值及其含义
sqlite常量的定义:constSQLITE_OK = 0; 返回成功SQLITE_ERROR = 1; SQL错误或错误的数据库SQLITE_INTERNAL = 2; An internal logic error in SQLiteSQLITE_PERM = 3; 拒绝访问SQLITE_ABORT = 4; 回调函数请求中断SQLITE_BUSY = 5; 数据...转载 2019-09-29 20:45:34 · 4106 阅读 · 0 评论 -
Sqlite3的空间索引扩展spatialite的使用方法
这是第一次使用到空间数据库SpatialLite,在前几天解决了一个困扰了我好久的问题,就是如何在查询空间数据库中和某一经纬度最近的数据库中有的经纬度的水深点,最后通过一个偏移变量来解决了,具体sql如下: destLon -= 0.001* 2^n <= destLon <= destLon += 0.001* 2^n destLat -...转载 2019-09-26 17:22:19 · 4251 阅读 · 5 评论 -
Sqlite3的JSON1扩展具体使用案例--基于C语言的C-API
在ROS系统中,因为消息种类太多,要对这些消息进行统一存储并且允许检索,就面临一个问题:如何存储,用什么存储,如何检索?鉴于我们第一阶段使用了统一数据模型对各种消息进行了统一封装:将所有消息共有的部分提取出来生成各个字段,而将差异部分作为blob进行存储。这个模型存在的一个重要问题就是不能对差异部分进行检索。为了解决或者部分解决上述问题,我们进行了调研,发现sqlite3存在json扩展,...原创 2019-09-06 15:11:50 · 2685 阅读 · 2 评论 -
sqlite3的json1扩展的函数
So, here is a first example of how to usejson_extract. First, the data is a inserted in a bit different way:insert into user (name, phone) values("oz", json('{"cell":"+491765", "home":"+498973"}')...原创 2019-09-03 14:35:49 · 1417 阅读 · 0 评论 -
C++操作SQLITE获得查询结果集的几种方法总结
使用sqlite的时候对查询结果的获得一直感觉比较混乱,一通google后收益匪浅,在此做个笔记。参考原文:http://www.cnblogs.com/acloud/archive/2012/03/23/2413814.htmlhttp://www.cppblog.com/czy463/archive/2013/12/16/204816.html(董淳光)https://segment...转载 2019-09-03 14:34:36 · 7221 阅读 · 2 评论 -
Redis 数据结构
数据结构而非类型Redis 有 5 种基本数据结构:有很多文章都会说,Redis 支持 5 种常用的数据类型,这其实存在很大的歧义。Redis 里存的都是二进制数据,其实就是字节数组 (byte[]),这些字节数据是没有数据类型的,只有把它们按照合理的格式解码后,可以变成一个字符串,数字或对象,此时才具有数据类型。所以任何东西只要能转化成字节数组 (byte[]),就...转载 2019-07-11 15:30:40 · 116 阅读 · 0 评论 -
Redis底层数据实现
Redis底层使用了6种数据结构来实现上层的各种数据结构,本文将对这6种数据结构分别进行简单的介绍。本文中的图片来自《Redis设计与实现第二版》。Redis数据结构和底层数据结构的对应关系如下:简单动态字符串Redis没有直接使用C字符串来保存字符串值,而是自己实现了名为SDS的结构体。Redis中数据的值都是使用sds保存。sds是一个结构体,包含三个成员。上图中的sds中保...转载 2019-07-11 16:13:56 · 1035 阅读 · 0 评论 -
内存数据库FastDB和SQLite性能测评
一、引言在很多项目中,经常会碰到这样的需求,需要对大量数据进行快速存储、查询、删除等操作,特别是在一些针对诸如运营商、银行等大型企业的应用中,这些需求尤为常见。比如智能网中的大量在线并发用户的数据管理、软交换平台中的在线信息交互、宽带/3G等数据网中在线用户行为记录等等。针对这些情形,我们通常需要选择高性能的数据库产品,而且通常需要使用内存数据库,顾名思义,内存数据库指的是所有的数据访问控...转载 2019-07-11 16:34:28 · 3545 阅读 · 0 评论 -
FastDB 磁盘和无盘模式
在网上看到了一下主存数据库的性能测试,相对于BerkeleyDB和SQLite来比,fastdb的性能还是略胜一筹,时间精力有限,本人没有对SQLite,BerkeleyDB进行系统的分析研究。这里仅是简单剖析fastdb高效性的实现。在其他报告中有提到,在fastdb磁盘模式下,当批量提交事务时fastdb的性能比SQLite的性能高出3-10倍,可当逐条提交事务时fastdb的性能却急剧下...转载 2019-08-02 17:10:18 · 761 阅读 · 0 评论 -
fastdb相关备忘
选择fastdb主要有两个原因,1.内存数据库,体量小,速度快2.其数据结构与交易系统非常类似(很大可能性是交易系统fld那套东西借鉴了fastdb,猜的:)部署&安装下载http://www.garret.ru/fastdb.htmlok@x1:~/下载$ ll fastdb-3.76.tar.gz-rw-rw-r--1ok ok32876287月10...转载 2019-07-30 14:46:57 · 436 阅读 · 0 评论 -
Fastdb安装与使用
环境: CentOS 6.4 32位注意:64位运行有问题,运行最后会报 segmentation fault,所以最后采用32位操作系统。1.1 安装(1) 安装需要的依赖yum install gcc make gcc-c++ wget(2) 下载源码wget http://www.garret.ru/fastdb-3.76.tar.gz(3) 解压tar -xv...转载 2019-07-31 16:51:10 · 1903 阅读 · 1 评论 -
FastDb client-server模式
就个人理解而言,fastdb client-server模式,只是在client和server之间添加了一个socket通信,其实操作都是在server端完成的。但是client-server也有很多好处,其中一个就是可以同一个进程可以同时运用fastdb的无盘模式,和磁盘模式。当然其中一个模式只是client(比如这个进程开启时需要用无盘模式,将数据全部存入内存,以方便读取,但是记录日志...转载 2019-08-02 14:53:07 · 278 阅读 · 0 评论 -
在TX2上(arm架构)安装FastDB
前面已经介绍过Fast DB,并且在x86_64环境下使用。由于工作的需要,现在要在tx2开发板上使用fastdb。由于tx2不是x86架构,所以直接安装是不行的。执行make命令后,报错:本来想着在PC上安装配置交叉编译环境,然后在PC上编译arm架构可用的libfastdb.so。尝试后发现比较困难。于是请教同学。同学看后发现make的输出还是比较人性化的,输出总共3段,第一段是编译过...原创 2019-08-23 15:59:16 · 822 阅读 · 0 评论 -
ubuntu 16.04上验证是否sqlite3是否启用了json1扩展
Ubuntu 16.04 库中带的 SQLite3.11.0-1ubuntu1 自带了 JSON1 扩展,且默认开启了Json1扩展.下面可以使用一个docker 来验证一下:$ docker run --rm -it ubuntu:xenial //拉取一个docker,在docker里进行测试# apt-get update && apt-get install --...原创 2019-08-30 10:26:26 · 321 阅读 · 0 评论 -
sqlite3命令行基本操作
简介sqlite3一款主要用于嵌入式的轻量级数据库,本文旨在为熟悉sqlite3基本命令提供技术文档。备注:本文所有操作均在root用户下进行。1、安装sqlite3ubuntu下安装sqlite3直接在终端运行命令:#apt-getinstallsqlite3查看版本信息:#sqlite3-version2、sqlite3常用命令当前目录下建立或打开te...转载 2019-08-30 14:01:36 · 5699 阅读 · 0 评论 -
C/C++下sqlite3编程以及常用函数解析
使用示例:原创 2019-08-30 16:00:33 · 271 阅读 · 0 评论 -
sqlite3示例
#include <iostream>#include <string.h>#include "sqlite3.h" using namespace std; //创建"表"函数void Create(int &rc,sqlite3 *db,char *sql,sqlite3_stmt *stmt){ //判断是否已经存在表了 rc=sq...原创 2019-08-30 16:14:39 · 794 阅读 · 0 评论 -
Linux 下使用C语言调用sqlite示例
#include <stdio.h>#include <stdlib.h>#include <sqlite3.h> int delete(sqlite3 *db){ char *errmsg; char sql[100]; int id; printf("input a id you want to delete!\n"); sc...原创 2019-09-02 09:38:16 · 392 阅读 · 0 评论 -
抽取ROS中的未知消息内容以及Sqlite3 使用JSON1扩展的方法以及示例--命令行模式
Sqlite3 在3.09版本开始就带了JSON扩展,刚开始的版本需要使用源代码编译加上相应的参数来开启JSON支持。经实际调研测试发现Ubuntu16.04开始之后Ubuntu库里面的sqlite3已经默认开启了JSON支持(具体查看我的博客),直接使用apt-get install sqlite3就可以安装sqlite3了,也可以直接使用json。 那么Json...原创 2019-09-02 14:33:18 · 1175 阅读 · 0 评论 -
杂谈--行数据库与列数据库以及bit-wise索引
行存储,把属于一行的所有列的数据存储在连续的空间即为行存储。行存储有两个缺点:(1)由于DBMS中磁盘IO的单位是block (oracle中的block大小2K-32K), 如果查询只关心行中的部分列,需要同时读取其它的列,增加了IO;(2)block上的数据类型不一致(多个列的类型可能不一样)使得压缩率低。这两个缺点对数据仓储而言是非常大的限制。列存储很好的解决了这两个问题。1. ...原创 2019-01-03 17:00:15 · 466 阅读 · 0 评论