小编Wil*_*yor的帖子

如何分析~13GB的数据?

我有大约300个文本文件,其中包含跟踪器,种子和同伴的数据.每个文件的组织方式如下:

tracker.txt

time torrent
    time peer
    time peer
    ...
time torrent
...
Run Code Online (Sandbox Code Playgroud)

我有每个跟踪器的几个文件,并且重复了大部分信息(相同的信息,不同的时间).

我希望能够分析我所拥有的内容,并报告有关事情的统计数据

  • 每个跟踪器有多少种子
  • 列出的种子有多少跟踪器
  • 洪流有多少同行
  • 对同龄人有多少种洪流

数据的庞大数量使我难以接受.这是我尝试过的.

MySQL的

我把所有东西都放进了数据库; 每个实体类型一个表和用于保存关系的表(例如,此torrent位于此跟踪器上).

将信息添加到数据库的速度很慢(当我尝试这个时,我没有13GB的信息),但之后分析这些关系是不行的.每个稍微复杂的查询都需要24小时才能完成(如果有的话).

一个示例查询将是:

SELECT COUNT(DISTINCT torrent) 
    FROM TorrentAtPeer, Peer 
    WHERE TorrentAtPeer.peer = Peer.id 
    GROUP BY Peer.ip;
Run Code Online (Sandbox Code Playgroud)

我尝试在我的my.cnf文件中增加内存分配,但似乎没有帮助.我使用了my-innodb-heavy-4G.cnf设置文件.

编辑:添加表格详细信息

这是我正在使用的:

Peer         Torrent                  Tracker        
-----------  -----------------------  ------------------  
id (bigint)  id (bigint)              id (bigint)
ip* (int)    infohash* (varchar(40))  url (varchar(255))
port (int)

TorrentAtPeer      TorrentAtTracker
-----------------  ----------------
id (bigint)        id (bigint)
torrent* (bigint)  torrent* (bigint)
peer* (bigint)     tracker* (bigint) …
Run Code Online (Sandbox Code Playgroud)

java database matlab large-data

17
推荐指数
2
解决办法
806
查看次数

查找数组A至少包含数组B中X值的条目

我有一个对象集合,每个对象都有一个名为fingerprint的字段,其中包含20个哈希:

{
    title: 'The Chronicles of Narnia',
    authors: ['C.S. Lewis'],
    fingerprint: ['50e...', 'ae2...', ...]
}
Run Code Online (Sandbox Code Playgroud)

然后我有另外20个哈希的查询指纹.我想做的是找到至少共享X哈希值的所有条目.换句话说,两个阵列的交叉点必须是一定的大小.

我有一个使用MySQL的类似系统的旧实现.查询看起来像这样:

SELECT *
FROM Document d
INNER JOIN Fingerprint f
    ON d.id = f.document_id
WHERE f.whorl IN (:hashes)
GROUP BY d.id
HAVING COUNT(d.id) >= X
Run Code Online (Sandbox Code Playgroud)

表中的每个条目都Fingerprint包含文档ID和指纹中的单个轮廓.Fingerprint每个文档将有20个条目.

据我所知,这个查询正在做的是每次旋转匹配然后按唯一文档分组时复制文档.这似乎有点浪费,但它确实有效.

我正试图在MongoDB中重新实现这个系统,但我运气不好.我可以获得至少共享一个或所有轮​​生的所有条目的列表:

at least one: db.objects.find({ fingerprint: {$in: [hashes]})
         all: db.objects.find({ fingerprint: {$all: [hashes]})
Run Code Online (Sandbox Code Playgroud)

我知道我可以在应用程序层中扫描此列表以查找我之后的匹配项.如果我预计有数百万件物品(目前约为150万件),那么这似乎是一个坏主意.

我已经查看了aggregate()功能但无法改进我已有的功能:

db.objects.aggregate({$match: {fingerprint: {$in: [hashes]}}})
Run Code Online (Sandbox Code Playgroud)

从这里我想我可以分组和过滤:

db.objects.aggregate({$match: {fingerprint: {$in: [hashes]}}}, 
                     {$group: {_id: "$_id", matches: {$sum: 1}}})
Run Code Online (Sandbox Code Playgroud)

在这里,我试图复制MySQL查询的作用:为每个匹配发出一个文档然后计算文档.当然,无论有多少匹配,我们只会发出一次文档. …

mongodb nosql

4
推荐指数
1
解决办法
843
查看次数

如何在我的网站中嵌入Facebook Like Box?

我觉得这应该很容易,但我无法得到任何工作.

我在Facebook上为我的网站创建了一个应用程序.我已经设置了我的网站网址并公开了我的应用.

根据说明,我应该在我的顶部附近添加此代码 body

<script>
window.fbAsyncInit = function() {
  FB.init({
    appId      : 'MY_APP_ID',
    xfbml      : true,
    version    : 'v2.2'
  });
};
(function(d, s, id){
 var js, fjs = d.getElementsByTagName(s)[0];
 if (d.getElementById(id)) {return;}
 js = d.createElement(s); js.id = id;
 js.src = "//connect.facebook.net/en_US/sdk.js";
 fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
</script>
Run Code Online (Sandbox Code Playgroud)

然后我可以嵌入这样的插件:

<div
  class="fb-like"
  data-share="true"
  data-width="450"
  data-show-faces="true">
</div>
Run Code Online (Sandbox Code Playgroud)

当我这样做时,我没有看到任何内容fb-like div.

我挖得更深一些,似乎sdk.js应该由第一位代码引入的文件不是.相反,//connect.facebook.net/en_US/sdk.jsURL返回307 Internal Redirectabout:blank.

我已经清除了我的缓存,我已经尝试了这个代码localhost以及我的实际域名,我更改了站点URL以匹配.

我究竟做错了什么?

javascript facebook facebook-like

0
推荐指数
1
解决办法
843
查看次数