離線數(shù)倉從0到1

  • 話聊
    建設(shè)數(shù)倉
  • ETL
    工具
    面臨的問題
  • 分層
    分層的出發(fā)點(diǎn)
    分層設(shè)計(jì)
  • 模型建設(shè)
    為什么要建設(shè)模型
    怎么建設(shè)模型
    理清工作思路
    實(shí)施步驟
    建模方法及實(shí)施
  • 規(guī)范建設(shè)
    臨時表管理
    代碼規(guī)范
    流程規(guī)范

話聊

技術(shù)升級快于我們的想象,今天的故事在明天來看就是一種常識棵磷。對于數(shù)倉而言蛾狗,又何嘗不是?互聯(lián)網(wǎng)的發(fā)展仪媒,導(dǎo)致大數(shù)據(jù)的人才缺口沉桌。互聯(lián)網(wǎng)公司雨后春筍算吩,傳統(tǒng)行業(yè)機(jī)巧轉(zhuǎn)身留凭。短短幾年,數(shù)據(jù)行業(yè)已滄海桑田偎巢。今天談大數(shù)據(jù)已不復(fù)當(dāng)年霧里看花的景象蔼夜,它像一列更高速的快車,和老前輩們一樣压昼,向自己的終點(diǎn)加速挎扰。

回到主題,最近負(fù)責(zé)一個數(shù)據(jù)中臺項(xiàng)目的建設(shè)巢音,從0到1的建立數(shù)倉。模型建設(shè)尽超,參考維度模型的方式官撼。通過維度+事實(shí),支持業(yè)務(wù)數(shù)據(jù)需求似谁。走了不少彎路傲绣,在這里總結(jié)總結(jié)掠哥,更希望和大家交流

建設(shè)數(shù)倉

什么是數(shù)倉,為什么建設(shè)數(shù)倉秃诵,怎么建設(shè)數(shù)倉续搀?(我是誰,我從哪里來菠净,我到哪里去)
Inmon將數(shù)據(jù)倉庫定義為:在企業(yè)管理和決策中面向主題的禁舷、集成的、與時間相關(guān)的毅往、不可修改的數(shù)據(jù)集合牵咙。數(shù)據(jù)倉庫的目標(biāo):數(shù)據(jù)資產(chǎn)、決策信息

系統(tǒng)層面

  • etl過程:打通你的任督二脈(離線+實(shí)時)攀唯,讓數(shù)據(jù)在整個環(huán)節(jié)中流通起來
  • 數(shù)據(jù)分層:一套(低耦合洁桌、高內(nèi)聚)的層級,是十分重要的侯嘀×砹瑁總不想業(yè)務(wù)、數(shù)據(jù)等一變化戒幔,數(shù)倉像有投胎了一次
  • 數(shù)據(jù)集成:多業(yè)務(wù)場景下吠谢,打破數(shù)據(jù)信息壁壘,避免數(shù)據(jù)歧義溪食,統(tǒng)一數(shù)據(jù)服務(wù)
  • 規(guī)范化:良好的流程化囊卜、規(guī)范化設(shè)計(jì),會帶來易維護(hù)错沃、高擴(kuò)展
  • 監(jiān)控與輔助:質(zhì)量監(jiān)控栅组、調(diào)度管理、元數(shù)據(jù)管理枢析、信息安全管理
  • 走向服務(wù):對外api服務(wù)/自助查詢平臺/OLAP分析平臺
  • 實(shí)時數(shù)倉:接觸不多玉掸,有機(jī)會再寫

協(xié)作層面

  • 與后端開發(fā)協(xié)同:上游依賴,需要有一個良好的通道醒叁,保證信息共享和聯(lián)動響應(yīng)
  • 與分析/業(yè)務(wù)握手:下游服務(wù)司浪,需求方是多個的,即可能是分析把沼,也可能是運(yùn)營/boss啊易,先理解他們,在讓他們理解你
  • 迭代數(shù)倉:只要業(yè)務(wù)在發(fā)展饮睬,數(shù)倉就需要不斷更新租谈;響應(yīng)業(yè)務(wù)變化,豐富數(shù)據(jù)模型

