Nosql

如何儲存具有固定列數和可變行數的數據

  • July 21, 2016

我已經在堆棧溢出站點上發布了這個問題,並且比我更有經驗的使用者建議我在這裡發布它。

我在收集數據方面還很陌生,並且正在使用 R 從線上媒體文章中收集一個新的數據集,以及每篇文章的 disqus 評論和其他相關資訊。我的“記錄”將有 12 列資訊(見下圖)。我的困惑在於這些媒體文章可能有 0 到 500 條評論(也許更多)。我想盡可能有效地保存這些數據,目前我缺乏經驗的唯一想法是將每個數據保存在自己的 .csv 文件中,儘管我不確定這一點。

這就是我難住的地方。我的第一個想法是將每條記錄分成兩部分:第一部分將包含六列,並且總是有一行,第二部分將包含另外六列**,行數不同**。一種 ID 將兩者聯繫在一起。這可能是“骯髒”的解決方案。

我想向社區詢問有關儲存此類數據的新技術(例如:Mongodb、NoSQL。還是 ust SQL?)。最終,這些數據將不會線上,因為它將使用其部分或全部數據元素進行查詢或處理。

下圖顯示了部分數據記錄的範例,該記錄從 1 行開始,但行數根據文章中的評論數增加。如果輸入所有數據,此特定記錄將在最後 6 列中有 23 行。

這將極大地幫助我對前進的道路有一個想法,而不必測試或研究一項技術卻發現它不是我需要的。歡迎任何意見或建議。

在此處輸入圖像描述

根據您的圖像,以下內容會很好(使用 RDBMS 解決方案):

create table articles
(
 article_id     integer PRIMARY KEY,
 title          varchar(256) NOT NULL,
 url            varchar(256) NOT NULL,
 summary        varchar(256) NOT NULL,
 body           varchar(4000) NOT NULL
);

create table article_comments
(
 comment_id    integer PRIMARY KEY, -- primary key, unique, does not map to the "comment number" in your question
 article_id    integer NOT NULL, -- references articles.article_id
 screen_name   varchar(100),
 disqus_url    varchar(256),
 comment_dt    datetime, -- both the date & time from your spreadsheet
 comment_text  varchar(4000),
 comment_url   varchar(256),
 comment_post_id varchar(25)
);

articles基本上,和之間存在一對多的關係comments

你沒有說你想使用什麼RDBMS,所以數據類型需要相應地改變(長文章/評論等需要更大VARCHAR的s/TEXT列等)。約束 DDL 在很大程度上也依賴於 RDBMS,因此一旦做出決定,您就必須自己查找語法。我可以推薦 Postgres。

引用自:https://dba.stackexchange.com/questions/144526