High Level Recommendations For Multi-Tier Application

Hello:
I have been reviewing Windows Azure documentation and I'm still somewhat confused/unsure regarding which configuration and set of services is best for my organization.  I will start off by giving a high level description of the what the environment
should be.
A) 2 "Front End" IIS Instances, Load Balanced running an MVC 4.0/.Net 4.5 Web Application
B) A "dedicated" SQL SERVER 2008 R2 server with medium-high resources (ample RAM and processing power)
C) An application server which hosts a Windows Service.  This service will require access to the SQL Server listed in B. In addition the IIS "Front Ends" listed in A should have access to a "shared" folder or directory where files
can be dropped and processed by this windows service.
I have looked at Azure Web Site, Azure Virtual Machines and Cloud Services and I'm not sure what is best for our situation.  If we went with Azure Web Sites, do we need TWO virtual machines, or a single virtual which can "scale out" up to
6 instances.  We would get a Standard Web Site, and the documentation I see says it can scale out to 6 instances. I'm somewhat confused regarding the difference between a "Virtual Machine" and an "Instance".  In addition, does
Azure Web Sites come with built in load balancing between instances, virtual machines? both?  Or is it better to go with Azure Virtual Machines and host the IIS Front end there?  I'm just looking for a brief description/advise as to which would be
better.
Regarding the SQL Server database, is there a benefit to using Azure SQL Database? Or should we go with a virtual machine with SQL Server installed as the primary template?  We have an existing SQL Server database and initially we would like to move
up our existing schema to the Cloud.  We are looking for decent processing power for the database and RAM.
Finally the "application" tier, which requires a Windows Service. Is an Azure Virtual Machine the best route to take? If so, can an Azure Web Site (given that is the best setup for our needs) write to a shared folder/drive on a secondary virtual
machine.  Basically there will be json instruction files dropped  into a folder which the application tier will pick up, de-serialize and do backend processing.
As a final question, if we also wanted to use SSRS, is there updated/affordable pricing and hosting options for this as well?
I appreciate any feedback or advice.  We are definitely leaning towards Azure and I am trying to wrap my head around what our best configuration and service selection should be.
Thanks in advance