個人角色

  1. 責(zé)任:做好數(shù)據(jù)集成捆愁,保持?jǐn)?shù)據(jù)準(zhǔn)確割去,樹立數(shù)倉權(quán)威
  2. 工作安排:簡單的事情復(fù)雜化窟却,復(fù)雜的事情簡單化(簡單的事情想著系統(tǒng)化,復(fù)雜的事情想想流程化呻逆,標(biāo)準(zhǔn)化)
  3. 溝通:魯迅說過夸赫,雙贏才是真理。
  4. 掌握技能:優(yōu)化查詢咖城、高效存儲茬腿、模型理論

ETL

因?yàn)閿?shù)據(jù)應(yīng)用場景的不同,數(shù)據(jù)存儲方案也有較大差異酒繁。內(nèi)部常用的mysql/Mssql/oracle和hive/hbase/MongDB滓彰,外部數(shù)據(jù)交互的excel/csv/txt/api等。

要求

  1. 業(yè)務(wù)場景覆蓋
    業(yè)務(wù)數(shù)據(jù)往往涉及多種數(shù)據(jù)源州袒,數(shù)據(jù)存儲也常常會有多種選擇揭绑。文本數(shù)據(jù)、日志數(shù)據(jù)郎哭、RMDB他匪、Nosql等。則要求etl工具能夠覆蓋這些業(yè)務(wù)場景夸研。
  2. 性能
    業(yè)務(wù)特性在數(shù)據(jù)上邦蜜,往往常有波峰波谷。在波峰是否能夠hold住亥至。比如常見的雙11悼沈,618等消費(fèi)節(jié)日。而且伴隨業(yè)務(wù)腳步的擴(kuò)展姐扮,能否面對后期的數(shù)據(jù)量增長
  3. 擴(kuò)展性
    從源端進(jìn)行數(shù)據(jù)etl工作絮供,當(dāng)數(shù)據(jù)結(jié)構(gòu)變化、數(shù)據(jù)刪除茶敏、數(shù)據(jù)源變更壤靶、數(shù)據(jù)類型,在這樣的情況下惊搏,就需要更好的擴(kuò)展性贮乳,保持與數(shù)據(jù)質(zhì)量監(jiān)控、元數(shù)據(jù)管理的交互恬惯。

工具

datax/sqoop/kettle/informatica等等

應(yīng)該要滿足

  1. 連續(xù)性的數(shù)據(jù)向拆,不應(yīng)該從某個時間點(diǎn)進(jìn)行數(shù)據(jù)刪除;不應(yīng)該修改已有的數(shù)據(jù)
  2. ETL一般為最開始的部分酪耳,凌晨之后的時間點(diǎn)亲铡。a:避免集中式的對某個jdbc海量同步,影響業(yè)務(wù)(部分從庫可能提供查詢服務(wù))、b:明確調(diào)度的時間奖蔓,應(yīng)盡可能的在某個時間段內(nèi)完成(不能僅依靠調(diào)度,實(shí)現(xiàn)任務(wù)流的串行讹堤;為后期的大作業(yè)空間吆鹤,占用等待的系統(tǒng)資源)
  3. 應(yīng)記錄數(shù)據(jù)同步過程中,涉及的元數(shù)據(jù)洲守。包括:作業(yè)詳情疑务、開始/結(jié)束時間、消耗資源量梗醇、過程狀態(tài)等

面臨的問題

  1. 當(dāng)源數(shù)據(jù)結(jié)構(gòu)變化(如mysql的一張表增加字段)知允,如果低成本的擴(kuò)展,實(shí)現(xiàn)業(yè)務(wù)零感知叙谨。應(yīng)該在一開始的設(shè)計(jì)時温鸽,被考慮到∈指海可通過元數(shù)據(jù)監(jiān)控涤垫,自動實(shí)現(xiàn)動態(tài)的數(shù)據(jù)擴(kuò)展。
  2. 數(shù)據(jù)加載錯誤(字段類型竟终、數(shù)據(jù)缺失蝠猬、多表同步、歸檔加載统捶、空值異常)

