Presentation is loading. Please wait.

Presentation is loading. Please wait.

Inserts At Drive Speed Ben Haley Research Director NetQoS.

Similar presentations


Presentation on theme: "Inserts At Drive Speed Ben Haley Research Director NetQoS."— Presentation transcript:

1 Inserts At Drive Speed Ben Haley Research Director NetQoS

2 Overview  Introduction  Our problem  Why use a storage engine?  How to implement a read-only storage engine  Optimization Goal: Provide a new tool that might help solve your issues.

3 Who is NetQoS?  Commercial software vendor  Network Traffic Analysis o Who is on the network? o What applications are they using? o Where is the traffic going? o How is the network running? o Can the users get their work done?  Built on MySQL

4 Who Are Our Customers?

5 Problem Domain  Collected, analyzed and reported on network data  Each collector received >100k records/second  Data was stored for the top IP addresses, applications, ToS for each interface  Data was stored at 15-minute resolution  Kept data for 6 weeks – 13 months

6 What Did Customers Want?  Greater resolution  New ways to look at data  More detail  Use existing hardware

7 Key Observations  Information was in optional or temporary files  Data is unchanging  Large data volumes (100s of GB/day)  Data collectors scattered over the enterprise  Expensive to pull data to a central analysis box  Most analysis focused on short timeframes  Small subset of the data was interesting  Hierarchical data  Flexible formats

8 1 st Approach – Custom Service  C++ service to query data  Create a result set to pull back to reporting console  Advantages o Fast o Leveraged existing software  Issues o Not very flexible o Only access through the console UI

9 2 nd Approach – Traditional DB  Insert data into database  Reporting console queries database  Advantages o Easy o Somewhat flexible o Access from standard DB tools  Issues o Hard to maintain insert/delete rates o Database load operations tax CPU and I/O o Not as flexible as desired

10 3 rd Approach –Storage Engine  Manage data outside the database  Create storage engine to retrieve data into MySQL  Advantages o Fast o Extremely flexible o Only pay CPU and I/O overhead in queries o Access from standard DB tools  Issues o Learning curve o Multiple moving parts

11 What Does This Look Like? MySQL MyISAM InnoDB Archive … Custom Data Files Queries Data Collection and Management

12 Collector Provides  Collect data  Create data files  Age out old data  Indexing  Compression Collector manages data

13 MySQL Provides  Remote Connectivity  SSL Encryption  SQL Support o Queries (select) o Aggregations (group by) o Sorting (order by) o Integration with other data (join operations) o Functions o UDF Support MySQL gives us a SQL stack

14 Storage Engine Provides  Map data into MySQL  Provides optimization information on indexes  Efficient data extraction  Flatten data structure  Decompression Storage engine provides the glue between collector and MySQL

15 How To  Great document for storage engines: http://forge.mysql.com/wiki/MySQL_Internals_Custom _Engine#Writing_a_Custom_Storage_Engine http://forge.mysql.com/wiki/MySQL_Internals_Custom _Engine#Writing_a_Custom_Storage_Engine  I am going to concentrate on divergence

16 Overview of our approach  Singleton data storage  Storage engine maps to the data storage  Table schema is a view into storage  Table name for unique view  Column names map to data elements  Indices may be real or virtual

17 Storage Management  External process creates/removes data  Storage engine indicates the data  During query, storage engine locks data range

18 Simple Create Table Example CREATE TABLE `testtable` ( `Router` int(10) unsigned, `Timestamp` int(10) unsigned, `Srcaddr` int(10) unsigned, `Dstaddr` int(10) unsigned, `Inpkts` int(10) unsigned, `Inbytes` int(10) unsigned, index `routerNDX`(`Router`) ) ENGINE=NFA;

19 Behind the Scenes  MySQL creates a.frm file (defines table)  Storage engine validates the DDL  No data tables are created  No indices are created  Table create/delete is almost free

20 Validation Example – Static Format  Restricted to specific table names  Each table name maps to a subset of data  Fixed set of columns for table name  Fixed index definitions

21 Validation Example – Dynamic Fmt  Table name can be anything  Column names must match known definitions o Physical Columns o Virtual Columns  Indices may be real or artificial o Realized Indices o Virtual Indices

22 Virtual Columns  Represent alternate ways of representing data or derived values  Provides a shortcut instead of using functions  Examples: o Actual columns ipAddress – IP address ipMask – subnet CIDR mask (0-32) o Virtual columns ipMaskBits – bit pattern described by ipMask ipSubnet – ipAddress & ipMaskBits

23 Optimizing Columns  Our storage engine supports many columns  Storage engines have to return the entire row defined in the table  MySQL uses only columns referenced in select statement  Table acts as view, so make view narrower

24 Index Optimization Options  MySQL parser o Define indices in schema o Provide guidance to MySQL  Roll your own o Limits table interoperability o Best left to the experts

25 Real Index  Expose the internal file format  Example: o Data organized by timestamp, srcAddr o Query: select router, count(*) where srcAddr=inet_aton(10.1.2.3) and timestamp > ‘2009-04-20’; o Add index timestamp o Storage engine walks data by timestamp

26 Real Index #2  Example: o Data organized by timestamp, srcAddr o Query: select router, count(*) where srcAddr=inet_aton(10.1.2.3) and timestamp > ‘2009-04-20’; o Add index timestamp, srcAddr o Storage engine still walks data by timestamp Database is unable to leverage the full index!

27 Virtual Index  Not completely supported, but good enough  Example: o Data organized by timestamp, srcAddr o Query: select router, count(*) where srcAddr=inet_aton(10.1.2.3) and timestamp > ‘2009-04-20’; o Add index srcAddr, timestamp o Storage engine still walks data by timestamp, but filters on srcAddr o Would fail on range scan of srcAddr

28 Virtual Index #2  Example: o Data organized by timestamp, srcAddr o Query: select router, count(*) where srcAddr=inet_aton(10.1.2.3) and timestamp > ‘2009-04-20’; o Add index timestamp o Add index srcAddr o Storage engine still walks data by timestamp, but filters on srcAddr

29 Index Optimization  Leverage storage format  Add virtual index support where helpful  Don’t overanalyze o Be accurate if fast o Estimates are fine o Heuristics are often great o Be careful about mixing approaches

30 Index Heuristics Example  Start with large estimate for number of rows returned  Adjust estimate based on expected value of column constraints o Time – great – files are organized by time o srcAddr Good for equality Terrible for range o Bytes – poor

31 Typical Query Pattern  Create temp table o Specify only necessary columns o Specify optimal indices for where clause and engine  Select …  Drop table

32 KISS  Only support what you have to: o Do you need multiple datasets? o Do you need flexible table definitions? o Do you need insert/delete/alter support? o How will data be accessed? It’s OK to limit functionality to just solving your problem

33 Conclusion  Why we used a storage engine  Storage engine pattern  Optimization o Columns o Indices o Virtual indices

34 Application  Log analysis  Transaction records  ETL alternative  Custom database

35 Questions


Download ppt "Inserts At Drive Speed Ben Haley Research Director NetQoS."

Similar presentations


Ads by Google