2021年数据库指南
数据是地理空间最告急的部分之一,大概我想说几乎每个行业。每个行业现在都认真对待数据管理,因此,作为IT人员相识它,已成为我们职业生涯的告急组成部分。本指南是一站式文章,引导您从地面(什么是数据)到空中(相识并利用地理空间查询)。https://p1.pstatp.com/large/pgc-image/d666cdb29fdb4abd8d11ad6fab7a180d
数据库基础
Data什么是数据?数据可以是您存储以供将来访问的任何信息。它可以是数字,文本,媒体,位置,日期等。它可以写在纸上,可以生存在计算机硬盘上,甚至可以存储在云中。 什么是数据库?多个数据条目的集合一起创建了一个数据库。通常创建数据库是为了利用户可以访问大量数据并完全对其执行某些操作。数据库可以是任何东西-奶奶的笔记本上有她所有的鲜味食谱,父母的账簿上有所有交易记录,Facebook页面上列出了所有朋侪,等等。所有这些例子表明,数据库中的所有数据或多或少相同的类型。 for是否需要数据库?创建数据库可以使不同的用户轻松访问数据集,上面的示例表明,对于No-SQL数据库的兴起,我们可以为数据库中的每个数据条目存储类似类型的信息,这在肯定程度上是正确的。定义现在正在改变(有关更多信息,请参见下面的文章)。随着网站变得越来越具有用户交互性和更大的规模,用户,客户,订单等的数据对于公司来说是告急的资产,因此需要拥有一个可扩展且可靠的数据库,工程师可以明白它需要一个小时。 数据库管理系统(DBMS)到目前为止,我们知道数据和数据库很告急,但是如安在计算机系统中利用数据库?这就是DBMS发挥作用的地方。 DBMS是为我们提供了一种与计算机上的数据库进行交互以执行各种操作(例如创建数据,编辑数据,插入数据等)的方法的软件步伐。DBMS通过提供可用于执行此操作的API来实现此目的。很少有任何软件不会利用DBMS来处理存储在磁盘上的数据。除了数据操作之外,DBMS软件还可以处理备份,证券检查,数据库运行状况检查等,因此建议在利用以下软件时始终利用DBMS空间数据和数据库由于我们将重点放在空间方面而不是通用方面,因此我将在这里讨论这种数据类型。空间数据类型与其他数据类型略有不同。我们需要将坐标生存为特定格式(通常在数据库网站的文档中提供),以便数据库可以读取并明白其中的内容。虽然通常可以像获取年岁大于15岁的所有效果那样查询数据,但对于空间查询,我们通常会寻找类似于获取特定点10公里半径内的所有效果之类的东西。因此,请确保您以正确的格式生存空间数据。
数据库类型
数据库通常分为关系数据库和非关系数据库两种类型。两者都有各自的优缺点。说一个比另一个更好是很愚蠢的,但这取决于用例。我个人有99%的时间利用空间数据来利用关系数据库,您很快就会明白原因。关系数据库和RDBMS考虑到您的老板要求您创建一份告急信息表,例如所有员工的姓名,地址,电子邮件,电话号码和职务。您将立即拉出一个Excel工作表或Google工作表,写下所有这些列标题并开始感受信息
https://p3.pstatp.com/large/pgc-image/8a0b89baabe0461888fcd70f28468d0d> Sample Information Sheet
这里的模式是每个条目都有有限和固定的列,我们需要相识这些列。因此,我们创建了一个包含所有信息的表,每个条目将具有唯一的主键,使其对于所有操作都是唯一且可访问的。在关系数据库中,每种类型的表都包含固定的列数,我们还可以在多个列之间创建关系
https://p3.pstatp.com/large/pgc-image/18c3d2bd14ba4ef985da50494864b669> Relation Between 2 columns
在本文中,我们将深入探讨Rational Database中的关系。利用关系数据库的缺点是,与No-SQL数据库相比,当数据大量增加时,获取效果有点慢。另一个缺点是,在关系数据库中,每个条目都必须遵循添加数据的规则(列类型,列号等),我们不能只为一个条目添加单独的列。关系数据库利用SQL(结构查询语言)来利用户与存储在表中的数据进行通信和交互。 SQL已被证实是用于此目的的最广泛利用的语言之一,我们将在后面的部分中进一步研究SQL。 PostgreSQL,MySQL,MSSQL等是一些最著名且利用最广泛的关系数据库的例子。每个主要的关系数据库公司都有自己的SQL版本,在大多数环境下看起来都是相同的,但是偶然需要进行小的更改才能运行相同的查询以获得在不同的数据库中(例如从PostgreSQL到MySQL),效果相同。非关系数据库(No-SQL)任何非关系数据库都属于非关系数据库。通常,数据以表格以外的任何格式存储,例如1键值对2JSON,XML格式3图形格式No-SQL数据库的主要利益是每一行都是独立的,每一行可以有不同的列。如下图所示,两个用户都属于同一个表Core_user,但是两个用户条目都持有不同的信息
https://p1.pstatp.com/large/pgc-image/79414ee19dff447dbb84af48a5b0d57a> No-SQL Realtime Database in Google Firebase
在No-SQL数据库中,用户偶然必须编写自己的逻辑,以向每个条目添加唯一键以使其可访问,大多数行业标准的No-SQL数据库,例如Firebase,MongoDB,都利用JSON格式存储数据。因此,利用Javascript,Python,Ruby等对来自Web应用步伐的数据执行操作非常容易和方便。recommendation空间数据的数据库类型推荐很明显,我们要生存点,线,面,栅格,等等,除了生存数据外,我们还需要一个DBMS来明白并帮助我们以空间方式(缓冲区,交集,间隔计算等)查询数据,而不是将其生存为仅坐标的形式。 )。到目前为止,由于利用SQL语言在此类操作中可用的功能,关系数据库已证实在这种环境下更强大。在PostgreSQL上利用PostGIS之类的扩展步伐为开辟人员提供了编写复杂的空间查询的机会之窗。另一方面,No-SQL仍在空间领域上工作,像MongoDB这样的公司提供了一些功能来执行地理空间操作,但是Relational Databases仍旧在很大程度上占有市场。
利用RDBMS
在本文中,我们将重点更多地放在RDMBS上,由于这是我们大部分时间用来存储和处理空间数据的方式。为了便于选择,我们将利用PostgreSQL,由于它是世界上最先进的开源关系数据库,而其扩展PostGIS也使我们能够处理空间数据。您可以按照文档中的步骤安装PostgreSQL。与PostgreSQL一起,也建议下载并安装pgAdmin,pgAdmin提供了一个与数据库通信的Web界面,否则可以通过下载一些可安装的软件或命令行来完成。
https://p3.pstatp.com/large/pgc-image/36e3bd426ad140b8ba3ca6225c758818> pgAdmin 4 on mac
用户可以更改数据库的许多设置,例如端口,用户名,密码,与外界的可访问性,内存分配等,但这只是第二天的主题。在本文中,我们将重点放在数据库的数据端。创建数据库-我们需要创建数据库(理想环境下,对于每个项目,应该有一个数据库)
https://p1.pstatp.com/large/pgc-image/5ca8199dacaa4ad7aa5f3a998e4ca569> Creating a new database for the project
查询工具创建数据库的方式如下:
CREATE DATABASE
创建表-创建表只需要花些时间,由于这是我们需要定义所有列及其数据类型的地方。您可以在此处找到可以在PostgreSQL中利用的所有数据类型。pgAdmin允许我们从表中选择各种束缚和键,例如Not Null,Primary Key等。我们稍后会发现更多信息。
https://p3.pstatp.com/large/pgc-image/4d74a6e643334147a71be0cd7d27878f> Creating users table
请留意,我们没有在列列表中添加主ID列,由于PostgreSQL会主动为我们这样做。我们可以在一个数据库中创建恣意数量的表。一旦创建了表,就可以基于特定的列(通常为id)在不同的表之间创建关系。利用查询工具创建数据库的方法如下:
CREATE TABLE( , ,..... PRIMARY KEY ());
CRUD对表中数据的操作CRUD(创建,检索,更新,删除)是DBMS的"问候世界",并且由于它们是最常用的操作,因此所有RDBMS都有相同的动词来执行它们。我们将在pgAdmin的查询工具中编写和执行查询,该查询可按以下方式利用。
https://p3.pstatp.com/large/pgc-image/28a99be5332f4c878bf1d780f8272a99> Query tool in pgAdmin
1创建新条目在表中添加新条目如下命令
INSERT INTO(column1, column2, column3,...) VALUES (value1, value2, value3,...);
INSERT,INTO,VALUE是SQL所利用的动词,因此不应将它们用作变量或值等。要向用户表中添加新条目,我们将以下查询写入查询工具。
INSERT INTO users(name, employed, address) VALUES ('Sheldon Cooper', true, 'Pasadena');
https://p1.pstatp.com/large/pgc-image/ecf5c2785f9542309116aebf6889baed> Insert Query
请留意,字符串应始终以‘’(单引号)而不是""(双引号)书写
2检索条目(全部或很少)可以检索和显示数据库中存储的数据。我们也可以获取整个数据或有限的条目。提取数据的代码是
selectfrom
这将获取整个数据集,如果您只想获取20个条目,则可以编写
selectfromlimit 20
如果要获取所有列,则可以编写以下内容,而不是编写所有列名称:
select * from
如果要在某些特定条件下获取效果,则可以利用Where关键字,如下所示
select * fromwhere=
您甚至可以创建复杂的查询,稍后再讨论。在我们的示例中,我们可以检索所需的数据
--Retrieving Specific columns for all users
select name,employed from users
--Retrieving all columns for all users
select * from users
--Retrieving all columns for first 3 users
select * from users limit 3
--Retrieving all columns for all users where employed = true
select * from users where employed = true
https://p9.pstatp.com/large/pgc-image/edcc77a6b64a43839ffa8f02b707d5db> Retrieving Data from table
3更新条目(全部或很少)RDMBS允许我们更新所有或有限的数据条目以将新值设置为列。
UPDATESET= ,=
如果要更新特定行,则可以利用Where添加条件。
UPDATESET= ,= WHERE=
就我们而言,我们将利用以下查询更新表
-- Make all rows as employed = true
update users set employed = true
-- change employed = false for entries with address = 'nebraska'
update users set employed = false where address = 'nebraska'
https://p9.pstatp.com/large/pgc-image/c5b5a4f9fadd492ebc42526c5a6c9a2f> Update entries
4删除条目(全部或很少)在SQL中删除条目很容易,用户可以通过添加Where子句删除所有行或删除特定行
-- Deleting all entries
Delete from
-- Deleting entries based on conditions
Delete fromwhere=
对于我们的示例,查询如下
-- Deleting all entries
Delete from users
-- Deleting entries based on conditions
Delete from users where employed = false
</blockquote>https://p3.pstatp.com/large/pgc-image/3541c53a95bf4807bd6690d6e1a738ff> Delete Entries from table
由于CRUD操作为数据库提供了根本功能,因此已被广泛利用。
在进入高级SQL和空间查询之前,是休息和玩CRUD的好时机。
本系列的第2部分将重点先容利用键和束缚在RDMBS中的表之间创建复杂的关系。
关于我
嗨,我是Krishna Lodha,是全栈Web GIS开辟人员。我非常热衷于地理位置的力量以及它所讲述的故事。
阿迪奥斯!
(本文由闻数起舞翻译自Alastair Christian的文章《Database Guide in 2021》,转载请注明出处,原文链接:https://medium.com/swlh/database-guide-in-2021-4199b7156e42) 转发了 转发了 转发了
页:
[1]