分層

分層的出發(fā)點(diǎn)

我想用身邊的房子來描述來描述分層設(shè)計(jì)榆芦。分層從直觀的角度出發(fā),是一種層次/功能關(guān)系喘鸟。數(shù)倉中體現(xiàn)為: ods/dw/dm匆绣。每一層都干著自己的事情,像房子中的廚房迷守、衛(wèi)生間犬绒、客廳。你總不想還在睡眠中兑凿,被別人清晨的第一股清流所吵醒凯力。
對于數(shù)倉而言,層一是解決功能界線礼华,廚房只干著做飯炒菜的事情咐鹤;二是解決問題隔離及快速定位,廚房的煙味不要跑到臥室去圣絮;如果有煙味請打開排氣扇祈惶。

分層設(shè)計(jì)

設(shè)計(jì)原則

  • 層級清晰
  • 功能明確
  • 內(nèi)部無依賴

常用分層結(jié)構(gòu)

數(shù)倉-分層

  1. Stage緩沖層
    事務(wù)性數(shù)據(jù),每日增量方式進(jìn)行數(shù)據(jù)同步。需要注意數(shù)據(jù)同步時的邊界問題捧请,避免臟數(shù)據(jù)凡涩。對于非事務(wù)性數(shù)據(jù),一般通過快照/全量更新疹蛉。不對外開放數(shù)據(jù)查詢
  2. ODS層
    一般場景下活箕,我們認(rèn)為該層數(shù)據(jù)與線上保持一致。實(shí)際處理過程中可款,為了處理時間維度上的數(shù)據(jù)變化育韩,會記錄數(shù)據(jù)的變化軌跡(緩慢變化維)。對于該部分?jǐn)?shù)據(jù)闺鲸,應(yīng)該有選擇性的實(shí)施筋讨,避免業(yè)務(wù)處理過程變得復(fù)雜和問題發(fā)生后難以回溯。
  3. DIM/DW層(模型層)
    在ods層基礎(chǔ)之上摸恍,設(shè)計(jì)一個寬表層/模型層悉罕,通過維度建模的方式,實(shí)現(xiàn)維度數(shù)據(jù)與事實(shí)數(shù)據(jù)的分離(星型模型)误墓。此外蛮粮,豐富寬表以彌補(bǔ)星型模型的未覆蓋之處。以此高覆蓋業(yè)務(wù)場景需求
  4. DA層(應(yīng)用層)
    面向不同的應(yīng)用谜慌,聚合類的數(shù)據(jù)層然想。該層對于DIM/DW層的使用,是對模型層的一個檢視維度

面臨的問題
數(shù)據(jù)分層實(shí)際解決的是欣范,不同層級之間的邊界变泄,做到井水不犯河水(高內(nèi)聚低耦合)。實(shí)際工作中恼琼,應(yīng)結(jié)合業(yè)務(wù)處理過程妨蛹,對涉及的數(shù)據(jù)加工流程,確定相應(yīng)的功能邊界晴竞,并遵守和監(jiān)控蛙卤。雖如此罐盔,依然會面臨一些問題系宜。

  1. 歷史數(shù)據(jù)重現(xiàn): 所依賴的數(shù)據(jù)有誤蟆盐,如DIM依賴的ods層數(shù)據(jù)闰蛔,有問題。問題數(shù)據(jù)可能是當(dāng)日斧蜕,也可能是一段時間內(nèi)瓤帚。DIM歷史數(shù)據(jù)如何更新為正確數(shù)據(jù)
  2. 性能問題:對于日志數(shù)據(jù)嘿架、大型事務(wù)數(shù)據(jù)垛耳,在更新數(shù)據(jù)時存在的性能低下
  3. 分層重構(gòu):在一開始分層設(shè)計(jì)中栅屏,將某些流程冗余到另一個層級中飘千。前期應(yīng)怎么處理,以及后期如何進(jìn)行低成本剝離