Hi,
A) 2 "Front End" IIS Instances, Load Balanced running an MVC 4.0/.Net 4.5 Web Application
B) A "dedicated" SQL SERVER 2008 R2 server with medium-high resources (ample RAM and processing power)
C) An application server which hosts a Windows Service.  This service will require access to the SQL Server listed in B. In addition the IIS "Front Ends" listed in A should have access to a "shared" folder or directory where files can be dropped and
processed by this windows service.
Base on my experience and your requirement, you could try to use this solution:
1.Two cloud service to host your "front end" web application. Considering to Load Balanced, You could use traffic manager to set Load Balancing Settings.
2. About sql server or ssrs, you have two choice:>1,create a sql server vm  >2, use sql azure and azure ssrs
I guess all of them could meet your requirement.
3. About your C requirement, which type application is? If it is website, You could host it on azure website or cloud service.
And if you want to manage the file by your code, I think you could save your file into azure blob storage. You could add,delete file using rest API(http://msdn.microsoft.com/en-us/library/windowsazure/dd135733.aspx
) or code(http://www.windowsazure.com/en-us/documentation/articles/storage-dotnet-how-to-use-blobs-20/ ). And the Blob storage could be as a share file
folder.
And for accurately, about the billing question , you could ask azure billing support for more details.
try this:http://www.windowsazure.com/en-us/support/contact/
Hope it helps.
Regards,
We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
Click
HERE to participate the survey.

Similar Messages

  • High level estimation for datasource enhancement

    hi,
    I have been assigned in supporting project recenlttly.  Now we are going to data source enhancement(we need one more field i.e juridiction code for tax calculation, Datasource is 0FI_GL_4), we need to high level esstimation for  the procedure and time duration for each process (Devolepment  to Prod).
    Can any one help me in this concern......
    Thanks,
    Shaliny

    Shaliny,
    If the field is ready available to add with no hicups, everything can be done in 3 days.
    Well, if you need to go for an customer exit during enhancement, you need at least 15 days which includes testing also.
    It generally depends on how complex it is expected to be. But have a buffer of atleast 2 days after completion from your side.

  • High Availibity solution for Sharepoint Service Applications

    I have a scenario with the three nodes SP1 , SP2 and DR-SP with server 2012 standard, each running SharePoint 2013 enterprise, All of three nodes are members of single SharePoint farm that spans two data centers.Primary Data Center have two nodes SP1 , SP2
    and DR data center have one node DR-SP of share point 2013.
    For MS SQL i have three nodes DB1, DB2 and DR-DB3 with server 2012 standard, each running an instance of SQL Server 2012 enterprise, participate in a
    single Windows Server Fail-over Cluster (WSFC) that spans two data centers.Primary Data Center have two nodes DB1 ,DB2 and DR data center have one node DR-DB of SQL Server 2012 enterprise.
    Currently i have configured these service applications on  primary data center nodes SP1 .How i can enable high availability for different service Applications  of SharePoint 2013  like Profile service application, search service application,
    managed meta data application in case of primary data center outage.

    stretched farms are not supported unless the WAN provides sub-millisecond ping times.
    Scott Brickey
    MCTS, MCPD, MCITP
    www.sbrickey.com
    Strategic Data Systems - for all your SharePoint needs

  • High-level design for business process scenario

    Hi all, I have a business process scenario for which CRM and ECC has to be used. The scenario is like this:
    There are 2 subsidiaries of a company - A and B, which are into trading of materials.
    Between A and customer there is sales agreement. Between B and vendor there is purchase agreement.
    Whenever customer requires materials, it will send request to A. So, A creates a sales order. B in turn sends a request to vendor for which a purchase order is created. The vendor ships the goods directly to customer. The vendor bills B for the purchase order. B adds some margin and then it goes for inter-company settlement with A. A bills the customer for the materials. In this entire process, both A and B earns profit through margins.
    It has to be noted that CRM has to be used as contact point with customer.
    Now I have the following questions:
    1. How would the high-level business design be like?
    2. How would be the document flow?
    3. How can inter-company settlement and billing be done?
    All constructive comments and feedback will be rewarded.

    Hi Animesh,
    The thumb rule to CRM process designing is stick to customer process...
    Thus u jst hav to stick to process design of company A and its interaction with Customer.
    We are not concerned with how the material will be purchansed,but we are concerned with how we will be delivering it to end customer.
    Thus, once customer place an order to company A, our process would suggest a sales order for the customer with one of the partner function "Vendor" as B with the required material. Now later process in R/3 would convert this sales order with customer as soldtoparty to purchase order with vendor as B and one of the secondary partner soldto party as our original customer.
    And billing would happen the way it is... ie. based on sales order.. thus u will have some inflow.. again u will be raising a purchase requisition to company B thus that would be your outflow..
    That was a really good scenario to think about.
    Best Regards,
    Pratik Patel
    <b>
    Reward with Points!</b>

  • Book Recommendation for Building Swing Applications

    I'm looking for recommendations on books for building swing applications from the ground up.
    I'm not a strong GUI developer. 95% of my experience has been strictly on back end development in many other languages. What little GUI experience I have has been with C++ (years ago) and most recently with HTML.
    I know what I want to develop, and even have the GUI design for my application drawn out. I just need a good book that can walk me through developing the interface in Java.
    I already have several books on Java. But, I find them somewhat limiting because they don't help me build the app from the ground up.
    Yes, I've tried the online book on the Sun site, "The Jfc Swing Tutorial: Guide to Constructing Gui's".
    Please offer some recommendations and reasons on why you like the book.
    Thanks.

    A few comments to that ....
    the first thing is understanding the LayoutManagers, that are available.
    I will give you a short guideline where they are usefull:
    FlowLayout - usefull for JLabel-JTextField combinations or several JButtons
    BorderLayout - usefull for the structure of basic containers
    CardLayout - usefull for every area of the screen, where you want to appear different panels
    GridLayout - usefull for a group of same-sized components laid out in a grid
    GridBagLayout - usefull for a group of components, that have different sizes, very flexible
    JTabbedPane - a special container, that is similar to CardLayout but with visible tabs to switch panels
    Normally you can say "I want that group at the bottom of the frame, that other group at its left side, that toolbar at its top" - if you can say so - that shouts for BorderLayout. If you can say "in this area I want to use several panels" that means CardLayout or a JTabbedPane.
    You see, if you have an idea, what the LayoutManagers do, you know exactly which area needs what Layout - so you have a guideline, which LayoutManager to use in that panel.
    To make an example:
    You want 3 buttons centered at the bottom of a frame - this 3 buttoms should be of that size, that is needed by the button texts. So, what to do:
    1. create a JPanel with FlowLayout
    2. create the buttons and add it to that JPanel
    3. create another JPanel with BorderLayout
    4. add that first JPanel to the second JPanel at BorderLayout.CENTER
    5. add this Panel to the ContentPane of the frame at BorderLayout.SOUTH
    that is a simple panel in panel construct - placing 3 buttons centered at the bottom of the frame. You have to play with that different LayoutManagers a little bit - the way you stick one panel in another changes the look of the GUI - if you know, how it changes (by playing with the examples of the tutorial), you will have that "from the ground"-experience, you are looking for - believe me.
    greetings Marsian

  • SharePoint 2013: Edition requirement for multi tier setup.

    Dear all,
    I am planning to setup a high availability 3-tier SharePoint farm.
    My question is which edition of SharePoint 2013 should i purchase? Standard version or enterprise version?
    My requirement is just a simple document management system.
    Any help/guides would be much appreciated.
    Many thanks 
    Regards
    vinay

    You can use any edition for high availability on the SharePoint side: Foundation, Standard, or Enterprise.
    SQL Server is a different story, you'll want to look at the options for high availability available with each edition of SQL Server.
    http://msdn.microsoft.com/en-us/library/cc645993.aspx#High_availability
    Trevor Seward
    Follow or contact me at...
    &nbsp&nbsp
    This post is my own opinion and does not necessarily reflect the opinion or view of Microsoft, its employees, or other MVPs.

  • Recommends for seamless texture applications or plug-ins

    I am on Mac, both Tiger and Leopard and I am in CS3.
    I am a professional image editor and 3D designer. I take a lot of high resolution images and then spend hours manipulating them into seamless textures. I understand that there are still going to be many situations where that will be the reality, simply because of the complexity of the surface and its details.
    Every once in a while I like to go out and see if there is a better way. In other words, bust my habits.
    Does anyone have any suggestions on plug-ins for Photoshop or stand alone applications that offer this ability? My price range is wide, I purchase based on value, from share ware to gold plated ware.
    Thanks everyone who answers.

    I won my copy in an online art contest and learned it enough to gain some competence. It really isn't all that complex once you get past the shroud of mysticality in which the UI is wrapped.
    There is another venerable application (read that as long in the tooth) which still runs just fine on my Mac Pro with Leopard. TextureMagic does have the capacity to create image based textures, has a Photoshop GUI and the manual is comprehensible. There is a demo as well.
    http://www.artissoftware.com/texturemagic/tm-osx.shtml

  • Global-Cache-Manager for Multi-Environment Applications

    Hi,
    Within our server implementation we provide a "multi-project" environment. Each project is fully isolated from the rest of the server e.g. in terms of file-system usage, backup and other ressources. As one might expect the way to go is using a single VM with multiple BDB environments.
    Obviously each JE-Environment uses its own cache. Within a our environment with dynamic numbers of active projects this causes a problem because the optimal cache configuration within a given memory frame depends on the JE-Environments in use BUT there is no way to define a global JE cache for ALL JE-Environments.
    Our "plan of attack" is to implement a Global-Cache-Manager to dynamicly configure the cache sizes of all active BDB environments depending on the given global cache size.
    Like Federico proposed the starting point for determining the optimal cache setting at load time will be a modification to the DbCacheSize utility so that the return value can be picked up easily, rather than printed to stdout. After that the EnvironmentMutableConfig.setCacheSize will be used to set the cache size. If there is enough Cache-RAM available we could even set a larger cache but I do not know if that really makes sense.
    If Cache-Memory is getting tight loading another BDB environment means decreasing cache sizes for the already loaded environments. This is also done via EnvironmentMutableConfig.setCacheSize. Are there any timing conditions one should obey before assuming the memory is really available? To determine if there are any BDB environments that do not use their cache one could query each cache utilization using EnvironmentStats.getCacheDataBytes() and getCacheTotalBytes().
    Are there any comments to this plan? Is there perhaps a better solution or even an implementation?
    Do you think a global cache manager is something worth back-donating?
    Related Postings: Multiple envs in one process?
    Stefan Walgenbach

    Here is the updated DbCacheSize.java to allow calling it with an API.
    Charles Lamb
    * See the file LICENSE for redistribution information.
    * Copyright (c) 2005-2006
    *      Oracle Corporation.  All rights reserved.
    * $Id: DbCacheSize.java,v 1.8 2006/09/12 19:16:59 cwl Exp $
    package com.sleepycat.je.util;
    import java.io.File;
    import java.io.PrintStream;
    import java.math.BigInteger;
    import java.text.NumberFormat;
    import java.util.Random;
    import com.sleepycat.je.Database;
    import com.sleepycat.je.DatabaseConfig;
    import com.sleepycat.je.DatabaseEntry;
    import com.sleepycat.je.DatabaseException;
    import com.sleepycat.je.Environment;
    import com.sleepycat.je.EnvironmentConfig;
    import com.sleepycat.je.EnvironmentStats;
    import com.sleepycat.je.OperationStatus;
    import com.sleepycat.je.dbi.MemoryBudget;
    import com.sleepycat.je.utilint.CmdUtil;
    * Estimating JE in-memory sizes as a function of key and data size is not
    * straightforward for two reasons. There is some fixed overhead for each btree
    * internal node, so tree fanout and degree of node sparseness impacts memory
    * consumption. In addition, JE compresses some of the internal nodes where
    * possible, but compression depends on on-disk layouts.
    * DbCacheSize is an aid for estimating cache sizes. To get an estimate of the
    * in-memory footprint for a given database, specify the number of records and
    * record characteristics and DbCacheSize will return a minimum and maximum
    * estimate of the cache size required for holding the database in memory.
    * If the user specifies the record's data size, the utility will return both
    * values for holding just the internal nodes of the btree, and for holding the
    * entire database in cache.
    * Note that "cache size" is a percentage more than "btree size", to cover
    * general environment resources like log buffers. Each invocation of the
    * utility returns an estimate for a single database in an environment.  For an
    * environment with multiple databases, run the utility for each database, add
    * up the btree sizes, and then add 10 percent.
    * Note that the utility does not yet cover duplicate records and the API is
    * subject to change release to release.
    * The only required parameters are the number of records and key size.
    * Data size, non-tree cache overhead, btree fanout, and other parameters
    * can also be provided. For example:
    * $ java DbCacheSize -records 554719 -key 16 -data 100
    * Inputs: records=554719 keySize=16 dataSize=100 nodeMax=128 density=80%
    * overhead=10%
    *    Cache Size      Btree Size  Description
    *    30,547,440      27,492,696  Minimum, internal nodes only
    *    41,460,720      37,314,648  Maximum, internal nodes only
    *   114,371,644     102,934,480  Minimum, internal nodes and leaf nodes
    *   125,284,924     112,756,432  Maximum, internal nodes and leaf nodes
    * Btree levels: 3
    * This says that the minimum cache size to hold only the internal nodes of the
    * btree in cache is approximately 30MB. The maximum size to hold the entire
    * database in cache, both internal nodes and datarecords, is 125Mb.
    public class DbCacheSize {
        private static final NumberFormat INT_FORMAT =
            NumberFormat.getIntegerInstance();
        private static final String HEADER =
            "    Cache Size      Btree Size  Description\n" +
        //   12345678901234  12345678901234
        //                 12
        private static final int COLUMN_WIDTH = 14;
        private static final int COLUMN_SEPARATOR = 2;
        private long records;
        private int keySize;
        private int dataSize;
        private int nodeMax;
        private int density;
        private long overhead;
        private long minInBtreeSize;
        private long maxInBtreeSize;
        private long minInCacheSize;
        private long maxInCacheSize;
        private long maxInBtreeSizeWithData;
        private long maxInCacheSizeWithData;
        private long minInBtreeSizeWithData;
        private long minInCacheSizeWithData;
        private int nLevels = 1;
        public DbCacheSize (long records,
                   int keySize,
                   int dataSize,
                   int nodeMax,
                   int density,
                   long overhead) {
         this.records = records;
         this.keySize = keySize;
         this.dataSize = dataSize;
         this.nodeMax = nodeMax;
         this.density = density;
         this.overhead = overhead;
        public long getMinCacheSizeInternalNodesOnly() {
         return minInCacheSize;
        public long getMaxCacheSizeInternalNodesOnly() {
         return maxInCacheSize;
        public long getMinBtreeSizeInternalNodesOnly() {
         return minInBtreeSize;
        public long getMaxBtreeSizeInternalNodesOnly() {
         return maxInBtreeSize;
        public long getMinCacheSizeWithData() {
         return minInCacheSizeWithData;
        public long getMaxCacheSizeWithData() {
         return maxInCacheSizeWithData;
        public long getMinBtreeSizeWithData() {
         return minInBtreeSizeWithData;
        public long getMaxBtreeSizeWithData() {
         return maxInBtreeSizeWithData;
        public int getNLevels() {
         return nLevels;
        public static void main(String[] args) {
            try {
                long records = 0;
                int keySize = 0;
                int dataSize = 0;
                int nodeMax = 128;
                int density = 80;
                long overhead = 0;
                File measureDir = null;
                boolean measureRandom = false;
                for (int i = 0; i < args.length; i += 1) {
                    String name = args;
    String val = null;
    if (i < args.length - 1 && !args[i + 1].startsWith("-")) {
    i += 1;
    val = args[i];
    if (name.equals("-records")) {
    if (val == null) {
    usage("No value after -records");
    try {
    records = Long.parseLong(val);
    } catch (NumberFormatException e) {
    usage(val + " is not a number");
    if (records <= 0) {
    usage(val + " is not a positive integer");
    } else if (name.equals("-key")) {
    if (val == null) {
    usage("No value after -key");
    try {
    keySize = Integer.parseInt(val);
    } catch (NumberFormatException e) {
    usage(val + " is not a number");
    if (keySize <= 0) {
    usage(val + " is not a positive integer");
    } else if (name.equals("-data")) {
    if (val == null) {
    usage("No value after -data");
    try {
    dataSize = Integer.parseInt(val);
    } catch (NumberFormatException e) {
    usage(val + " is not a number");
    if (dataSize <= 0) {
    usage(val + " is not a positive integer");
    } else if (name.equals("-nodemax")) {
    if (val == null) {
    usage("No value after -nodemax");
    try {
    nodeMax = Integer.parseInt(val);
    } catch (NumberFormatException e) {
    usage(val + " is not a number");
    if (nodeMax <= 0) {
    usage(val + " is not a positive integer");
    } else if (name.equals("-density")) {
    if (val == null) {
    usage("No value after -density");
    try {
    density = Integer.parseInt(val);
    } catch (NumberFormatException e) {
    usage(val + " is not a number");
    if (density < 1 || density > 100) {
    usage(val + " is not betwen 1 and 100");
    } else if (name.equals("-overhead")) {
    if (val == null) {
    usage("No value after -overhead");
    try {
    overhead = Long.parseLong(val);
    } catch (NumberFormatException e) {
    usage(val + " is not a number");
    if (overhead < 0) {
    usage(val + " is not a non-negative integer");
    } else if (name.equals("-measure")) {
    if (val == null) {
    usage("No value after -measure");
    measureDir = new File(val);
    } else if (name.equals("-measurerandom")) {
    measureRandom = true;
    } else {
    usage("Unknown arg: " + name);
    if (records == 0) {
    usage("-records not specified");
    if (keySize == 0) {
    usage("-key not specified");
         DbCacheSize dbCacheSize = new DbCacheSize
              (records, keySize, dataSize, nodeMax, density, overhead);
         dbCacheSize.caclulateCacheSizes();
         dbCacheSize.printCacheSizes(System.out);
    if (measureDir != null) {
    measure(System.out, measureDir, records, keySize, dataSize,
    nodeMax, measureRandom);
    } catch (Throwable e) {
    e.printStackTrace(System.out);
    private static void usage(String msg) {
    if (msg != null) {
    System.out.println(msg);
    System.out.println
    ("usage:" +
    "\njava " + CmdUtil.getJavaCommand(DbCacheSize.class) +
    "\n -records <count>" +
    "\n # Total records (key/data pairs); required" +
    "\n -key <bytes> " +
    "\n # Average key bytes per record; required" +
    "\n [-data <bytes>]" +
    "\n # Average data bytes per record; if omitted no leaf" +
    "\n # node sizes are included in the output" +
    "\n [-nodemax <entries>]" +
    "\n # Number of entries per Btree node; default: 128" +
    "\n [-density <percentage>]" +
    "\n # Percentage of node entries occupied; default: 80" +
    "\n [-overhead <bytes>]" +
    "\n # Overhead of non-Btree objects (log buffers, locks," +
    "\n # etc); default: 10% of total cache size" +
    "\n [-measure <environmentHomeDirectory>]" +
    "\n # An empty directory used to write a database to find" +
    "\n # the actual cache size; default: do not measure" +
    "\n [-measurerandom" +
    "\n # With -measure insert randomly generated keys;" +
    "\n # default: insert sequential keys");
    System.exit(2);
    private void caclulateCacheSizes() {
    int nodeAvg = (nodeMax * density) / 100;
    long nBinEntries = (records * nodeMax) / nodeAvg;
    long nBinNodes = (nBinEntries + nodeMax - 1) / nodeMax;
    long nInNodes = 0;
         long lnSize = 0;
    for (long n = nBinNodes; n > 0; n /= nodeMax) {
    nInNodes += n;
    nLevels += 1;
    minInBtreeSize = nInNodes *
         calcInSize(nodeMax, nodeAvg, keySize, true);
    maxInBtreeSize = nInNodes *
         calcInSize(nodeMax, nodeAvg, keySize, false);
         minInCacheSize = calculateOverhead(minInBtreeSize, overhead);
         maxInCacheSize = calculateOverhead(maxInBtreeSize, overhead);
    if (dataSize > 0) {
    lnSize = records * calcLnSize(dataSize);
         maxInBtreeSizeWithData = maxInBtreeSize + lnSize;
         maxInCacheSizeWithData = calculateOverhead(maxInBtreeSizeWithData,
                                  overhead);
         minInBtreeSizeWithData = minInBtreeSize + lnSize;
         minInCacheSizeWithData = calculateOverhead(minInBtreeSizeWithData,
                                  overhead);
    private void printCacheSizes(PrintStream out) {
    out.println("Inputs:" +
    " records=" + records +
    " keySize=" + keySize +
    " dataSize=" + dataSize +
    " nodeMax=" + nodeMax +
    " density=" + density + '%' +
    " overhead=" + ((overhead > 0) ? overhead : 10) + "%");
    out.println();
    out.println(HEADER);
    out.println(line(minInBtreeSize, minInCacheSize,
                   "Minimum, internal nodes only"));
    out.println(line(maxInBtreeSize, maxInCacheSize,
                   "Maximum, internal nodes only"));
    if (dataSize > 0) {
    out.println(line(minInBtreeSizeWithData,
                   minInCacheSizeWithData,
                   "Minimum, internal nodes and leaf nodes"));
    out.println(line(maxInBtreeSizeWithData,
                   maxInCacheSizeWithData,
    "Maximum, internal nodes and leaf nodes"));
    } else {
    out.println("\nTo get leaf node sizing specify -data");
    out.println("\nBtree levels: " + nLevels);
    private int calcInSize(int nodeMax,
                   int nodeAvg,
                   int keySize,
                   boolean lsnCompression) {
    /* Fixed overhead */
    int size = MemoryBudget.IN_FIXED_OVERHEAD;
    /* Byte state array plus keys and nodes arrays */
    size += MemoryBudget.byteArraySize(nodeMax) +
    (nodeMax * (2 * MemoryBudget.ARRAY_ITEM_OVERHEAD));
    /* LSN array */
         if (lsnCompression) {
         size += MemoryBudget.byteArraySize(nodeMax * 2);
         } else {
         size += MemoryBudget.BYTE_ARRAY_OVERHEAD +
    (nodeMax * MemoryBudget.LONG_OVERHEAD);
    /* Keys for populated entries plus the identifier key */
    size += (nodeAvg + 1) * MemoryBudget.byteArraySize(keySize);
    return size;
    private int calcLnSize(int dataSize) {
    return MemoryBudget.LN_OVERHEAD +
    MemoryBudget.byteArraySize(dataSize);
    private long calculateOverhead(long btreeSize, long overhead) {
    long cacheSize;
    if (overhead == 0) {
    cacheSize = (100 * btreeSize) / 90;
    } else {
    cacheSize = btreeSize + overhead;
         return cacheSize;
    private String line(long btreeSize,
                   long cacheSize,
                   String comment) {
    StringBuffer buf = new StringBuffer(100);
    column(buf, INT_FORMAT.format(cacheSize));
    column(buf, INT_FORMAT.format(btreeSize));
    column(buf, comment);
    return buf.toString();
    private void column(StringBuffer buf, String str) {
    int start = buf.length();
    while (buf.length() - start + str.length() < COLUMN_WIDTH) {
    buf.append(' ');
    buf.append(str);
    for (int i = 0; i < COLUMN_SEPARATOR; i += 1) {
    buf.append(' ');
    private static void measure(PrintStream out,
    File dir,
    long records,
    int keySize,
    int dataSize,
    int nodeMax,
    boolean randomKeys)
    throws DatabaseException {
    String[] fileNames = dir.list();
    if (fileNames != null && fileNames.length > 0) {
    usage("Directory is not empty: " + dir);
    Environment env = openEnvironment(dir, true);
    Database db = openDatabase(env, nodeMax, true);
    try {
    out.println("\nMeasuring with cache size: " +
    INT_FORMAT.format(env.getConfig().getCacheSize()));
    insertRecords(out, env, db, records, keySize, dataSize, randomKeys);
    printStats(out, env,
    "Stats for internal and leaf nodes (after insert)");
    db.close();
    env.close();
    env = openEnvironment(dir, false);
    db = openDatabase(env, nodeMax, false);
    out.println("\nPreloading with cache size: " +
    INT_FORMAT.format(env.getConfig().getCacheSize()));
    preloadRecords(out, db);
    printStats(out, env,
    "Stats for internal nodes only (after preload)");
    } finally {
    try {
    db.close();
    env.close();
    } catch (Exception e) {
    out.println("During close: " + e);
    private static Environment openEnvironment(File dir, boolean allowCreate)
    throws DatabaseException {
    EnvironmentConfig envConfig = new EnvironmentConfig();
    envConfig.setAllowCreate(allowCreate);
    envConfig.setCachePercent(90);
    return new Environment(dir, envConfig);
    private static Database openDatabase(Environment env, int nodeMax,
    boolean allowCreate)
    throws DatabaseException {
    DatabaseConfig dbConfig = new DatabaseConfig();
    dbConfig.setAllowCreate(allowCreate);
    dbConfig.setNodeMaxEntries(nodeMax);
    return env.openDatabase(null, "foo", dbConfig);
    private static void insertRecords(PrintStream out,
    Environment env,
    Database db,
    long records,
    int keySize,
    int dataSize,
    boolean randomKeys)
    throws DatabaseException {
    DatabaseEntry key = new DatabaseEntry();
    DatabaseEntry data = new DatabaseEntry(new byte[dataSize]);
    BigInteger bigInt = BigInteger.ZERO;
    Random rnd = new Random(123);
    for (int i = 0; i < records; i += 1) {
    if (randomKeys) {
    byte[] a = new byte[keySize];
    rnd.nextBytes(a);
    key.setData(a);
    } else {
    bigInt = bigInt.add(BigInteger.ONE);
    byte[] a = bigInt.toByteArray();
    if (a.length < keySize) {
    byte[] a2 = new byte[keySize];
    System.arraycopy(a, 0, a2, a2.length - a.length, a.length);
    a = a2;
    } else if (a.length > keySize) {
    out.println("*** Key doesn't fit value=" + bigInt +
    " byte length=" + a.length);
    return;
    key.setData(a);
    OperationStatus status = db.putNoOverwrite(null, key, data);
    if (status == OperationStatus.KEYEXIST && randomKeys) {
    i -= 1;
    out.println("Random key already exists -- retrying");
    continue;
    if (status != OperationStatus.SUCCESS) {
    out.println("*** " + status);
    return;
    if (i % 10000 == 0) {
    EnvironmentStats stats = env.getStats(null);
    if (stats.getNNodesScanned() > 0) {
    out.println("*** Ran out of cache memory at record " + i +
    " -- try increasing the Java heap size ***");
    return;
    out.print(".");
    out.flush();
    private static void preloadRecords(final PrintStream out,
    final Database db)
    throws DatabaseException {
    Thread thread = new Thread() {
    public void run() {
    while (true) {
    try {
    out.print(".");
    out.flush();
    Thread.sleep(5 * 1000);
    } catch (InterruptedException e) {
    break;
    thread.start();
    db.preload(0);
    thread.interrupt();
    try {
    thread.join();
    } catch (InterruptedException e) {
    e.printStackTrace(out);
    private static void printStats(PrintStream out,
    Environment env,
    String msg)
    throws DatabaseException {
    out.println();
    out.println(msg + ':');
    EnvironmentStats stats = env.getStats(null);
    out.println("CacheSize=" +
    INT_FORMAT.format(stats.getCacheTotalBytes()) +
    " BtreeSize=" +
    INT_FORMAT.format(stats.getCacheDataBytes()));
    if (stats.getNNodesScanned() > 0) {
    out.println("*** All records did not fit in the cache ***");

  • Use configuration management for multi site application

    Hi,
    My client develop an application multi site with designer 6i. We want to use the configuration management .
    The application will be deploy in 10 sites, but not necessary with the same version of the application.
    You want to control that with the configuration management of designer 6i.
    Someone has some experience with that ??
    Can i have some reference or detail experience ??
    Thanks a lot
    chris

    I asked this sort of question for creating a live and a test release of an application. The answer I got was to create a configuration of based on my application and then to create an applications based on the the versions of the configuration.
    Then, I could check the configuration against the main workarea to tell me what was out of date.
    I could also use the configuration wizard to create a new version (of the configuration) selecting the versions of the modules I wanted (ie: newer ones). Then I created a new version of the release application using the new configuration.
    Finally, in the command tool I can select the release work area which will extract correct module versions (I have the .fmbs) and I can compile a release.
    I guess your solution here is to have a main workarea with all the source, then a configuration of that and then one release application for every site. Each release application could use a different version of the configuration - depending on how up to date they are.
    HTH
    Steve

  • JMX for high level AMPs?

    I have to implement a high level API for a special device and I wonder if JMX is the right choice.
    Is it possible to write a high level object oriented API with JMX or is it just a modern substitute of SNMP?
    For example if I write an API for my mp3 radio player can I say <record the song "Walk Like an Egyptian" from "The
    Bangles", when ever it comes> and later copy all received songs to the client or can I just say <start recording now> and <stop recording now>?
    Regard, I want to implement an API so other complex applications can control my device comfortable, not a plug-in
    into an existing management application that controls other stand-alone devices too.
    Any comments? What's your experience?
    Marvin Haktar

    Yes, JMX is suitable for creating a high level API that offers more flexibility in management than a pure SNMP based approach. One of the goals of the JMX specification is to address the needs of application management, whereas SNMP has traditionally focused on network/device management.
    Juha Lindfors
    Author of "JMX: Managing J2EE with Java Management Extensions"
    http://www.amazon.com/exec/obidos/ASIN/0672322889/104-6670791-7933546
    Senior Developer, JBoss Group LLC

  • RFC: Proposing a high level iteration facility based on Collections

    I am requesting for comments for an experimental package I developed providing a high level facility for iteration on Java 2 Collections.
    You can browse the javadoc at http://www.cacs.louisiana.edu/~cxg9789/javautils/ and the code is available for download from http://www.cacs.louisiana.edu/~cxg9789.
    Basically, the package provides an interface Task that has a single method job() which is called for every element in a given collection. There are some static methods for using this kind of scheme and iterating over collections. An example would be: Iteration.loop(collection, new Task() {
              public void job(Object o) {
                // do something on o here
            });Now you may wonder what is the use of going into this much trouble when I can just get an iterator and do the same thing? Well, creating a class that represents the whole iteration opens a number of new possibilities. You can now have methods and variables exclusive for the specific iteration and reuse it. You can even subclass it for variants. This proved very useful in my application especially when I developed the StringTask class that is available in the same package.
    Nevertheless, you can see it for yourself that we've got rid of the iterator and the condition checking that appears in conventional loop constructs. For details you can look at the Iteration at http://www.cacs.louisiana.edu/~cxg9789/javautils/edu/ull/cgunay/utils/Iteration.html and StringTask at http://www.cacs.louisiana.edu/~cxg9789/javautils/edu/ull/cgunay/utils/StringTask.html
    I was wondering if you Java developers would find such a scheme useful. Thanks for your interest..

    Heh... now I need to remember back...
    No I don't, the internet comes to the rescue :-) I
    was wrong, apply is the simple "function apply"
    function, the list function of interest was (is)
    called map.
    http://www.cse.unsw.edu.au/~paull/cs1011/hof.html
    This was very helpful. Now I know what you're saying. Actually this may very well be the hidden influence that lead to this system. The map operation also exists in Lisp and Scheme. I remember really liking it when I first learned about it.
    My approach isn't exactly the same as neither of map, fold or filter. But I think I can create subclasses of Task which act the same way with these. I will try to do this in the near future.
    Just as a comment on the design, I would have
    maneuvered the list of getSomeResult() into an object
    that knows how to render itself as a String. That may
    well be using your Iteration feature over the internal
    list, or other feature as the developer sees fit.This point is well taken. Actually my program uses this kind of approach in many places, however I wanted to give a less confusing example here.
    Your iteration is a perfectly valid pattern to iterate
    over a collection, and one that could be
    applied in many places in my code. I'm unsure I
    will migrate to use it, because it tends
    towards a large number of small objects to perform its
    function... which sometimes can be a simplification,
    but in this case can obscure multi-threading issues...
    spreading a loop over a collection across multiple
    classes makes it less obvious what is happening to the
    contents, or what synchronization is required, what
    locks have been acquired, or what concurrent
    modifications are possible.On the other hand, it might be more secure to have operations on collections in a place as an Iteration class to keep them together. Maybe you already mentioned it in your message. I can understand your concern in using the system, though.
    To keep this information in one place, you could use
    an anonymous inner class, but then you have lost the
    reusability and succinctness of the iteration, which
    are two of its largest benefits (Being a high-level
    function using centralised, tested code being the
    third, and probably the largest)I started using small inner classes very extensively. Maybe this can alleviate the problem, since they're not anonymous and can be reused. However, there is still a problem using (subclassing) them from outside of the class. I found a way to do this, too. It only works in special situations, though.
    Assume you have an inner class:
    public class Outer {
      class Inner { ... }
    }You can extend this inner class if you have another class extending the Outer:
    class NewOuter extends Outer {
      class Inner extends Outer.Inner { ... }
    Thinking about it, your iteration is at a higher level
    than foreach... and would benefit from using it
    if were ever supported by the JVM. They are slightly
    orthogonal approaches to looping abstraction, foreach
    being syntactic and your pattern being heuristic.We're in tune here, I'd be interested to use the foreach operator and the Iterable interface as primitives in my system if they will ever be provided in Java. Currently, they are not offering me anything extra, since the Collection interface provides me with what I need.

  • Logging takes in the field for multi-camera set-up with OL

    Is there any way to designate separate cameras or link shots (to be labeled as CamA or CamB) to advance takes and make notes simultaneously?
    OL doesn't really seem set up to use with documentary style shooting with multiple cameras, but maybe there is some way around this?
    I just want to be able to add takes in OL to multiple cameras without a lot of typing between each take...and add notes that are applicable to multiple cameras within one shot and one take.
    Any ideas?

    OnLocation CS5 has an entirely new feature set known as the File-Based Workflow that may be just what you are looking for. The basic steps are as follows:
    PRE-PRODUCTION (IDEALLY)
    1) Create a placeholder for one camera angle of a given scene/shot. (Consider using Adobe Story to prepare your script. Then you can hand the script off to OL and have it automatically broken down into scene-level placeholders. You will then still need to break those placeholders down to the shot level)
    2) Use the Camera Name property to designate the camera for that shot. If you use the "auto-matching" process, which you will likely want to do if you're entering notes per take, then this data point will be used to automatically mate a set of clips from, say Camera A to the correct set of placeholders.
    3) Fill in any other metadata that is common to other camera angles.
    4) Duplicate the placeholder for other camera angles & shots of the scene. To do this, you can use either the Duplicate Placeholder command or, to create multiple duplcates, the Break Out Scene command, both of which are available in the context menu when you right-click a row in the shot list. Note that both commands work with multiple rows selected.
    5) Customize each duplicate as appropriate.
    6) Repeat for your other shots.
    DURING THE SHOOT
    1) [Strongly recommended] For multi-cam shoots, synchronize the date/time on all the cameras. Ideally, synch them all to the date/time on the computer running OnLocation. This greatly simplifies the auto-matching process by saving you the hassle of repeatedly changing the camera date/time in OnLocation.
    2) Select placeholder(s) or clip(s) for the next shot.
    3) At any time between starting and stopping recording of the take, click the Timestamp button (upper left corner of the Project/Shot List panel). This step applies a timestamp to the placeholder, which makes it possible for the auto-matching mechanism to determine which clip belongs with which placeholder.
    4) Optional: Add temporal comment markers to timestamped placeholders, which will be aligned to the clip when you auto-match. (Note that PPRO does not recognize comment markers added in OnLocation.)
    5) Repeat steps 1-3 for subsequent shots
    AFTER TRANFERRING CLIPS TO THE COMPUTER
    1) In the Media Browser panel, navigate to the folder where you copied the content.
    2) Select the clips.
    3) Click the Auto-Match button at the top of the panel. This opens the Auto-Match dialog.
    4) if this is a multi-camera shoot, check the appropriate box and select the name of the camera that this content came from. The list for the Camera Name setting is populated from what you entered in the Camera Name field for all timestamped placeholders. [Be alert for unintended variants. For example, if you entered "Camera A" for some shots and "Cam A" for others, you'll see both versions in the list. Before proceeding, you should standardize the entries.]
    5) Set the Camera Date/Time. If you synched the cameras' date & time to the computer's, then this step is not necessary (unless you previously set a Camera Date/Time offset in OL, in which case you will need to reset the Date/Time to match the computer's.)
    6) Click OK to proceed with auto-matching. OnLocation will proceed to find the placeholder whose timestamp fits within the Start and Stop Recording times of one of the clips and, if relevant, whose Camera Name matches your selection. All metadata from that placeholder will be merged into the clip.
    [Please note that all of the foregoing is from memory--I don't have OL CS5 installed on this home computer--so I may have gotten the names of some of the controls wrong. I'm pretty confident that the basic workflow is sound, however.]
    Here's the help page for this feature. I'm afraid it's does not really cover the particulars for a multi-camera workflow. http://help.adobe.com/en_US/onlocation/cs/using/WS89e4fde9608114f41e5eb2de124b454ea2b-8000 .html
    As for entering the same string in the Comment field (or any other metadata property) for multiple placeholders or clips simultaneously, simply select whichever rows in the Shot List that you want to edit, then in the Metadata panel edit whichever properties you choose to. Your changes will be applied to all selected rows (assuming they're editable--i.e., not read-only or offline, both of which apply only to clips, not to placeholders)

  • Modify High Level User Interface

    Respected Sir
    i am using MIDP2.0 for my application. i want to modify some High
    Level User Interface in my application. i mean that for TextBox
    High Level User Interface i want to change(Modify) TextBox
    predefined size , color,etc.... Is it Possible. if is then plz give
    me some Clue.
    thankx in advanse
    Souvik

    use setPreferredSize
    and setLayout
    functions
    though for color there is nothing

  • Multi-Tier

    Dear OTN Members;
    Can you explain me what the multi-tier application concept is?
    I need a general information. And Which oracle tools can be
    used for this aim?
    Thanks...
    Fatih Sami KARAKAS
    null

    user3714906 wrote:
    Hi Hussein/Helios
    We are using 12.0.6 with 10gR2 RDBMS
    This is Single node installation on server proddb
    Now I want to move the application tier to another server prodapps
    Please suggest me the doc id Follow the steps in (Cloning Oracle Applications Release 12 with Rapid Clone [ID 406982.1]) under "Section 2: Cloning Tasks" for the application tier node only.
    - Run preclone on the source node
    - Copy/Move the files to the target node
    - Run postclone
    Once you are done, clean FND_NODES table as per (How to Clean Nonexistent Nodes or IP Addresses From FND_NODES [ID 260887.1]).
    Thanks,
    Hussein

  • Summing up the price of the sub items and put it in the Higher level item

    Dear Experts,
            I have got one requirement from my customer.
    The requirement is while creating the Sales order (in VA01), in the line item the customer will enter the Material, Quantity and Higher level item for the line item.In Condition Tab page price and Condition will be entered.
    My requirement is at the time of saving the sales order the price of the lower level items has to be summed up and this price has to be put in condition tab page of the higher level item.
    This is my requirement.Is it possible?if yes please explian me how to do this.
    If anybody not able to understand my question please reply back to me.
    Thanks & Regards,
    Ashok.

    Hi
    Here u need to find user exit that suits ur requirement like user exit that will trigger while saving that sale order and in that user exit u are able to access that tables where all the lower level item prices stored and condition table where price stored. Then u can do sum and update that sum into condition price table. So search for user exit that suits ur requirement.
    Regards,
    KP.

Maybe you are looking for