我在设计一个数据仓库系统。我需要一个程序来获取:多个数据类型,连接它们,然后对它们执行快速查询。
由于源的大小为250 GB (每个表),我想我们是在大数据区。
我无法事先知道将在这个系统上执行的查询类型,所以我需要一些模式--少一些模式。此外,这个系统需要注意的事实是,我们有每日快照,所以它应该能够以合理的方式查询(更多的信息,这里)。
我知道Apache钻机,但它不能查询日常快照(参见链接问题中的示例)。
发布于 2016-08-27 05:09:57
阅读这篇文章和你的另一篇文章,我不太明白为什么你觉得它需要没有模式。模式-无模式通常用于大数据(特别是Hadoop),其中有来自多个源的数据,您希望将这些数据加载到数据仓库中供以后使用。然后,在准备好使用数据时配置架构。
对于您的大型数据集,您将提到每天拍摄快照,虽然这将完成这项工作,但您将以数据量方面的大量开销告终。更好的选择是打开更改数据捕获(CDC)。CDC将只记录对数据的更改,而不是对数据中的所有内容进行完整的快照。所以你不是在为所有不变的记录浪费空间。大多数现代数据库引擎都支持某种形式的CDC,但也有第三方工具可以做到这一点。
我强烈建议您寻求一家专门从事数据仓库的第三方咨询公司的建议,以帮助您管理这一问题。您需要的是专业知识和软件推荐。
发布于 2016-01-29 15:37:52
您不会(正常)加入像MongoDB这样的数据库,所以这是不可能的,但是为什么不能事先知道查询就一定意味着没有模式呢?你的数据到底有什么结构?
从链接到另一个问题,您似乎需要快速的文本搜索(比如/ILIKE?)。
好吧,对于新版本的Postgres来说,只要您使用pg_trgm扩展(http://www.postgresql.org/docs/9.1/static/pgtrgm.html),就能很好地满足这个要求。它使用带有通配符的LIKE/ILIKE运算符实现索引(而不是顺序扫描)搜索。
由于这个扩展,我成功地在~TB大小的PG数据库上创建了速度惊人的搜索引擎。
我还使用pyparsing Python模块编写了一个类似布尔的查询引擎,它具有典型的AND、OR、NOT操作符和对应于(pg_trgm-indexed)列的关键字。它将高级查询转换为SQL (实际上是SQLAlchemy核心SQL表达式)。通过这种方式,您可以非常灵活地查询DB,同时仍然可以非常快速地获得结果。我不知道你是否需要类似搜索引擎的功能,但我确信使用pyparsing可以很容易地开发出这样的语法。
如果您需要一些涉及更多数值计算的内容,PyTables对于内存不足的数据集的操作非常快(尽管字符串搜索操作符在那里有些不成熟)。
https://softwarerecs.stackexchange.com/questions/28383
复制相似问题