模型建設(shè)

數(shù)據(jù)倉庫栈雳,是一個工程性的建設(shè)护奈,而非獨(dú)立的模塊開發(fā)。從大局出發(fā)甫恩,看待數(shù)倉建設(shè)逆济,要考慮與源數(shù)據(jù)的交互,質(zhì)量的監(jiān)控磺箕,如何對外提供數(shù)據(jù)服務(wù)等。而在這些工作中抛虫,模型的建設(shè)可以說是靈魂式的存在松靡。滿足集成性、歷史性建椰、分主題的要求雕欺,覆蓋業(yè)務(wù)多場景需求,提供決策性企業(yè)數(shù)據(jù)棉姐。
水無定勢屠列,兵無常法。不同的行業(yè)伞矩,有不同的需求笛洛,不同的模型解決不同的問題。

為什么要建設(shè)模型

  • 進(jìn)行全面的業(yè)務(wù)梳理乃坤,改進(jìn)業(yè)務(wù)流程苛让。在業(yè)務(wù)模型建設(shè)的階段,能夠幫助我們的企業(yè)或者是管理機(jī)關(guān)對本單位的業(yè)務(wù)進(jìn)行全面的梳理湿诊。通過業(yè)務(wù)模型的建設(shè)狱杰,我們應(yīng)該能夠全面了解該單位的業(yè)務(wù)架構(gòu)圖和整個業(yè)務(wù)的運(yùn)行情況,能夠?qū)I(yè)務(wù)按照特定的規(guī)律進(jìn)行分門別類和程序化厅须,同時仿畸,幫助我們進(jìn)一步的改進(jìn)業(yè)務(wù)的流程,提高業(yè)務(wù)效率朗和,指導(dǎo)我們的業(yè)務(wù)部門的生產(chǎn)错沽。
  • 建立全方位的數(shù)據(jù)視角,消滅信息孤島和數(shù)據(jù)差異例隆。通過數(shù)據(jù)倉庫的模型建設(shè)甥捺,能夠?yàn)槠髽I(yè)提供一個整體的數(shù)據(jù)視角,不再是各個部門只是關(guān)注自己的數(shù)據(jù)镀层,而且通過模型的建設(shè)镰禾,勾勒出了部門之間內(nèi)在的聯(lián)系皿曲,幫助消滅各個部門之間的信息孤島的問題,更為重要的是吴侦,通過數(shù)據(jù)模型的建設(shè)屋休,能夠保證整個企業(yè)的數(shù)據(jù)的一致性,各個部門之間數(shù)據(jù)的差異將會得到有效解決备韧。
  • 解決業(yè)務(wù)的變動和數(shù)據(jù)倉庫的靈活性劫樟。通過數(shù)據(jù)模型的建設(shè),能夠很好的分離出底層技術(shù)的實(shí)現(xiàn)和上層業(yè)務(wù)的展現(xiàn)织堂。當(dāng)上層業(yè)務(wù)發(fā)生變化時叠艳,通過數(shù)據(jù)模型,底層的技術(shù)實(shí)現(xiàn)可以非常輕松的完成業(yè)務(wù)的變動易阳,從而達(dá)到整個數(shù)據(jù)倉庫系統(tǒng)的靈活性附较。
  • 幫助數(shù)據(jù)倉庫系統(tǒng)本身的建設(shè)。通過數(shù)據(jù)倉庫的模型建設(shè)潦俺,開發(fā)人員和業(yè)務(wù)人員能夠很容易的達(dá)成系統(tǒng)建設(shè)范圍的界定拒课,以及長期目標(biāo)的規(guī)劃,從而能夠使整個項(xiàng)目組明確當(dāng)前的任務(wù)事示,加快整個系統(tǒng)建設(shè)的速度

