处理jsonb表posgres设计和选择SQL与NoSQL之间的设计

处理jsonb表posgres设计和选择SQL与NoSQL之间的设计,sql,postgresql,nosql,Sql,Postgresql,Nosql,我正在探索NoSQL世界,并阅读了一些pdf和文章,其中讨论了使用jsonb列的PostgresNoSQL功能。阅读之后,我的脑海里浮现出一些疑问,所以我来到这里寻找智慧 我的第一个问题是,使用jsonb数据类型的表是否被视为nosql?真的是nosql吗 接下来,在几个教程之后,我创建了一个如下所示的表: create table json_data (data JSONB); INSERT INTO json_data (data) VALUES (' { "name"

我正在探索NoSQL世界,并阅读了一些pdf和文章,其中讨论了使用jsonb列的
Postgres
NoSQL功能。阅读之后,我的脑海里浮现出一些疑问,所以我来到这里寻找智慧

我的第一个问题是,使用
jsonb
数据类型的表是否被视为nosql?真的是nosql吗

接下来,在几个教程之后,我创建了一个如下所示的表:

create table json_data (data JSONB);

INSERT INTO json_data (data)
VALUES
('
{
"name": "Xiaomi",
"type": "phone",
"brand": "ACME",
"price": 200,
"available": true,
"warranty_years": 1
}
');
我用不同的名字插入了3行。然后创建了第二列,名为
data2
,并执行了类似的操作。该表如下所示:

create table json_data (data JSONB);

INSERT INTO json_data (data)
VALUES
('
{
"name": "Xiaomi",
"type": "phone",
"brand": "ACME",
"price": 200,
"available": true,
"warranty_years": 1
}
');

两列具有相同的键。这个实验引出了我的第二个和第三个问题

(第二)如果我想选择所有列的所有名称,我怎么做?我的意思是,通过从json_data中指定
select data->>'name',data2->>'name',只拥有2列并不难,但是如果表有25列呢

(第三)在使用
jsonb
列数据类型时,拥有多个列是否是一种好的做法?或者,由于每一行都有一个jsonb对象,它应该存储共享同一个键“schema”(这称为schema还是仅仅是键?)的所有对象,如果添加另一列,是因为键不同吗

我问这个问题是因为我想存储一些仪器(大约30台)的实时市场数据,我关心性能和CPU/RAM使用情况。我希望能够以最快的方式查询我需要的仪器,同时不“破坏”虚拟机(它是一个vps)

最后,如果我想在30个仪器的数据可用时立即流式传输/插入数据,我应该使用SQL还是NoSQL?考虑到所有乐器共享相同的键,我应该只将它们保留在一列中,还是为每个乐器创建一个独立的列?(在使用SQL数据库的情况下,应该使用相同的模式,并添加一个带有仪器名称的列来区分,还是为每个仪器添加一个表?)


非常感谢您的评论和时间

我的意见是,如果您使用的是
SQL
数据库,那么就使用
SQL
。将
JSON
放入其中只是嵌套结构和更多工作的方法。我将创建一个描述仪器的表格(
create table instrument(id integer,instrument\u desc varchar)
),然后创建一个保存读数的表格(
创建表格读数(id serial,instrument\u id FK to instrument,reading columns…
)。我的意见是,如果您使用的是
SQL
数据库,那么请使用
SQL
。将
JSON
放入其中只是嵌套结构和更多工作的方法。我将创建一个描述仪器的表格(
create table instrument(id integer,instrument\u desc varchar)
),然后创建一个保存读数的表格(
创建表格读数(id serial,instrument\u id FK to instrument,reading columns…
)。