一、Pipelinedb的实现原理
数据虚拟化是PipelineDB设计的精髓,凭着这种设计,PipelineDB可以只占用较小的硬件资源实现高效的大数据量处理。
PipelineDB的目标是消除许多数据传输中的ETL过程。原始数据流式写入PipelineDB,被已声明的流式查询实时地转换和提取,这使得它在将成型的输出加载到数据库前不必周期性地处理颗粒数据,前提是这些处理过程可以通过SQL定义。
在PipelineDB的设计理念中,实用性是名列前茅要素,这也是我们将其包装为PostgreSQL插件的原因。所有数据存储和处理都交由PostgreSQL:一个极其稳定、成熟以及运用广泛的数据库。此外,PipelineDB兼容活跃的PostgreSQL生态中的所有工具。我们没有为PipelineDB设计特有的语法甚至是客户端,因为它可以很好地兼容任何基于PostgreSQL开发的库。
延伸阅读:
二、并发锁
在一定条件下,MyISAM也支持查询和操作的并发进行。
MyISAM存储引擎有一个系统变量concurrent_insert,专门用以控制其并发插入的行为,其值分别可以为0、1或2。
当concurrent_insert设置为0时,不允许并发插入。
当concurrent_insert设置为1时,如果MyISAM允许在一个读表的同时,另一个进程从表尾插入记录。这也是MySQL的默认设置。
当concurrent_insert设置为2时,无论MyISAM表中有没有空洞,都允许在表尾插入记录,都允许在表尾并发插入记录。
可以利用MyISAM存储引擎的并发插入特性,来解决应用中对同一表查询和插入锁争用。例如,将concurrent_insert系统变量为2,总是允许并发插入;同时,通过定期在系统空闲时段执行OPTIONMIZE TABLE语句来整理空间碎片,收到因删除记录而产生的中间空洞。