怎么建設(shè)模型

怎么建設(shè)早像,可能是大家最關(guān)心的一點(diǎn)。讓我們從另一個角度想想肖爵,誰應(yīng)該建設(shè)模型卢鹦?或者誰應(yīng)該參與到模型的建設(shè)中?

理清工作思路

  • 誰應(yīng)參與模型建設(shè)
    一個模型的成功好壞可能有很多層面遏匆。但模型不能解決某個或某一些問題法挨,顯然是失敗的。那么幅聘,業(yè)務(wù)人員應(yīng)該參與凡纳,應(yīng)該他們是需求的出發(fā)者
  • 模型建設(shè)人員要做什么
    數(shù)倉人員的工作界定,到底在那里帝蒿?他們負(fù)責(zé)哪些某塊荐糜?是指導(dǎo)業(yè)務(wù)梳理,還是業(yè)務(wù)提出模型需求葛超。企業(yè)的規(guī)模暴氏、組織架構(gòu)都會影響到這個選擇。但最終的模型落地绣张,應(yīng)由模型人員確定答渔,并給出對應(yīng)的設(shè)計(jì)。
  • 哪些支持
    沒有高層的重視侥涵,模型建設(shè)就像蓋煙囪

實(shí)施步驟

業(yè)務(wù)模型 --> 領(lǐng)域模型 --> 邏輯模型 --> 物理模型
業(yè)務(wù)建模 生成業(yè)務(wù)模型沼撕,主要解決業(yè)務(wù)層面的分解和程序化

| 劃分整個單位的業(yè)務(wù)宋雏,一般按照業(yè)務(wù)部門的劃分,進(jìn)行各個部分之間業(yè)務(wù)工作的界定务豺,理清各業(yè)務(wù)部門之間的關(guān)系
| 深入了解各個業(yè)務(wù)部門的內(nèi)具體業(yè)務(wù)流程并將其程序化
| 提出修改和改進(jìn)業(yè)務(wù)部門工作流程的方法并程序化
| 數(shù)據(jù)建模的范圍界定磨总,整個數(shù)據(jù)倉庫項(xiàng)目的目標(biāo)和階段劃分

領(lǐng)域建模 生成領(lǐng)域模型,主要是對業(yè)務(wù)模型進(jìn)行抽象處理

| 抽取關(guān)鍵業(yè)務(wù)概念笼沥,并將之抽象化
| 將業(yè)務(wù)概念分組蚪燕,按照業(yè)務(wù)主線聚合類似的分組概念
| 細(xì)化分組概念,理清分組概念內(nèi)的業(yè)務(wù)流程并抽象化
| 理清分組概念之間的關(guān)聯(lián)奔浅,形成完整的領(lǐng)域概念模型

邏輯建模 生成邏輯模型馆纳,主要是將領(lǐng)域模型的概念實(shí)體以及實(shí)體之間的關(guān)系進(jìn)行數(shù)據(jù)庫層次的邏輯化

| 業(yè)務(wù)概念實(shí)體化,并考慮其具體的屬性
| 事件實(shí)體化汹桦,并考慮其屬性內(nèi)容
| 說明實(shí)體化厕诡,并考慮其屬性內(nèi)容

物理建模 生成物理模型,主要解決营勤,邏輯模型針對不同關(guān)系型數(shù)據(jù)庫的物理化以及性能等一些具體的技術(shù)問題

| 針對特定物理化平臺,做出相應(yīng)的技術(shù)調(diào)整
| 針對模型的性能考慮壹罚,對特定平臺作出相應(yīng)的調(diào)整
| 針對管理的需要葛作,結(jié)合特定的平臺,做出相應(yīng)的調(diào)整
| 生成最后的執(zhí)行腳本猖凛,并完善

建模方法及實(shí)施

