 Thank you for choosing this talk. My name is Satoshi Nagayasu from Japan, and I'm from Apprentices, and also the Japanese Postgres users group. This talk is on Postgres 9.4 and beyond. Postgres is one of the largest and complex software, so I would like to provide some quick overview about Postgres 9.4 and latest development process. Also, this slide is supposed to be uploaded on Slideshare, so if you're interested in, please keep my email account. My name is Satoshi Nagayasu. I'm a database consultant here, also working as a DBA on Data Steward in Japan. I started traveling Asia last year. I visited Hong Kong and Shenzhen in Beijing, of course, Singapore in the last one year. So I'm still continuing to look for some opportunities to visit other countries. My company is Apprentices. I'm a top founder. We are providing consulting services on database and platform technologies, which means some kind of integrating cloud and open source technology or something like that. In Postgres work, I used to work for PGSAP index. I can inspect or slow down. These tools are designed to help DBA to understand Postgres internals and how it works. Also, I used to work for Postgres Forest on Postgres 8c. These are kind of cluster technology for Postgres. Of course, I'm one of the Japanese deals group. Here is what I'm doing on Postgres. I'm working on Postgres 2c recently. This is a brand new Postgres TV tool, but it's still under development. So if you're interested in staying on Apprentices, go Pt. Pt means Postgres 2c. So you can find some subscription form to stay informed. Also, I'm working on Postgres add-on for Kinemos. I guess many of you have not heard about Kinemos, but Kinemos is one of the open source system management software in Japan. It allows us to do some monitoring about job management. So if you're interested in Kinemos, please do it. This is a screenshot from Postgres. I'm working on creating some solutions to help DBA to understand Postgres and internal work. Also, I started hacking hardware recently. I like the Raspberry Pi 2 diesel. Diesel is a PGA board. What you guys have heard about FPGA? Oh, wait. FPGA is programmable chips. So we can design and build their own circuit within chips. So I'm very interested in this. Also, I'm working on DBA. So I'm combining DBA and Raspberry Pi to build some IoT system. Just for fun. First of all, I have an instance to Manus Haranda, a quadruple member of Postgres Development Team on Mac, Nicaragua, Haki, French, Nero, Japan. Toshihara and Noryu Shishio are Japanese Postgres users, advanced Postgres users. This presentation is based on the built top of these materials or the elements or blocks. So I have many instances in there. This is Toshihara Haranda. We started at 9.4 over here. I will explain the noise in FPGA analytics for the reputation and organization infrastructure beyond 9.4. Okay. It's 9.4 here. 9.4 is the latest major release of Postgres. The first official release was in December. The latest stable release. Stable release means some bug-fixed version. Now 9.4.1 was released on February. So if you are interested in 9.4, then let's try 9.4.1. There are some statistics in 9.4 compared to 9.3.5. 9.3 is previous major release of Postgres. Over 3,000 files changed and 62,000 insertions, 15,000 deletions. So there are many, many huge changes in Postgres nowadays. There is not all Postgres. You can find any changes in Postgres on the release mode. So if you are interested in some changes in this presentation, you can find details on the release mode. There are many, many kind of changes in Postgres in 9.4. So we need to do some categories for enhancement. There are several kinds of enhancement, but I prefer these categories. No scale, analytics, replication, administration, and base infrastructure. No scale. Everyone uses JSON nowadays. So Postgres supports JSON. There are some comparisons between JSON and JSONB. JSON is a data type in 9.3, and JSONB is available from 9.4. So there are some differences between JSON and JSONB. JSONB stands for binary JSON, different from JSON. JSON is a text representation in a Postgres storage system. So binary JSON, JSONB is faster for searching. With JSONB, there are some differences compared to JSON originalization. There are no duplicate keys as last keys always win. Key order results, JSONB can take advantage of GIMP index. I will show later. GIMP index, JSONB can be used with BigQuery. JSONB can be used with GIMP index. GIMP index allows us to reduce index size, as you can see. So if you use JSONB with GIMP index, reduce IO Post or reduce extra IO Post. So if you're interested in using JSON in Postgres, please try JSONB on GIMP. Any question? On the top it says JSON plus B3, but on the graph it says JSONB plus B3. Ah, sorry. This is JSON, JSON plus B3. This is JSONB plus GIMP. Thank you. Next thing is analytics. Postgres has very large type, many, many aggregation function. So in 9.4, filter can be used with aggregation function. So filter replace case when statement in SQL statement. So now we can write an analytics query. More analytics queries is a way. Also there are many, many aggregation function newly introduced in 9.4. So if you are interested in analytics or big data project, with open source, Postgres is good to start. And also many, many other example aggregation function. What are you saying aggregates? Post-common value in the subset. If you don't have this function, you need to write this long SQL statement. But if you have more function, we can write in one line, single line. Also we have run function in 9.4. So it is similar to previous function. Other good feature in 9.4 is materialized view. Especially the component. Refresh materialized view component is introduced in 9.4. So which allows us to refresh materialized view concurrently, which means in background, without exclusive lock. So which includes usability and availability of materialized view. Next topic is replication and beyond. So it means logical decoding. Logical means the local representation for replication stream, which means we can reproduce in certain update or delete operations from replication stream, which is binary stream from replication master to replication slave. So which is, it is like binary log in my scale, right? So I think so. So it can be replaced on, replaced on different version and different platform. So it is very useful for extending replication system or backup system. PgReceiveLoad.com shows how it works. I will show it later. Therefore, replication can be more flexible in terms of BDR, bidirectional replication. What's on me? This is really, really flawed. This is a replication software, which has long, long history. And continuous startup as well. So I'm very interested in this Logical Decoding feature. This is example of PgReceiveLoad.com. So this example shows there are four insert statements from in replication stream from master node. And also we have a five-day statement from replication master. So we can use this statement to recreate other nodes or other servers. Next one is administration auto-assistence. In 9.4, we can now change system configuration or postage configuration without editing configuration file with Emacs or VDI. We can now change configuration using the scale command auto-assistence system set or reset. So now we can use this to... This feature is built for DBA or administration term. Next one is infrastructure for finalization. In 9.3, background worker must start at postmaster startup. Background worker means some sub-process or post-res to do something in background. But in 9.3, those background workers must start at postmaster startup, which means post-gres service startup. After 9.4, they can be launched on demand basis. So if you need some background process, you can launch as you like, as you need. From parallelization point of view, it allows to launch multiple background processes to execute child queries in parallel. So this is one of the fundamental features toward parallel queries. Next one is dynamic shared memory. The shared memory can be now allocated on demand basis as well. From parallelization point of view, it allows to share data and communicate with several background processes. Combining a dynamic background process and a dynamic shared memory into post-gres, we will be able to have some parallel queries features in the near future. This is my tiny favorite, a PLBJ-scale sub-trace. Nowadays, many developers don't like writing procedures. This is my third function, but I like writing PLBJ-scale because this is a good way to run logic behind database or inside database without communication costs or network costs. So I often write PLBJ-scale function and PLBJ-scale sub-trace help me to debug PLBJ-scale functions. So if you are interested in writing those functions, please try it. So in 9.4, there are many other enhancements. So if you are interested in please try SAP, 9.4 is already a stable version. So you can try it. Next is beyond 9.4. One of the items I like in 9.5 is green index. Green is stand for block range index, which is called summary data instead of raw data. So each bit reduce index size tremendously and also reduce creation and maintenance costs. As you can see, index creation time is 10 times faster than deep index. And also index size is getting smaller. You can see how it size, but very small. But it needs extra top of edge to get the next, the exact record. So selecting record have some extra cost. In this example, we have executed in 4 million seconds, 4 million check, but green has 16. So this is new index size in Postgres. If you have large amount of data or large volume of table, you can take advantage of this index. I looked at the commitFest page. CommitFest is a process to review fix, to review fix and commit the submitted patches in Postgres community. So there are many, many kind of patches. I like those items in the near future. There are priority check patch is submitted, insert on conflict, update, ignore statement also submitted. This is also known as maybe absurd, absurd statement. So we can use this to do similar operation. And also there is fine level incremental backup. So we have very, very big huge volume of data nowadays. So if this patch is applied in near future, hopefully 9.5 we can make from it. But these both items are in progress, so we cannot guarantee this is coming with 9.5. But very, very interesting feature is submitted in Postgres community. So it's safe to say Postgres is one of the most new local friendly RDBMS in the world. I don't say the most, but one of the most RDBMS in the world. And as I explained, analytics features and performance are getting improved. So if you are interested in analytics project or business project with open source, Postgres is good tool to start with. In Postgres developer community, people are focusing on parallel queries or parallel processing. So things are going to parallel. We will be able to get some parallel queries in the near future, maybe 9.6 or 7. So keep looking, Postgres, try it. If you are interested in, please try some Git code or latest development code and submit the patch. Yes, there are resources to catch up with Postgres latest information. Of course, Postgres form is the official website for Postgres community. And also client Postgres is global in the Postgres world. So if you are interested in Postgres latest information, you can catch up with here. And PgCon is the annual Postgres conference in Ottawa in Canada. So if you are interested in Postgres community, it's good opportunity to go. So that's all. Any questions about Postgres? Any updates in the various languages? PL languages, PL, Perl, PL, Python, PL, all of those. Any updates to the changes that we talked about? Updates in PL languages? Yes. Well, once we are in the PL languages... PL, Perl is part of PgCon, isn't it? PL, Perl, yes? Those languages work like an extension. In fact, PgPL is also an extension. I agree. It just comes... Oh, okay. So... Sorry, I don't... So if you are interested in, please check the release notes. Please send tweets. Thank you. Yeah. Honestly, Postgres is a very, very big project. So covering all of them is very difficult for one person. So it's a really good reason to share something with community. Sorry, I'm not from the database space, but I have a question regarding Postgres and the comparison of it with Oracle. The application between Postgres and Oracle, how do you see in the coming next year or the coming five years, how do you see competition between Oracle databases and Postgres? Well, yeah, it's interesting, but compared to Oracle, well, I think many business people or enterprise people are interested in comparing Postgres and Oracle. But I think the basic feature is very similar between Postgres and Oracle. But Oracle has many good life ecosystems, including educating engineers, start-up-arty tools, or something like that. So it's preferable for Postgres. So using Postgres is good for well-known experienced developer or experienced Postgres users. It's good enough, but many enterprise want more education, service, or start-up-arty tools, or partitioning, or power queries, or maybe certification, hardware certification or something like that. A bit different word, I think, but Postgres is getting better and better I think not only Postgres, open source product is getting better and better. So open source product can compete with proprietary in the future or soon. Can I just add one thing? I don't think Oracle has support for the streaming API, which Postgres has, for large companies. That's one of the biggest differences I have also. I could be wrong, maybe Oracle has it now, but from the previous, I think that was one of the biggest differences that I used. One point different from Oracle is Postgres is focusing on developer friendly. So supporting JSON, or KeyVary Store, or PL languages. So if you're a web developer or application developer, Postgres is very useful to deploy or developing your application. I think. I'll just add one thing in general about any enterprise software, like proprietary software and an open source project. If I'm a developer who is writing a code for an open source project, I'm going to write something which is bloody good. Even if I'm writing a code to do 2 plus 2 or 5 plus 5, I would write something which is bloody good because thousands of people are going to read that code. And if I have a flaw in that code, it is going to be exposed. So I want it to do good. Whereas if I'm writing a code for an enterprise software, I'm just writing code to meet some deadlines. And here I'm writing out of my interest. I want it to be bloody good to run in the best possible way. So that's a huge difference. It's actually okay. Yeah, we'll just replace it actually. Can you replace it stored with JSONB? I think the new data type in Postgres is a kind of trade-off thing. So JSONB is faster for searching, but if we update JSON, the JSON is faster for update. So I think it's stored as well. So there are many, many kind of trade-off between technologies. So choosing the right data type or right technology is very important for development. Providing those information is very important for Postgres community. So I think all technologies will last. Okay, thank you.