抽象的
singlestoredB是一个多模型数据库系统,支持存储和查询JSON数据的能力。在本文中,我们将看到将JSON数据库转储从MongoDB移至SinglestoredB的容易。
介绍
MongoDB为其数据库产品提供了几个示例数据集。在本文中,我们将研究如何将这些数据集之一获取并轻松地导入单骨。
。创建一个SinglestoredB云帐户
previous article显示了创建免费的单粒云帐户所需的步骤。我们将使用 JSON DEMO Group 作为我们的工作区组名称, json-demo 作为我们的工作空间名称。我们会记下我们的密码和主机名称。
MongoDB数据集
我们将使用MongoDB的restaurants
数据集。它可以在github上广泛找到。结构非常平坦。这是数据集中的一个示例:
{
"URL":"http://www.just-eat.co.uk/restaurants-cn-chinese-cardiff/menu",
"_id":{
"$oid":"55f14312c7447c3da7051b26"
},
"address":"228 City Road",
"address line 2":"Cardiff",
"name":".CN Chinese",
"outcode":"CF24",
"postcode":"3JH",
"rating":5,
"type_of_food":"Chinese"
}
singlestoredB可以处理更复杂的JSON,如文章Using SingleStore as a JSON Document Database所示。
将JSON数据加载到SinglestoredB
首先,让我们使用mySQL客户端连接到singlestoredB云:
mysql --local-infile \
-u admin \
-h <host> \
-P 3306 \
--default-auth=mysql_native_password \
-p
<host>
被从singlestoredb云中获得的值替换。
我们现在创建我们的数据库:
CREATE DATABASE json_demo;
将JSON数据加载到SinglestoredB中时,我们可以使用几种选项。让我们看一下本文中的两种可能性。
1.将JSON数据存储在单个表列中
在此选项中,JSON数据的每一行都存储在单个表列中。
首先,我们将创建一个数据库表:
USE json_demo;
CREATE TABLE test1 (
whole JSON NOT NULL
);
通过使用NOT NULL
,如果尝试存储无效的JSON,SINGLESTOREDB将引起错误。
接下来,我们将加载JSON数据如下:
LOAD DATA LOCAL INFILE '/path/to/restaurants.json'
INTO TABLE test1
FORMAT JSON (
whole <- %
);
我们将替换为JSON文件所在位置的实际路径。
我们可以如下查询表:
SELECT * FROM test1 LIMIT 1\G
结果应与以下内容相似:
*************************** 1. row ***************************
whole: {"URL":"http://www.just-eat.co.uk/restaurants-007takeaway-s65/menu","_id":{"$oid":"55f14312c7447c3da7051b2b"},"address":"6 Drummond Street","address line 2":"Rotherham","name":"007 Takeaway","outcode":"S65","postcode":"1HY","rating":6,"type_of_food":"Pizza"}
2.将JSON数据存储在多个表列中
在此选项中,JSON数据的每一行都存储在多个表列中。
首先,我们将创建一个数据库表:
CREATE TABLE test2 (
URL TEXT,
id JSON NOT NULL,
address1 TEXT,
address2 TEXT,
name TEXT,
outcode TEXT,
postcode TEXT,
rating FLOAT,
type_of_food TEXT
);
在这里,我们已将TEXT
用于许多字段进行初始测试。
接下来,我们将加载JSON数据如下:
LOAD DATA LOCAL INFILE '/path/to/restaurants.json'
INTO TABLE test2
FORMAT JSON (
URL <- URL default "",
id <- _id,
address1 <- address default "",
address2 <- `address line 2` default "",
name <- name default "",
outcode <- outcode default "",
postcode <- postcode default "",
rating <- rating default NULL,
type_of_food <- type_of_food default ""
);
我们可以如下查询表:
SELECT * FROM test2 LIMIT 1\G
结果应与以下内容相似:
*************************** 1. row ***************************
URL: http://www.just-eat.co.uk/restaurants-328chineseonline-cf81/menu
id: {"$oid":"55f14312c7447c3da7051b55"}
address1: 2-4 Commercial Street
address2: Aberbargoed
name: 328 Chinese Online
outcode: CF81
postcode: 9BW
rating: 5
type_of_food: Chinese
概括
singlestoredB是一种非常有能力且灵活的数据库产品,并支持JSON数据。在这篇简短的文章中,我们看到了两个在SingleStoredB中存储MongoDB JSON数据的选项。 documentation包含更多细节和示例。