? 建模的方法論赂蠢,當(dāng)前主流的Immon的范式建模,Kimball的維度建模辨泳,還有一個Data Vault(數(shù)據(jù)湖)虱岂。不同的建模方式,其實(shí)是從不同的角度來看待這個世界菠红。由于實(shí)際過程中使用維度建模的方式較多第岖,我們以維度建模來示例模型建設(shè)

  1. 選擇業(yè)務(wù)過程
    在確定業(yè)務(wù)過程前,應(yīng)該了解企業(yè)經(jīng)營范圍试溯,對各個業(yè)務(wù)線有較為清楚的了解蔑滓。面對不同的業(yè)務(wù)過程,應(yīng)該業(yè)務(wù)專家確定業(yè)務(wù)所涉及的過程遇绞,如電商键袱,涉及下單、付款摹闽、發(fā)貨蹄咖、退貨等。有一個業(yè)務(wù)主線架構(gòu)付鹿。
    基于主線結(jié)構(gòu)澜汤,選擇一個簡單且重要的業(yè)務(wù)過程蚜迅。明確核心指標(biāo)(事實(shí))和模型考評標(biāo)準(zhǔn),為后期檢視定下基調(diào)银亲。
  2. 確定粒度
    粒度慢叨,是一個不能再拆分的細(xì)分。如訂單事實(shí)务蝠,還可以拆分為訂單下的商品拍谐。最細(xì)粒度便于后期擴(kuò)展,不用考慮因?yàn)榻y(tǒng)計(jì)口徑變化時馏段,模型不可用或要進(jìn)行大改的擔(dān)憂轩拨。
  3. 確定維度
    維度,是描述事實(shí)的環(huán)境院喜。是where亡蓉、when、who喷舀、how的回答砍濒。而不同的業(yè)務(wù)過程,對于維度的考慮是不同的硫麻。訂單事實(shí)關(guān)系爸邢,如訂單量、訂單金額拿愧、商品滲透等杠河。如果是采購過程,更關(guān)系每個商品的采購價浇辜、采購量券敌、庫存周轉(zhuǎn)問題了。
  4. 確定事實(shí)
    事實(shí)柳洋,是對發(fā)生的事務(wù)的度量待诅。如買條褲子35元,買了5斤牛肉等
    ? 實(shí)際的模型建設(shè)過程中膳灶,更多的問題像是在一個迷宮中咱士,不知出路是哪一條。個人的建議轧钓,和業(yè)務(wù)專家握手序厉,了解多少業(yè)務(wù)過程,將模型的主線結(jié)構(gòu)劃分清楚毕箍。 基于主線結(jié)構(gòu)弛房,選擇最重要的業(yè)務(wù)過程,梳理當(dāng)前業(yè)務(wù)需求中集中的問題和關(guān)切點(diǎn)而柑。以此為出發(fā)點(diǎn)文捶,進(jìn)行需求擴(kuò)展荷逞。

? 需求擴(kuò)展時,應(yīng)從維度表開始粹排,如常見的時間維度种远、商品維度、自然人維度等顽耳。將維度表確認(rèn)后對事實(shí)進(jìn)行豐滿坠敷,采用維度建模方式,事實(shí)表中僅儲存維度的鍵射富。

規(guī)范建設(shè)

臨時表管理

數(shù)據(jù)處理過程中膝迎,不得不用到臨時表(中間表),一般認(rèn)為臨時表是沒有儲存意義的胰耗,但是又不能立馬刪除限次,或結(jié)束后刪除(有時候過程有問題,你還得依靠過程表找原因呢柴灯!或是你想避免對功能庫的污染卖漫,在temp庫中進(jìn)行數(shù)據(jù)備份)。如果沒有一套生命周期去約束臨時表的話赠群,將不得不面臨臨時表的庫儲存爆炸問題懊亡。那么如何處理呢?

  1. 約定一套統(tǒng)一的臨時表命名方式
    如創(chuàng)建統(tǒng)一的臨時庫(如TEMP)乎串。要求該庫中的數(shù)據(jù)表全部刪除并不影響業(yè)務(wù)。命名規(guī)則根據(jù)數(shù)據(jù)處理過程而定速警,不同的命名指定的含義不同叹誉。
  2. 表生命周期
    針對不同的表,周期有限闷旧。制定統(tǒng)一的表刪除策略

