sql – crawler / scraper的数据库是什么?

我目前正在研究用于我正在进行的项目的数据库.希望你们能给我一些提示.

该项目是一个自动网络爬虫,可根据用户的请求检查网站,在某些情况下擦除数据,并创建已完成内容的日志文件.

要求:

>只有少数几列的表格;预定义列没有问题
>模型之间没有过于复杂的关联
>大量的约会和基于时间的查询
>由于日志记录,数据库将迅速增长并占用大量空间
>应该能够扩展到多个服务器
>字段主要包含ids(int),字符串(最多约200-500个字符)和unix时间戳
>两种不同类型的服务器将同时直接读取/写入数据:

>一个(或更高版本)rails应用程序,它接受用户输入并根据请求显示结果
>一个(或更高版本)Node.js服务器,用作执行爬虫/刮刀.它将有足够的负载连续运行,每秒进行数十次数据库查询.

我假设它既不是图形数据库(没有复杂的关联),也不是基于内存的键/值存储(缓存中容纳的数据太多).对于我能找到的其他类型的数据库,我仍然处于困境之中,每个数据库似乎都有它的优点.

那么,专业人士的任何建议我应该如何决定?

谢谢.

解决方法

我同意弗拉基米尔的观点,你会想要考虑这个场景的基于文档的数据库.我最熟悉MongoDB.我在这里使用它的原因如下:

>“只有少数几列表”的“架构要求”非常适合MongoDB的Nosql特性.>与上面的“节点之间没有过于复杂的关联”相同 – 您将需要决定是否更喜欢嵌套文档或使用dbref(我更喜欢前者)>大量基于时间的数据(以及其他扩展要求) – MongoDB通过分片或分区可以很好地扩展>读/写访问 – 这就是为什么我推荐MongoDB而不是像Hadoop这样的东西.交互式查询要求最好由Hadoop样式的商店以外的其他东西来满足,因为这种类型的存储是为批量(而不是交互式查询)要求而设计的.

相关文章

SELECT a.*,b.dp_name,c.pa_name,fm_name=(CASE WHEN a.fm_n...
if not exists(select name from syscolumns where name=&am...
select a.*,pano=a.pa_no,b.pa_name,f.dp_name,e.fw_state_n...
要在 SQL Server 2019 中设置定时自动重启,可以使用 Window...
您收到的错误消息表明数据库 'EastRiver' 的...
首先我需要查询出需要使用SQL Server Profiler跟踪的数据库标...