代碼規(guī)范

  1. 腳本格式規(guī)范
    腳本頭部注釋編寫規(guī)范长豁、注釋規(guī)范、sql規(guī)范google規(guī)范參考
  2. 文件/表命名規(guī)范
    一個文件中忙灼,只應(yīng)該有一張表匠襟,其余只能是臨時表;表名稱應(yīng)與文件名稱相同
  3. 字段命名規(guī)范
    去除多詞同義该园,和同詞多義問題酸舍。尤其是在模型層(一般也叫做一致性維度)

流程規(guī)范

最重要的就是流程了,明確各個步驟需要完成的事項(xiàng)里初,減少代碼出錯風(fēng)險啃勉。

參考

  1. 淺談數(shù)據(jù)倉庫建設(shè)中的數(shù)據(jù)建模方法
  2. 數(shù)據(jù)倉庫工具箱:維度建模權(quán)威指南(第三版)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市双妨,隨后出現(xiàn)的幾起案子淮阐,更是在濱河造成了極大的恐慌叮阅,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,348評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件泣特,死亡現(xiàn)場離奇詭異浩姥,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)状您,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,122評論 2 385
  • 文/潘曉璐 我一進(jìn)店門勒叠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人竞阐,你說我怎么就攤上這事缴饭。” “怎么了骆莹?”我有些...
    開封第一講書人閱讀 156,936評論 0 347
  • 文/不壞的土叔 我叫張陵颗搂,是天一觀的道長。 經(jīng)常有香客問我幕垦,道長丢氢,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,427評論 1 283
  • 正文 為了忘掉前任先改,我火速辦了婚禮疚察,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘仇奶。我一直安慰自己貌嫡,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,467評論 6 385
  • 文/花漫 我一把揭開白布该溯。 她就那樣靜靜地躺著岛抄,像睡著了一般。 火紅的嫁衣襯著肌膚如雪狈茉。 梳的紋絲不亂的頭發(fā)上夫椭,一...
    開封第一講書人閱讀 49,785評論 1 290
  • 那天,我揣著相機(jī)與錄音氯庆,去河邊找鬼蹭秋。 笑死,一個胖子當(dāng)著我的面吹牛堤撵,可吹牛的內(nèi)容都是我干的仁讨。 我是一名探鬼主播,決...
    沈念sama閱讀 38,931評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼实昨,長吁一口氣:“原來是場噩夢啊……” “哼陪竿!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,696評論 0 266
  • 序言:老撾萬榮一對情侶失蹤族跛,失蹤者是張志新(化名)和其女友劉穎闰挡,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體礁哄,經(jīng)...
    沈念sama閱讀 44,141評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡长酗,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,483評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了桐绒。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片夺脾。...
    茶點(diǎn)故事閱讀 38,625評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖茉继,靈堂內(nèi)的尸體忽然破棺而出咧叭,到底是詐尸還是另有隱情,我是刑警寧澤烁竭,帶...
    沈念sama閱讀 34,291評論 4 329
  • 正文 年R本政府宣布菲茬,位于F島的核電站,受9級特大地震影響派撕,放射性物質(zhì)發(fā)生泄漏婉弹。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,892評論 3 312
  • 文/蒙蒙 一终吼、第九天 我趴在偏房一處隱蔽的房頂上張望镀赌。 院中可真熱鬧,春花似錦际跪、人聲如沸商佛。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽威彰。三九已至,卻和暖如春穴肘,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背舔痕。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工评抚, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人伯复。 一個月前我還...
    沈念sama閱讀 46,324評論 2 360
  • 正文 我出身青樓慨代,卻偏偏與公主長得像,于是被迫代替她去往敵國和親啸如。 傳聞我的和親對象是個殘疾皇子侍匙,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,492評論 2 348